Why Feature Flags Change How You Ship
Decoupling "deployed" from "released" is the single biggest unlock for shipping confidently
Without feature flags, deploying code and releasing a feature are the same event โ the moment you merge to main and deploy, every user sees the change. That coupling is the source of most "we shipped a bug to everyone at once" incidents.
The light switch analogy
A feature flag is a light switch, not a rewiring job
Wiring a new light fixture into a house is the deploy โ it is installed, but nothing changes yet because the switch is off. Flipping the switch is the release โ instant, reversible, and separate from the (slow, risky) work of installing the wiring. Without a switch, "installing the light" and "turning it on for the whole house" are the same irreversible action.
What flags let you do that you cannot do otherwise
- Deploy on Friday without fear โ The code is live but flagged off โ nothing user-facing changes until you flip the switch, whenever you choose
- Roll out to 5% of users before 100% โ Catch a bug or a bad metric while it only affects a small slice of traffic
- Turn off a broken feature in seconds โ No redeploy, no rollback, no waiting for a build โ just flip the flag back off
- Run two versions side by side and measure โ A/B testing is built on the same mechanism as a release flag
What happens without flags
- Every deploy is a release โ There is no "ship it but don't turn it on yet" โ merge and deploy means live for everyone
- Rolling back means reverting code and redeploying โ That can take minutes during an incident โ every minute matters
- Big features ship in one giant merge โ Long-lived feature branches that diverge from main for weeks are a direct result of having no safe way to merge incomplete work
Flags are also why trunk-based development works
Teams that merge to main multiple times a day rely on flags to hide unfinished work โ the code lives on main, behind a flag, well before it is ready for users. This is what makes long-lived feature branches unnecessary.
Try this
Think of the last feature your team shipped that needed a rollback or caused an incident. Write one sentence on how a feature flag โ wrapping just that feature in an on/off switch โ would have changed the outcome (faster rollback, smaller blast radius, or both).