OpenFeature PROVIDER_NOT_READY / provider not ready in CI
An OpenFeature client evaluated a flag before its provider finished initializing. OpenFeature returns the default value with reason ERROR and errorCode PROVIDER_NOT_READY. In CI this happens when evaluation races provider start-up, producing flaky results.
What this error means
Flag evaluations return the default with errorCode PROVIDER_NOT_READY, or the SDK logs that the provider is not ready. Tests depending on real flag values fail intermittently.
Provider not ready: returning default value.
{ reason: 'ERROR', errorCode: 'PROVIDER_NOT_READY', value: false }Common causes
Evaluation runs before the provider initializes
setProvider returns immediately while initialization is asynchronous; evaluating before it completes yields PROVIDER_NOT_READY.
The provider failed to initialize and stayed not ready
The underlying provider (a flag vendor SDK) could not reach its backend, so it never transitioned to READY.
How to fix it
Await setProviderAndWait before evaluating
Use the blocking form so the provider reaches READY before any flag is read.
await OpenFeature.setProviderAndWait(new MyProvider());
const client = OpenFeature.getClient();
const value = await client.getBooleanValue('my-flag', false);Handle provider events for readiness
Subscribe to the READY and ERROR events so the run does not proceed while the provider is still initializing.
OpenFeature.addHandler(ProviderEvents.Ready, () => runFlagChecks());
OpenFeature.addHandler(ProviderEvents.Error, (e) => console.error(e));How to prevent it
- Use setProviderAndWait so providers are READY before evaluation.
- Gate flag reads on the provider READY event in tests.
- Use an in-memory provider in tests to make readiness deterministic.