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 project is a proposal to extend Jira’s https://community.atlassian.com/forums/Jira-Cloud-Admins-articles/Coming-soon-Jira-seasonal-releases/ba-p/3177320 to Forge apps, giving Cloud admins predictability over when user-visible changes in Forge apps reach their sites. Admins will be able to manage delivery to lower environments (e.g., Preview/sandboxes) but cannot defer production updates beyond the seasonal release window. Developers would gate new user-visible features behind feature flags, and those features would roll out on a predictable seasonal cadence (Spring, Summer, Autumn), flowing through Continuous → Preview → Bundled tracks with built-in testing windows for Premium and Enterprise customers.
This RFC builds on the direction established by https://community.developer.atlassian.com/t/rfc-106-future-of-forge-versioning-permissions/94323, which decouples app code versions from permission consent. With permissions decoupled and code updates flowing automatically, release tracks become the natural next layer of admin control: governing feature visibility rather than code deployment.
-
Publish: 17 April 2026
-
Discuss: 8 May 2026
-
Resolve: 22 May 2026
Problem
RFC-106 moves Forge app code updates to automatic rollout for all customers. This improves delivery efficiency, but there remains an admin-facing gap: limited control and predictability over when user-visible changes appear on their sites.
Jira Cloud addressed this same problem with:
Today, Forge apps are not part of this model and large/complex Enterprise customers struggle to coordinate their testing workflows across different kinds of changes.
The Future of Forge Release Tracks
We envision a model where Forge apps participate naturally in the same seasonal rhythm as Atlassian’s first-party products. Here’s what it would look like:
-
Seasonal cadence, aligned with Jira: Three release moments per year (Spring, Summer, Autumn). User-visible features concentrate in these windows, giving admins a single calendar to plan around.
-
Feature visibility, not deployment control: Like Jira’s release tracks, this controls when features appear to users, not when code is deployed. Developers continue to deploy continuously and feature flags govern visibility.
-
Admin control via familiar UI: The existing Release Tracks page in Admin Hub extends to include Forge apps. Admins choose Continuous, Preview, or Bundled per app (or set a site-wide default).
-
Developer opt-in (initially): Participation is opt-in. Apps that don’t participate continue to roll out changes immediately, as they do today.
Taking an iterative approach
We recognise that this is a significant investment on top of the versioning changes already underway with Rolling Releases. We will adopt an iterative approach:
-
First: Complete the https://community.developer.atlassian.com/t/rfc-106-future-of-forge-versioning-permissions/94323 work (decouple versions from permissions, runtime permission checks, rolling code updates).
-
Then: Layer release track support on top, starting with an opt-in model for developers and Admin Hub integration for Premium and Enterprise customers.
-
Later: Based on feedback, drive broader adoption (e.g. making release tracks the default for new Forge apps).
Proposed Solution
Seasonal Release Cadence
Forge apps that opt in would follow the same three-season cadence as Jira:
| Season | Continuous Track | Preview Track (Sandbox) | Bundled Track (Production) |
|---|---|---|---|
| Spring (aligned to TEAM) | Late April | Early May | Early June |
| Summer | Late July | Early August | Early September |
| Autumn (aligned to TEAM Europe) | October | November | December |
Between seasonal releases, only bug fixes, security patches, and non-user-visible changes would roll out. This mirrors the Jira model where monthly bundles still exist, but significant user-visible changes concentrate in the three seasonal windows.
Developer Experience
Opting In
A Forge app developer opts in via the Developer Console by enabling release tracks for feature flags for their Jira app.
Developer Console → Feature flags → Release tracks (illustrative)
{
"releaseTracks": {
"enabled": true,
"defaultTargetSeason": "summer-26",
"userVisibleRequiresTargetSeason": true
}
}
Developing a Feature
-
Build the feature and deploy it behind a Forge feature flag (using the existing @forge/feature-flags API).
-
Tag the flag with a changeCategory: a metadata field that captures the level/type of end‑user impact.
Note: Category names and examples are illustrative and not final. We’re seeking feedback on what works best.
| Category | Impact | Examples | Suggested handling |
|---|---|---|---|
breaking |
Affects all customers very hard/costly to roll back | Migrate major app UI to Custom UI | Must target a seasonal release |
major-workflow |
Impacts most customers, reversible but high cost/risk | New scopes model app-wide settings overhaul | Must target a seasonal release |
conceptual |
Affects some customers, easier to reverse | New issue panel or admin page | Can target seasonal or continuous depending on risk |
low-impact |
Minor, low-risk change | Minor UI polish | Continuous |
internal |
Tiny surface area, no customer-visible impact | Refactor function | Continuous |
Feature flag usage (non-final, illustrative only)
import { checkFeatureFlag } from '@forge/feature-flags';
const showNewDashboard = await checkFeatureFlag('new-dashboard', {
changeCategory: 'low-impact',
targetSeason: 'summer-26',
});
if (showNewDashboard) {
// Render new dashboard
} else {
// Render existing dashboard
}
Release-day flag flipping
No manual flip will be required on release day. Developers set the flag metadata once (changeCategory + targetSeason), and the platform automatically makes the flag eligible and visible per the site’s track schedule (Continuous, Preview, Bundled). This keeps Forge aligned with Atlassian’s internal release track orchestration. We expect an emergency override/kill‑switch to exist, and the final Developer Console UX is still TBD.
Rollout Sequence (non-final, illustrative only)
Developer deploys code (all sites, feature hidden)
│
▼
Seasonal release window opens
│
├──► Continuous track sites: feature becomes visible immediately
│
├──► Preview track sandboxes: feature becomes visible (~30 days before Bundled)
│
└──► Bundled track production: feature becomes visible in the next monthly bundle
How It Works: Admin Experience
The existing Release Tracks page in Admin Hub (admin.atlassian.com) would be extended to include a Forge apps section. Admins would see:
-
A list of installed Forge apps that support release tracks
-
The ability to set a track preference per app (Continuous, Preview, Bundled) or use a site-wide default
-
An “Upcoming app changes” view showing what’s coming in the next seasonal release for each app
| Admin Action | Result |
|---|---|
| Set app to Continuous | New features appear as soon as the seasonal release window opens |
| Set app to Preview (sandbox) | New features appear in sandbox ~30 days before Bundled production rollout |
| Set app to Bundled (production) | New features appear in the seasonal Bundled release |
Interaction with Rolling Releases Permission Changes
Rolling Releases decouples permissions from code versions, meaning code updates roll out automatically while permission changes wait for admin consent. Release tracks add a second layer of control on top:
| Change Type | Governed by Rolling Releases | Governed by Release Tracks | Admin Experience |
|---|---|---|---|
| Bug fix / security patch (no new permissions, no UX change) | Rolls out automatically | Not gated - ships immediately | Transparent, no action needed |
| New feature (no new permissions) | Rolls out automatically | Gated by release track | Feature appears per track schedule |
| New feature + new permissions | Rolls out automatically but permissions require consent | Gated by release track | Feature activates per track schedule |
| Permission-only change (no UX change) | Permissions require consent | Not gated | Admin approves at convenience |
To support this, we propose a pre-consent flow: during the Preview window, Admin Hub surfaces upcoming permission changes alongside the feature description. Admins can approve new scopes in advance so the feature activates seamlessly when the Bundled release window opens.
Surface release track context to apps at runtime
Building on the runtime permissions APIs, we would expand the @forge/api surface to expose the site’s release track preference
import { releaseTrack } from '@forge/api';
const trackInfo = await releaseTrack.getSiteContext();
if (trackInfo.track == 'bundled') {
// Show “coming soon” messaging, link to admin help, etc.
} else {
// Continuous/preview sites may see features earlier
}
This enables developers to show contextual messaging (e.g. “This feature is coming in Summer '26”) or to plan progressive rollouts within their own analytics.
Asks
We appreciate your engagement and look for feedback on this RFC that will help shape this offering.
Specifically, we would love to get some insights on:
-
Would seasonal cadence work for your apps? Three release moments per year aligns with Jira’s model, but is that too infrequent for the pace of your app’s development? Would you prefer more frequent windows?
-
What happens when a developer ships a user-visible change without a feature flag? If a Forge app opts into release tracks but deploys a change without gating it behind a flag, should the platform block the deployment? Warn the developer? Allow it through?
-
Granularity of admin control: Should admins set a release track per-app, or per-site for all Forge apps? Per-app is more flexible but could create sprawl.
-
Interaction with Rolling Releases opt-in: Should release track opt-in require rolling releases opt-in as a prerequisite, or should they be independent? We believe they are complementary https://community.developer.atlassian.com/t/rfc-106-future-of-forge-versioning-permissions/94323 handles permissions, release tracks handle feature visibility, but would like your perspective.
-
Pre-consent for permissions: During the Preview window, we’d surface upcoming permission changes for admins to approve in advance. Should admins be able to bulk-approve all seasonal permission changes?
-
Marketplace review alignment: Should Marketplace review timelines be aligned with the seasonal cadence so approved versions are ready for the next release window?
-
What tools or features would help you adopt this model? What support can Atlassian provide to make the transition to feature-flag-gated development practical for your team?