Release Toggle
Tool
A feature flag used for one purpose: keeping an unfinished feature hidden from users while its code ships.
Why it exists
Building something that takes a while used to leave two options. Finish it in a separate working copy and merge everything at once, or stop shipping until it's done. Code kept aside drifts further every time the main line changes, and a halted pipeline makes unrelated work wait too.
Pagedeck ran into this on a new editor. Theo worked apart for six weeks, and in the meantime the main line changed how documents save. The merge took three days, and the errors that came out of those three days had nothing to do with the new editor.
A release toggle reverses the order. Unfinished code merges into the main line every day, and it ships with the user-facing switch turned off. The code is on the server and absent from the screen.
What it solves
Separating merging from showing sorts out three things.
- Long-lived branches disappear. A half-built editor still lands on the main line daily, so it has no time to drift. Three days of merging becomes a few minutes a day.
- Shipping doesn't stop. Other fixes in the same codebase go out whether or not the editor is finished. One feature stops holding the rest hostage.
- The moment of turning it on separates from the moment development ends. Code ready three weeks early still waits for the announcement, and if the date arrives before the work does, you simply don't flip the switch.
Keep the lifespan short. Once everyone has it, the branch and the switch come out of the code and the old path gets deleted. The usual practice is to write a removal date when the flag goes in and wire an alert to the owner for when that date passes. Left in place, the next person spends time working out which of the two paths is still alive.
The cost is that both states need checking. Leave the off path unopened for two weeks and you find the old screen broken on the day you meant to turn the switch on.
How it sounds at work
"Put it behind a release toggle and merge daily. No more six-week branches."
Bringing unfinished code onto the main line while keeping it hidden.
"The code all shipped last week. We just haven't flipped the switch."
Deployment and release have been separated.
"This flag's removal date has passed. Let's pull it this week."
Cleaning up a switch that has outlived its purpose.
Pagedeck rebuilt the editor this way. Theo merged daily with the switch off, and Mia turned it on for internal accounts only and used it for two weeks. After that it opened to 1 percent through a canary release, the deployment that opens to a very small group first to watch for trouble. On the day it reached everyone, Theo pulled the flag out.
Easily confused with
| Term | What it's switched for | How it differs |
|---|---|---|
| Experiment toggle | Splitting groups for comparison | Both states stay live until a verdict lands, because comparing numbers is the point. A release toggle compares nothing and only hides |
| Permission toggle | Plan level or permission | Stays in the product for as long as the product lives. A release toggle is temporary and comes out once everything is open |
Where to go next
- Feature flag
see which mechanism this is one use of
- Experiment toggle
see the same mechanism used for a different purpose
Last updated 2026-09-16