RFCs are a way for Atlassian to share what we’re working on with our valued developer community.
It’s a document for building shared understanding of a topic. It expresses a technical solution, but can also communicate how it should be built or even document standards. The most important aspect of an RFC is that a written specification facilitates feedback and drives consensus. It is not a tool for approving or committing to ideas, but more so a collaborative practice to shape an idea and to find serious flaws early.
Please respect our community guidelines: keep it welcoming and safe by commenting on the idea not the people (especially the author); keep it tidy by keeping on topic; empower the community by keeping comments constructive. Thanks!
Project Summary
This RFC proposes introducing a pre-uninstall module for Forge apps to enable developers to perform necessary actions, such as data cleanup, before an app is uninstalled.
Publish: 13 November 2025
Discuss: 20 November 2025
Resolve: 28 November 2025
Problem
Currently, when an app is uninstalled in Connect, Atlassian sends an HTTP POST request to the app’s callback URL with an uninstalled event. This allows developers to handle use cases such as cleaning up data (e.g. removing entity properties) or taking actions to re-engage customers after uninstallation.
Forge apps migrating from Connect lack a similar uninstall callback mechanism. Once a Forge app is uninstalled, it cannot be discovered anymore and hence there is no mechanism to notify developers or trigger cleanup actions. This gap prevents developers from performing essential pre- or post-uninstallation tasks and impacts their ability to manage this part of an app’s lifecycle effectively.
Proposed Solution
We are proposing a preUninstall module developers can add to their Forge apps. It will allow for cleanup operations such as deleting Forge storage or remove secrets before an app is uninstalled.
This will work for uninstalls via CLI or Connected Apps.
An example of how a preUninstall module might look like in your manifest.yml:
# manifest.yml
modules:
preUninstall:
- key: cleanup-before-uninstall
function: cleanupHandler
functions:
- key: cleanupHandler
handler: index.cleanup
The functions section defines the handler that contains your cleanup logic such as deleting Forge Storage or similar.
This structure is consistent with how other Forge triggers (like scheduled or event triggers) are defined in the manifest and provides developers with an opportunity to perform necessary actions before the app is fully uninstalled.
How it works:
-
When an admin initiates an uninstall action via the UI or CLI, developers will be notified by a pre-uninstall trigger.
-
The cleanup processes can start.
-
The uninstallation process will pause for approximately 60secs, to wait for any invocation to complete. Cleanup operations should conclude in that time interval, as once the uninstallation completes, product API calls may not work.
-
The uninstallation process will proceed regardless of any failure in the function invocation. Apps should use logging or metrics for visibility on cleanup results or failures.
There won’t be any significant change expected from a user experience perspective apart from a potentially slightly longer uninstall process when cleanup actions are performed.
We are aiming to make the module available by the end of CY25.
Asks
We are keen to hear from you:
-
Would this pre-uninstall module align with your expectation regarding an app uninstallation event handling in Forge?
-
Are there additional requirements we should consider?
-
Are there any concerns about timing, reliability, or security with this approach?