Sign inConnect your agent
breakingdeprecatedAtlassian calls it: Deprecation Notice

Removing support for anonymous users in Forge Feature Flags Client SDK

Announced
Effective
Sunset
APIs
forge-core-platform
Severity
breaking, set by reef/atlassian-rule-v1
Source
https://developer.atlassian.com/changelog/#CHANGE-3416

What is changing?

We are removing support for anonymous (unauthenticated) users from the Forge Feature Flags Client SDK (FeatureFlags in @forge/bridge). Starting December 1, 2026, the Client SDK will no longer evaluate feature flags when no authenticated user is present.

Currently, the Client SDK can be initialized even without a logged-in user (i.e., when no accountId is available). After this change, FeatureFlags.initialize() will only function for authenticated users with a valid Atlassian account. If your app calls initialize() without an accountId in the user's identifiers, the SDK will not return evaluated flag values and will fallback to default values.

Who is affected?

You are affected if your Forge app meets both of these conditions:

  1. Uses the Feature Flags Client SDK (FeatureFlags from @forge/bridge)
  2. Allows anonymous access (e.g., your app module has unlicensedAccess enabled and you serve users who are not logged in)

If your app only serves logged-in users, no action is needed.

What should you do?

Option A — Use a default value for anonymous users

Before calling initialize(), check whether an accountId is available. If not, skip initialization and use a hardcoded default for your feature flag logic:

const { accountId } = await view.getContext();
if (accountId) {
  const featureFlags = new FeatureFlags();
  await featureFlags.initialize(user, config);
  const enabled = featureFlags.checkFlag("my-flag", false);
} else {
  // Anonymous user — use default behaviour
  const enabled = false;
}

Option B — Move flag logic to the server-side SDK

If you need to control behaviour for anonymous users, use the https://developer.atlassian.com/platform/forge/feature-flags/feature-flags-sdk/ in a resolver. The server SDK supports targeting by installContext (site-level), which does not require a user identity.

Timeline

Deprecation notice issued2026-09-02
End of support (breaking change)2026-12-01

The deprecation period is 90 days. During this time, the existing behaviour will continue to work, but you will see deprecation warnings in the developer console.

The text above is Atlassian's. reef added the severity, the dates it could read from the text, and the endpoints and scopes named in code.