Engineering Culture

Feature Flags: Decouple Deploy From Release

Shipping code and releasing a feature don't have to be the same event. Feature flags separate them, and that separation makes deploys far safer.

RE

Roberto Espinoza

CEO, Ruzora

July 6, 20268 min read

Most teams treat deploying code and releasing a feature as one scary event: the code goes out and users see it at the same moment, so every deploy carries feature risk. Feature flags break that link. You deploy the code dark, then flip the feature on when you're ready, for whoever you choose. That one separation quietly fixes a surprising number of problems.

Key Takeaways

  • Feature flags separate deploy from release: code ships to production hidden, and you turn features on later (progressive delivery).
  • This supports trunk-based development and safer, more frequent deploys.
  • Flags enable progressive rollout: turn a feature on for 1% of users, watch, then expand.
  • Separating deploy from release drives safer, more frequent deploys, the behaviors DORA links to elite delivery (LaunchDarkly).

The Core Idea

A feature flag is a runtime switch that decides whether a piece of code is active. Wrap new work in a flag, and you can merge and deploy it to production while it stays invisible to users. Deploying becomes routine and low-risk, because deploying no longer means releasing, the code is there but dark. Releasing becomes a separate, reversible decision: flip the flag on, and if something looks wrong, flip it back off in seconds without a redeploy (Unleash on progressive delivery). Two events that used to be fused, sharing their risk, are now independent.

Why This Helps So Much

Separating deploy from release strengthens all four DORA delivery signals, and the reasoning is direct. Deploy frequency rises, because merging to main is safe when unfinished work is hidden behind a flag. Change failure rate drops, because a bad feature gets switched off instantly instead of triggering a rollback. Recovery time shrinks for the same reason, the kill switch is a flag flip. And lead time improves, because work flows to production continuously rather than piling up for a big release (LaunchDarkly on deployment frequency).

Without flagsWith flags
Deploy = release (shared risk)Deploy and release are separate
Roll back a whole deploy to undoFlip one flag off in seconds
Big-bang launch to everyoneProgressive rollout to 1%, then more
Long-lived feature branchesMerge to main, hidden behind a flag

A Concrete Version

A team is launching a risky new checkout flow. Without flags, they'd batch it into a big release, deploy to 100% of users at once, and hope, then scramble to roll back the whole deploy if it broke. With a flag, they deploy the code dark days earlier, turn it on for internal users, then 1% of customers, watch the error rates, and expand to 10%, 50%, 100% over a few days. When a bug shows up at 10%, they flip the flag off, fix it, and try again, with no rollback, no incident, no 2am page. Same feature, a fraction of the risk.

The Honest Counterpoint

Feature flags add their own cost, and teams that ignore it create a mess. Every flag is a branch in your code, and flags that never get cleaned up accumulate into "flag debt": a tangle of stale conditionals nobody dares remove, and combinations nobody has tested. The discipline is to treat flags as temporary by default, remove a flag once its feature is fully rolled out, and keep an inventory of what's live. Used with that hygiene, flags are a big win; left to rot, they become their own kind of technical debt.

What This Means for Teams

Feature flags are foundational infrastructure for safe, fast delivery, and standing them up well, including the cleanup discipline, is the kind of thing experienced engineers do almost by reflex. They're a key enabler of the trunk-based, frequent-deploy approach that DORA ties to elite performance, and they reduce the fear that makes teams deploy rarely. See available engineers.

Frequently Asked Questions

What do feature flags do?

They separate deploying code from releasing a feature. Code ships to production hidden behind a runtime switch, and you turn the feature on later, for whoever you choose, without another deploy.

How do feature flags improve DORA metrics?

They lift all four: safer merges raise deploy frequency, an instant kill switch lowers change-failure rate and recovery time, and continuous flow shortens lead time.

What is progressive delivery?

Rolling a feature out gradually, 1% of users, then more, while watching for problems, using flags. It moves risk control into production with safety rails, so you catch issues on a small slice before everyone sees them.

What's the downside of feature flags?

Flag debt: stale flags that never get removed pile up into untested, tangled conditionals. Treat flags as temporary, remove them after full rollout, and keep an inventory.

The Bottom Line

Deploying code and releasing a feature don't have to be the same event, and separating them with feature flags removes a huge amount of risk. You ship dark, roll out progressively, and undo with a flag flip instead of a rollback, which improves all four DORA metrics. Keep the flags clean, and you get safer, more frequent delivery.

Roberto Espinoza is CEO of Ruzora, which helps US startups hire pre-vetted senior LATAM engineers in 72 hours. See available engineers.

RE

Roberto Espinoza

CEO, Ruzora

Roberto is the founder and CEO of Ruzora. He works directly with US startup founders and CTOs on staff-augmentation and software-factory engagements, and personally reviews senior engineer placements.

AI-vetted engineers, ready now

Your next senior engineer is already vetted and waiting.

It starts with a single call. 72 hours later, you're reviewing scored candidates who already match your stack and culture.