Skip to main content
Version: Config V2

Using ConfigCat's OpenFeature Provider in Angular

Getting started​

OpenFeature offers an Angular SDK to streamline the use of OpenFeature in Angular 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 Angular SDK, as explained below.

1. Install the Angular SDK and the ConfigCat provider​

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

2. Initialize the Angular SDK​

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

  • For applications using modules:

    import { NgModule } from '@angular/core';
    import { BooleanFeatureFlagDirective, type EvaluationContext, OpenFeatureModule } from '@openfeature/angular-sdk';
    import { ConfigCatWebProvider } from '@openfeature/config-cat-web-provider';
    import { createConsoleLogger, LogLevel } from '@configcat/sdk';

    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
    const initialContext: EvaluationContext = {
    targetingKey: 'user-1',
    admin: false
    };

    @NgModule({
    declarations: [
    // ...
    ],
    imports: [
    // ...
    OpenFeatureModule.forRoot({
    provider: configCatProvider,
    context: initialContext
    }),
    // Alternatively, you can import the directive directly in your components
    BooleanFeatureFlagDirective
    ],
    exports: [
    // Not needed if you import the directive directly in your components
    BooleanFeatureFlagDirective
    ],
    bootstrap: [/* ... */]
    })
    export class AppModule { }
  • For applications using standalone components:

    import { type ApplicationConfig, importProvidersFrom } from '@angular/core';
    import { type EvaluationContext, OpenFeatureModule } from '@openfeature/angular-sdk';
    import { ConfigCatWebProvider } from '@openfeature/config-cat-web-provider';
    import { createConsoleLogger, LogLevel } from '@configcat/sdk';

    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
    const initialContext: EvaluationContext = {
    targetingKey: 'user-1',
    admin: false
    };

    export const appConfig: ApplicationConfig = {
    providers: [
    // ...
    importProvidersFrom(
    OpenFeatureModule.forRoot({
    provider: configCatProvider,
    context: initialContext
    })
    )
    ]
    };

3. Use your feature flag​

<div
*booleanFeatureFlag="'isAwesomeFeatureEnabled'; default: false; else: booleanFeatureElse; initializing: booleanFeatureInitializing; reconciling: booleanFeatureReconciling">
This is shown when the feature flag is enabled.
</div>
<ng-template #booleanFeatureElse>
This is shown when the feature flag is disabled.
</ng-template>
<ng-template #booleanFeatureInitializing>
This is shown when the feature flag is initializing.
</ng-template>
<ng-template #booleanFeatureReconciling>
This is shown when the feature flag is reconciling.
</ng-template>

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 Angular SDK to learn more about the advanced capabilities of the SDK.

Look under the hood​