Creating Feature Flags
Basic Flag
packages/commandkit/src/flags/feature-flags.ts:410
Flag with Context
packages/commandkit/src/flags/feature-flags.ts:64-91
Flag Definition
FeatureFlagDefinition Interface
packages/commandkit/src/flags/feature-flags.ts:64
Key Components
key
Unique string identifier for the flag. Used for external provider lookups.identify
Extracts entities from the execution context. These entities are used in thedecide function.
decide
Contains the flag evaluation logic. Receives identified entities and optional provider configuration.Evaluation Context
Flags can access different contexts depending on where they’re evaluated.Command Context
packages/commandkit/src/flags/feature-flags.ts:96
Event Context
packages/commandkit/src/flags/feature-flags.ts:150
Advanced Usage
Percentage Rollouts
Complex Decisions
Custom Evaluation
Evaluate flags with custom context outside normal execution flow.packages/commandkit/src/flags/feature-flags.ts:419
External Flag Providers
FlagProvider Interface
packages/commandkit/src/flags/FlagProvider.ts:8
FlagConfiguration
packages/commandkit/src/flags/FlagProvider.ts:37
Setting a Provider
packages/commandkit/src/flags/feature-flags.ts:27
JSON Provider Example
packages/commandkit/src/flags/FlagProvider.ts:68
Custom Provider
Analytics
Flags automatically track metrics and decisions (unless disabled).Tracked Events
-
Feature Flag Metrics
- Flag key
- Identification time
- Decision time
- Provider usage
-
Feature Flag Decisions
- Flag key
- Decision result
- User/entity ID
- Provider used
packages/commandkit/src/flags/feature-flags.ts:369-398
Disable Analytics
packages/commandkit/src/flags/feature-flags.ts:88
Use Cases
Beta Features
Guild-Specific Features
A/B Testing
Maintenance Mode
Best Practices
-
Use Descriptive Keys: Use clear, hierarchical keys like
feature.ui.new-buttons - Cache Provider Calls: External providers should cache results to avoid rate limits
-
Fallback Logic: Always provide fallback logic in
decideif provider fails - Type Safety: Use TypeScript generics for return types and entities
- Monitor Performance: Use analytics to track flag evaluation time