Skip to content

platform-feature-flags

Provider-agnostic feature flag infrastructure for NestJS with support for Azure App Configuration and Vercel Edge Config.

Package: @breadstone/archipel-platform-feature-flags

npm install @breadstone/archipel-platform-feature-flags

Provider Subpaths

Import only the providers you need:

ProviderSubpathSDK
Azure App Configuration@breadstone/archipel-platform-feature-flags/azure@azure/app-configuration-provider + @microsoft/feature-management
Vercel Edge Config@breadstone/archipel-platform-feature-flags/vercel@vercel/edge-config

Quick Start

typescript
import { Module } from '@nestjs/common';
import { FeatureFlagsModule } from '@breadstone/archipel-platform-feature-flags';
import { AzureFeatureFlagsClient, AZURE_FEATURE_FLAGS_CONFIG_ENTRIES } from '@breadstone/archipel-platform-feature-flags/azure';

@Module({
  imports: [
    FeatureFlagsModule.register({
      client: AzureFeatureFlagsClient,
      configEntries: AZURE_FEATURE_FLAGS_CONFIG_ENTRIES,
    }),
  ],
})
export class AppModule {}

Environment Variables

Azure App Configuration

VariableRequiredDescription
AZURE_APP_CONFIGURATION_CONNECTION_STRINGYesConnection string for Azure App Configuration
AZURE_FEATURE_FLAGS_LABELNoLabel filter for feature flags (e.g., prod)

Vercel Edge Config

VariableRequiredDescription
EDGE_CONFIGYesVercel Edge Config connection string

Checking Feature Flags

typescript
import { Injectable } from '@nestjs/common';
import { FeatureFlagsService } from '@breadstone/archipel-platform-feature-flags';

@Injectable()
export class MyService {
  public constructor(private readonly _featureFlags: FeatureFlagsService) {}

  public async doSomething(): Promise<void> {
    const isEnabled = await this._featureFlags.isEnabled('my-feature');

    if (isEnabled) {
      // Feature is enabled
    }
  }
}

Architecture

mermaid
flowchart TB
  subgraph FeatureFlagsModule
    Service[FeatureFlagsService]
    Port[FeatureFlagsClientPort]
  end

  subgraph Providers
    Azure[AzureFeatureFlagsClient]
    Vercel[VercelFeatureFlagsClient]
  end

  Service --> Port
  Port -.-> Azure
  Port -.-> Vercel

  Azure --> AzureSDK[@azure/app-configuration-provider]
  Vercel --> VercelSDK[@vercel/edge-config]

Released under the MIT License.