A well-known component that integrates with Unleash to provide feature flag management. It enables runtime feature toggling and configuration through a simple interface.
- Install the package:
npm install @well-known-components/features-component
- Set up environment variables:
FF_URL=https://your-unleash-instance-url
SERVER_URL=https://your-api-url
- Create and use the component:
import { createFeaturesComponent } from '@well-known-components/features-component'
// Initialize the component
const features = await createFeaturesComponent(
{
config, // WKC configuration component
logs, // WKC logger component
fetch, // WKC fetch component
},
await config.requireString('SERVER_URL')
)
// Check if a feature is enabled
const isEnabled = await features.getIsFeatureEnabled(
'APPLICATION_NAME',
'FEATURE_NAME'
)
Variable | Description |
---|---|
FF_URL |
URL of your Unleash instance |
SERVER_URL |
Your API URL (used as referrer for Unleash's applicationHostname strategy) |
The features component requires three well-known components:
config
: For accessing environment variableslogs
: For logging and debuggingfetch
: For making HTTP requests to Unleash
const isEnabled = await features.getIsFeatureEnabled(
'MY_APP',
'DARK_MODE'
)
if (isEnabled) {
// Enable dark mode
}
export const validateFeature = async (components: AppComponents, data: any) => {
const { features, logs } = components
const isFeatureEnabled = await features.getIsFeatureEnabled(
'MY_APP',
'NEW_VALIDATION'
)
if (isFeatureEnabled) {
logs.log('Using new validation')
return newValidation(data)
}
return legacyValidation(data)
}
Creates a new instance of the features component.
Parameters:
options
: Configuration object containing:config
: Configuration component instancelogs
: Logger component instancefetch
: Fetch implementation for making HTTP requests
serverUrl
: URL used as referrer for Unleash's applicationHostname strategy
Returns: Promise
Checks if a feature is enabled in Unleash.
Parameters:
applicationName
: Your application namefeatureName
: Feature flag name
Returns: Promise
Note: The actual feature flag in Unleash will be named: FF_${applicationName}_${featureName}
Feature flags in Unleash follow this naming pattern:
FF_<APPLICATION_NAME>_<FEATURE_NAME>
For example:
FF_MY_APP_DARK_MODE
FF_MY_APP_NEW_VALIDATION
Please read our contributing guidelines and code of conduct before submitting pull requests or issues.
This project is licensed under the Apache 2.0 License - see the LICENSE file for details.