-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Highest
-
Component/s: Forge - App UI Web
-
Minor
-
-
Integration testing
Issue Summary:
When an app that requires a licence is loaded through global:fullPage, and the licence key resolved for that app is not found in the site's licence record, the page fails to load entirely. The GraphQL query that bootstraps the full page returns an error on the licence field, and the full-page shell treats that error as fatal, so the app is never mounted and no app code runs.
The equivalent jira:fullPage module is not affected under the same conditions. On the same app, site, installation and licence it degrades gracefully and the app renders normally. The module type is the only variable.
This is a failed lookup rather than an absent entitlement, and the two should not be conflated. The customer may hold a valid, paid licence for the app and still see this, if the key used for the lookup does not match the key recorded against the site. Apps migrated from Connect appear to be the most exposed, since the licence key carried by the app is the Connect addon key rather than the registered app key. A lapsed licence, or a delay between starting a trial and the entitlement being written, would produce the same failure.
Steps to Reproduce
- Install a Connect on Forge app that implements global:fullPage and requires a licence, onto a site where the app's licence key is not found in the site's licence record.
- Open the app's full page.
- Observe that the page renders a generic error state and the app never loads.
Note that installing with an explicit licence override does not reproduce this. The override short-circuits the licence lookup, so the failing path is never reached and the page loads normally.
Expected Results
Where the licence cannot be resolved, the licence is reported as absent and the full page still renders, leaving the app to handle that state itself. This is the behaviour of jira:fullPage today.
Actual Results
The full page renders a generic error state and the app never mounts. The bootstrap query returns HTTP 200 carrying a GraphQL error against the licence field:
path: ["globalApp_extensionsByInstallationId","extensions",0,"license","active"] errorSource: UNDERLYING_SERVICE statusCode: 500 classification: DataFetchingException
The same error is returned for every extension on the app, so an app that also declares a core:compatibility module will show a second, identical error at extensions[1].
The licence value is returned as null and every other field on the module resolves correctly. Module metadata, app ID, environment, route prefix and installation ID are all present and correct.
Workaround
Revert the affected module from global:fullPage back to jira:fullPage and redeploy.
Note that jira:fullPage is deprecated on 2026-09-30. After that date there is no known workaround for this behaviour. A workaround will be added here if one becomes available.