Flags are excellent at what they are for and terrible as permanent architecture. Ten long-lived boolean flags describe over a thousand possible configurations, and your test suite covers one.
Give every flag a death date
- Set an expiry when you create it, and fail the build when it passes. A noisy build is cheaper than a forgotten branch.
- Separate release flags from operational toggles and permission checks. Only the first kind should expire; the other two are features and should be named as such.
- Removing a flag means deleting the losing branch, not just the condition.
The cleanup is not glamorous work and it never appears on a roadmap, which is exactly why it needs to be automatic rather than intentional.
1 Comments
Leave a comment
Sign in to leave a comment.
Signing in is unavailable right now.







Daan Visser
April 8, 2026We audited ours after reading something similar and found 41 flags, of which 9 were still doing anything.