How to persist an authentication ticket within a Jira Forge app without using localStorage, sessionStorage, Forge storage, or OAuth 2.0.

Problem Statement

I’m building a Jira Forge Custom UI app that loads a BI report using a ticket-based authentication system. The ticket must be passed as a query param to the report URL inside an <iframe>.

However, I’m running into a significant limitation:

Constraints I Cannot Violate

  • :cross_mark: I cannot use localStorage or sessionStorage (browser storage is restricted).
  • :cross_mark: I cannot use Forge storage API (storage.set, properties, etc.).
  • :cross_mark: I cannot use OAuth 2.0 — my backend software doesn’t support it.
  • :white_check_mark: I do receive a ticket via backend logic, but I need to preserve it during the session.

The Core Challenge

I need to securely pass the ticket to the View component every time the user navigates to the app, without re-authenticating or regenerating a new ticket each time.
But since I can’t persist it via local/session storage, context, or Forge APIs — how can I temporarily retain this ticket during the app’s lifecycle?

Currently, the app re-renders every time I switch between Edit and View, which wipes any in-memory variables. So I lose the ticket unless I go through the login logic again — which I want to avoid to save load time and avoid hitting auth limits.

What I’m Looking For

  1. Are there any state-preserving methods within Forge Custom UI apps that don’t rely on storage APIs?
  2. Can I pass the ticket securely through component navigation (Edit → View)?
  3. Is there a design pattern or architectural change that would help me achieve session-level ticket persistence under these constraints?

Any ideas or alternative designs would be extremely helpful.

I’m afraid I don’t understand what makes your restrictions impossible to use. For example why is forge storage off the table? I may not be able to help answer the question, but giving as much context as you can there might help others give you a better solution.