Friday deploys do not fail because Git is hard. They fail because deploy and release are the same button — and rollback becomes a crisis instead of a toggle.
Feature flags are not a library choice. They are a permission structure: engineers ship plumbing; product chooses exposure.
Deploy is not release
Once deploy is routine and release is deliberate, Friday afternoons get quieter. The code is in production; the user is not — until someone flips a switch in daylight on Monday.
What we measure
Two metrics matter: percent of changes behind a flag, and average age of active flags. The first proves discipline; the second proves you clean up.
DevInsights tags PRs by flag state and surfaces flags older than thirty days. Stale flags are technical debt that compounds quietly.
Where flags go wrong
Flags are not a substitute for tests. They tell you what shipped, not whether it works.
- Name the owner and hypothesis when the flag is created
- Set an exit criterion before merge — not after incident
- Calendar a deletion review; orphaned flags are a codebase smell
Key takeaways
- Decouple deploy from release to make rollback a choice.
- Track flag coverage and flag age like any other debt.
- Treat each flag as a mini-product with an exit plan.


