Feedback after building a Forge app for Codegeist

Easy Agile spent two weeks putting together a Jira Forge app for Codegeist and we would like to share some of our challenges and feedback.

We like the “hosted for you” approach of Forge to potentially help us spin up new apps quicker in the future and the potential to integrate into many different aspects of Jira with modules.

We used the Custom UI for this app, making use of exclusively the jira:projectPage module.

We are very much still learning all of what forge can do so some of these challenges may already have solutions which we would be grateful for being pointed in the right direction.

Here are some challenges we had along the way:

/graphql endpoints appeared to be slow

We experienced slow requests for functions like invoke and requestJira on the frontend of our Custom UI app. Both of these seemed to trigger a /graphql request.

On that note, using rest endpoints with requestJira which then triggers a /graphql network request seemed confusing as developers.

Unable to use /rest/agile/1.0 endpoints

We had ideas that required sprint data but were unable to access sprint data due to the endpoints not being available from Forge.

No concept of a current board

Within Connect apps we are able to get the current board and use it to change the state of the app. We couldn’t seem to find a way to do the same thing within Forge. To build our app we instead used a project page.
Two of our apps on the marketplace are reliant on boardId to function, so if we were to port them to forge in the future this may be a blocker for us.

No post-install hook

We wanted to set up our forge app with some initial data (which we stored with the storage API). We saw that there we scheduled triggers but we didn’t find out how to trigger an event once on install.

iframe height changes

While building the forge app we experience a problem documented here. Where our app suddenly had no height, we suspect something changed to how the iframe height was calculated. We would like to be able to create apps (project page) that take up the full height of the available space e.g height: calc(100vh - ${header}) .
We were also confused why this change appeared because we had not updated any of the forge npm packages and did not see changes listed within the changelog.

Want the ability to show toast messages

We had ideas around showing messages to users once they complete certain criteria which we track through webhook issue events. We would like to be able to show toast messages to users regardless of where they are within Jira.

10 requests per second for storage is too limited

Our app accesses the storage API after responding to a webhook for issue events. On large Jira instances where many users are making lots of changes to issues (or even a single user doing a bulk update, which we were able to trigger and see problems) we suspect that we are going to run into problems with using the storage API.

Web trigger responses

When using Web-Triggers, we always got a 424 status code and were unable to return any content to the caller. To authenticate with Slack we had to open a new browser tab and direct the user to Slack with a redirect back to the web-trigger URL to complete the authorization process. We were able to get the authentication working, but the response from the web trigger to the browser was always a ‘424 Failed Dependency’ and no content was returned. This meant that the new tab ended in a blank view. We tried wrapping the call in a try/catch as per the documentation but this also did not work.

Typescript Context Type missing properties

When trying to extract the extension from the context, we noticed that the extension type was not typed on the FullContext type. In the forge bridge out int the types.d.ts, the FullContext is typed as export declare type FullContext = {};

For development can’t set permissions of non-HTTPS resources

Can’t set permissions for non-HTTPS localhost servers without using * (as far as I’ve seen, not sure if *localhost works.)
To get around this we used ngrok to forward local resources during development.

12 Likes

Thank you so much for providing this feedback Sam.

show toast messages
Can you please clarify what you mean by toast messages? Is it the flag equivalent in atlassian design guidelines? https://atlassian.design/components/flag/examples

2 Likes

In case, the related issues is probably this one:

2 Likes

Yes something like that would be great. We thought the ability to notify the user while not viewing any particular forge module/page would be useful. For example, when viewing their backlog.

1 Like

Hey @samdawson

As Imran said, cheers for the awesome feedback. I’ve gone ahead and created Jira tickets for each of these asks that you can track in the public Forge Jira Project. I encourage any other users having these issues to watch, comment, and vote on these FRGE tickets - it helps us prioritise work in the future.

Slow /graphql endpoints: [FRGE-483] Slow /graphql endpoints - Ecosystem Jira

Unable to use /rest/agile/1.0 endpoints: [FRGE-484] Unable to use /rest/agile/1.0 endpoints - Ecosystem Jira

No concept of a current board in Forge: [FRGE-485] No concept of a current board in Forge - Ecosystem Jira

No post-install hook: [FRGE-486] No post-install hook - Ecosystem Jira

Want the ability to show toast messages: [FRGE-487] Want the ability to show toast messages - Ecosystem Jira

10 requests per second for storage is too limited: [FRGE-488] 10 requests per second for storage is too limited - Ecosystem Jira

424 status code on web trigger responses: [FRGE-489] 424 status code on web trigger responses - Ecosystem Jira

Typescript Context Type missing properties: [FRGE-490] Typescript Context Type missing properties - Ecosystem Jira

4 Likes

Thanks @JordanKoukides