How to Manage the Feature Flag Lifecycle
A release flag moves through create, roll out, fully on, then remove; naming its stage keeps it from lingering.
Release flags are temporary. Giving each flag an explicit lifecycle (with an owner and target removal date) and tracking its stage keeps the flag set small and honest.
Lifecycle stages
| Stage | Meaning | Next action |
|---|---|---|
| New | Created, default off | Build and merge behind it |
| Rolling out | On for a subset | Widen while watching metrics |
| Fully on | On for everyone | Schedule removal |
| Retired | Removed from code and tool | Done |
Track stage in the manifest
flags.yaml
flags:
new-checkout:
owner: checkout-team
stage: rolling-out
targetRemoval: 2026-08-01Gotchas
- A flag stuck at "fully on" with no removal date is permanent tech debt.
- Long-lived operational flags (kill switches) are legitimate; label them so cleanup checks skip them.