Delivery
Feature Flag Management
Feature flags separate deployment from release. They are powerful safety controls when owned and retired; they become production debt when left unmanaged.
Flag types
- Release flags control gradual exposure of new functionality.
- Experiment flags test product hypotheses.
- Operational flags disable risky or expensive behavior quickly.
- Permission flags expose features to entitled users or tenants.
- Migration flags shift traffic or behavior during system changes.
Flag metadata
Every flag should include:
- Owner.
- Purpose.
- Creation date.
- Expected removal date.
- Default state.
- Targeting rules.
- Impact if toggled.
- Link to rollout or migration plan.
Lifecycle
Practices
- Keep defaults safe for new environments.
- Log or audit production flag changes.
- Test both enabled and disabled paths while the flag exists.
- Remove flags after rollout or migration completes.
- Use server-side enforcement for authorization-sensitive behavior.
Watchouts
- Nested flags make behavior hard to reason about.
- Stale flags create dead code and hidden risk.
- Client-side flags can leak upcoming features or sensitive logic.
- Emergency flags must be documented in runbooks.