@well-known-components/features-component
v2.0.0
Published
base component
Downloads
166
Keywords
Readme
Features Component
A well-known component that integrates with Unleash to provide feature flag management. It enables runtime feature toggling and configuration through a simple interface.
Quick Start
- 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'
)
Configuration
Required Environment Variables
| Variable | Description |
|----------|-------------|
| FF_URL
| URL of your Unleash instance |
| SERVER_URL
| Your API URL (used as referrer for Unleash's applicationHostname strategy) |
Component Dependencies
The features component requires three well-known components:
config
: For accessing environment variableslogs
: For logging and debuggingfetch
: For making HTTP requests to Unleash
Usage Examples
Basic Feature Check
const isEnabled = await features.getIsFeatureEnabled(
'MY_APP',
'DARK_MODE'
)
if (isEnabled) {
// Enable dark mode
}
Integration with Other Components
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)
}
API Reference
createFeaturesComponent(options, serverUrl)
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
FeaturesComponent Methods
getIsFeatureEnabled(applicationName, featureName)
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 Flag Naming Convention
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
Contributing
Please read our contributing guidelines and code of conduct before submitting pull requests or issues.
License
This project is licensed under the Apache 2.0 License - see the LICENSE file for details.