Skip to content

Flagsmith: Inconsistent Identity Propagation in FlagsmithClientProvider on Context Updates #1232

Open
@belaczek

Description

@belaczek

Description

When using Flagsmith as an OpenFeature provider, updating the context does not always trigger an identity API call. This results in:

  • Missing traits in the /identities API request
  • Incorrect segmentation behavior

The issue arises when the provider is set before the context.

Steps to Reproduce

Working Flow

This sequence correctly triggers the /identities endpoint with the expected traits:

const flagsmithClient = new FlagsmithClient();
await OpenFeature.setContext({ targetingKey: 'id', traitA: 'abc' });
OpenFeature.setProvider(flagsmithClient);

Non-Working Flow

In this case, the identity API call is not made after setting the context, resulting in empty traits:

const flagsmithClient = new FlagsmithClient();
OpenFeature.setProvider(flagsmithClient);
await OpenFeature.setContext({ targetingKey: 'id', traitA: 'abc' });

Observed Behavior

  • Without a targetingKey, segmentation defaults to environment-level settings.
  • Features that should be disabled remain enabled, with a "STATIC" reason.
  • Updating the context after setting the provider does not trigger a re-fetch with the correct identity data.

Expected Behavior

  • Whenever context is updated, the provider should correctly propagate identity and traits and fetch correct state of flags for target user.

Possible Cause

In FlagsmithClientProvider, when the context updates, the provider calls:

this._client.getFlags();

However, this does not include the new identity information. Updating this call to:

this._client.identify(identity, context);

resolves the issue.

🔍 [Problematic line in the source code](https://github.com/open-feature/js-sdk-contrib/blob/main/libs/providers/flagsmith-client/src/lib/flagsmith-client-provider.ts#L56).

Environment

  • OpenFeature JS SDK with Flagsmith as the provider.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions