Working with Atlassian: How did we build our Dynamic Forms Cloud version with Forge?

A few months ago, we decided to make our Dynamic Forms app available for Cloud hosting. We wanted to design the maximally integrated product right from the start. This is why we choose to develop it using Atlassian’s app development platform: Forge. Our team used Forge before but there was a new feature coming that we were eager to try – UI modifications. We were so curious about it that Atlassian let us create our extension whilst the new module was still under development. It was a win-win situation. Whilst we could count on Atlassian support, they got ongoing feedback from a user’s perspective. How did it all turn out? We’d like to share it with you in this article. 

What is Forge? 

Forge is Atlassian’s application development platform designed to support Marketplace partners. It enables the creation of Atlassian Cloud products that are customized, extended, and integrated right from the start. Building cloud apps can be a complex process. Thanks to Forge, developers can rely on already hosted infrastructure, storage, and function-as-a-service (FaaS) to build new plugins for themselves or for clients on Atlassian Marketplace. Forge provides developers with an easy-to-use command-line interface, documentation, app samples, and a low-friction onboarding process. For now, the platform is available for Jira, Jira Service Management, and Confluence but will also be developed in the future for other Atlassian products.

atlassian forge scheme

Why did we choose to build Dynamic Forms Cloud in Forge?

Forge’s Jira UI modifications module

The main reason why we decided to use Forge to develop Dynamic Forms Cloud was its UI modifications module. Our extension became the first app built with this solution. It all started when we got the information that Atlassian was working on the new API. This API makes it possible to manipulate the fields from the standard Create screen view. This was not achievable in Connect, the solution we previously used whilst developing extensions for Jira Cloud. The feature was so important when it came to Dynamic Forms development because it allowed us to finally operate on Jira native fields.

The Forge platform and UI modifications module gave us a great opportunity to create Dynamic Forms for Cloud hosting. It wasn’t possible with the other Atlassian framework, Connect, or at least not to the extent we wanted to. Thanks to the UI Modifications alone, we were able to integrate native Jira fields with the Dynamic Forms engine on the Create Issue screen. We believe that the Forge platform is worth investing in, especially considering the number of functionalities that are systematically updated.

Rafał Janiczak

Fullstack Software Developer | Team Leader at Deviniti

Thanks to this, Dynamic Forms for Cloud users can just add Jira fields to the scheme during the standard Jira configuration. Then, they simply move on to the Dynamic Forms app and set up the conditions of appearance. It can be, for example, showing the Type of transport fields only if the Transport checkbox is active. 

The constant development of the solution

The Atlassian Marketplace is dynamic and full of Jira and Jira Service Management extensions. The competition is tight and we know we can’t stay behind with our app in any way. This is why we made sure that the solution we choose to build Dynamic Forms Cloud with is modern and always up to date. As Forge is a brand new Atlassian technology, it is and will be constantly developed. We can tell by looking at the number of the latest updates and the frequency of releasing new features. In order to keep up, we even created a dedicated Slack channel that informs us about all of Forge’s updates. We’ve tested this solution for staying informed a few times before and it always brings us the best results. This time it also worked out perfectly. 

What’s more, in March 2022 Atlassian announced that it’s possible to adapt apps made in Forge to the Customer Portal. We see it as a chance to develop our Dynamic Forms also in this context and extend its outreach. Last but not least, Atlassian clearly considers Forge as an ultimate solution for creating Marketplace apps. We surely wouldn’t like to face the problem of technical debt. 

Working with the Atlassian company – what was it like? 

How did Deviniti start working with Atlassian? 

We started consulting Atlassian even before Forge went public. We knew that Connect wouldn’t be enough this time around. Requirements for building Dynamic Forms Cloud were different than for its Server/Data Center version. Forge’s UI modifications API with its functionality of Jira native fields customization was our only option to develop a fully functional Cloud solution. Atlassian let us begin our work on Dynamic Forms Cloud even before the development platform was available for other users. We feel that it was a great chance and a proof of trust for our team from Atlassian which we highly appreciate. Additionally, Atlassian was able to manage the Forge roadmap considering our necessities. For instance, they delivered us the onChange method which wasn’t planned before but was crucial for the release of our application.

dynamic forms in forge
Jira native fields customization was our only option to develop a fully functional Dynamic Forms for Cloud solution

How did collaboration with Atlassian influence Deviniti’s team?

The collaboration strongly influenced our workflow, too. We had to adjust our work progress to the current status of UI modifications implementation. The Forge’s features were also under construction. This is why we often needed to change the already implemented code in our app. On the other hand, Deviniti’s team provided Atlassian with active feedback regarding the UI modifications module. During our regular meetings with Atlassian, we informed their development team about our doubts and needs. Our team was also able to provide some UX-related insights. Thanks to this, we could contribute to making the new technology useful for all future users.  

The workflow during the development of Dynamic Forms Cloud

Our developers had a common Slack channel with Atlassian’s UI modifications team where we could ask our questions and get the answers right away. The possibility of working directly with Atlassian on a regular basis was a great opportunity. Our collaboration started with analyzing mockups of Dynamic Forms for Cloud together. Later during development, our teams also talked about changes and modifications that came up. Despite the fact that UI modifications was a completely new module for us, we consider the whole development process in Forge quite simple. We didn’t need to take care of hosting-related activities as it was all on Atlassian’s side. Instead, our team could focus on the deployment of the app to the Forge environment, including development, staging, and production. 

One of the strongest points of Forge is that the application hosting is managed by the platform itself. Thanks to this, developers don’t have to design the entire infrastructure in the production process. All data in the Forge’s Storage is safely stored and secured on Atlassian’s servers. We don’t have to worry about GDPR compliance or about authenticating requests in Jira.

Rafał Janiczak

Fullstack Software Developer | Team Leader at Deviniti

What does our development team think about Forge?

We find the whole setup of the new application in Forge surprisingly easy. Creating new environments and application deployment on the platform is intuitive. What’s more, our team appreciated the developer console when they could monitor the progress and keep track of what was going on (for example, if there are any errors). We haven’t noticed any significant technical problems. When it comes to improvement possibilities, we see the bigger potential in Storage API. Forge complex queries are already on the roadmap. We believe that in the near future the functionality will support its users in developing more efficient solutions. 

The challenges we’ve met during Dynamic Forms Cloud development in Forge

  • the storage instead of a relational database – this wasn’t an insurmountable obstacle but is something that should be minded during the development. In this case, each complex data model needs to be well-analyzed to make sure it will match the storage.
  • the lack of SQL – Forge Storage API is a really minimalistic alternative for SQL. Working on complicated data was more difficult and sometimes required costly compromises. For example, it was necessary to download the whole data set each time a user needed anything and search it manually because of the very limited searching options. In order to preview or edit data excluded from the app, our team needed to write a dedicated library with GUI. SQL would have multiple already made solutions for this purpose to choose from. 
  • recognition of the API’s complex functionalities – our developers noticed that Forge’s API documentation was really well-written and helpful. Despite this fact, it was worth a while to dig a bit deeper into the API’s specifications. It included learning everything about permissions, issue type schemes, screen schemes, issue type screen schemes, field configurations, and field configuration schemes. 
  • the limitations of Forge – we can’t be sure if storage limits will be enough for the production features of our app in the future. There’s also a possibility that Atlassian will have to change its storage current limits. It would result in the necessity of data division and compression for us. For this reason, we needed to implement our own security mechanisms to protect our product in case we exceeded the limits. These blocks make Forge a platform dedicated to creating small apps rather than complex solutions, at least for now.

Summary – was trying Forge worth it?

For us, the final answer is: yes. Thanks to the Forge platform, we were able to make our top product available on Jira Cloud which is the crucial hosting for Atlassian. Our Dynamic Forms app allows to display only the important fields on the issue Create screen, based on the other fields’ values. We are confident that this feature fills the blank in Jira functionalities. Thanks to Dynamic Forms, users always get context-related data. The plugin simplifies error-free issue creation and supports establishing a better information flow on the project. Building the app so quickly with all its benefits just wouldn’t be possible without Forge. 

Try Dynamic Forms for Jira Cloud!

Are you curious about how one of our most popular apps works on Cloud? Try it out for free in your company. Configure, test, and discover its possibilities.

Katarzyna Kornaga

Katarzyna is a Content Specialist, responsible for writing on the Deviniti blog. As an SEO enthusiast, most of all she values helpful, unique content where users can find answers to their questions. When not writing, you can find her at the theatre, at home with a good non-fiction book, or passing on city streets on her bike.

More from this author