Skip to main content
Version: Config V1 (legacy)

Using ConfigCat's OpenFeature Provider in React

Getting started

OpenFeature offers a React SDK to streamline the use of OpenFeature in React applications. This SDK is built on top of the OpenFeature JavaScript Web SDK.

Since ConfigCat implements a provider for the Web SDK, you can use ConfigCat with the OpenFeature React SDK, as explained below.

1. Install the React SDK and the ConfigCat provider

npm i @openfeature/react-sdk @openfeature/config-cat-web-provider

2. Initialize the React SDK

The ConfigCatWebProvider.create() function takes the SDK key and an optional options argument containing additional configuration options for the underlying ConfigCat client:

import { OpenFeature, OpenFeatureProvider } from '@openfeature/react-sdk';
import { ConfigCatWebProvider } from '@openfeature/config-cat-web-provider';
import { createConsoleLogger, LogLevel } from 'configcat-js-ssr';

const configCatProvider = ConfigCatWebProvider.create('#YOUR-SDK-KEY#', {
// Specify options for the underlying ConfigCat client
logger: createConsoleLogger(LogLevel.Info),
setupHooks: (hooks) => hooks.on('clientReady', () => console.log('Client is ready!')),
// ...
});

// Set the initial context for your evaluations
OpenFeature.setContext({
targetingKey: 'user-1',
admin: false
});

// Instantiate and set our provider (be sure this only happens once)!
// Note: there's no need to await its initialization, the React SDK handles re-rendering and suspense for you!
OpenFeature.setProvider(configCatProvider);

// Enclose your content in the configured provider
function App() {
return (
<OpenFeatureProvider>
<Page />
</OpenFeatureProvider>
);
}

The OpenFeatureProvider is a React context provider which represents a scope for feature flag evaluations within a React application. It binds an OpenFeature client to all evaluations within child components, and allows the use of evaluation hooks.

3. Use your feature flag

import { useFlag } from '@openfeature/react-sdk';

function Page() {
// Use the "query-style" flag evaluation hook, specifying a flag-key and a default value.
const { value: isAwesomeFeatureEnabled } = useFlag('isAwesomeFeatureEnabled', false);
return (
<div>
{isAwesomeFeatureEnabled ? <p>Awesome feature is enabled!</p> : <p>Awesome feature is not enabled.</p>}
</div>
)
}

Evaluation Context

An evaluation context in the OpenFeature specification is a container for arbitrary contextual data that can be used as a basis for feature flag evaluation.

You can find here how the ConfigCat provider translates these evaluation contexts to ConfigCat User Objects.

Advanced features

Read the documentation of the OpenFeature React SDK to learn more about the advanced capabilities of the SDK.

Look under the hood