// wiki / percentage-rollouts

Gradual rollouts

A bug that hits 2% of users is an annoyance. The same bug hitting 100% is an incident. Gradual rollouts are how you find out which one you have while it's still cheap to fix.

Why not just ship it?

Tests and staging catch a lot, but they never perfectly match production — real traffic patterns, real data shapes, real edge cases from real customers. Flipping a feature on for everyone at once means the first sign of trouble is a flood of support tickets, not a quiet metric dip you noticed early.

A gradual rollout exposes the new code path to a small slice of real traffic first, so if something's wrong, it's wrong for a handful of users instead of all of them — and you can shut it off before it ever reaches the rest.

What makes it safe to ramp

Users don't flicker

Sticky bucketing means a user who landed in the "on" slice at 10% stays there as you expand to 25%, 50%, 100%. Nobody bounces back and forth between the old and new experience mid-session.

Expanding is additive

Growing the "on" percentage only ever adds new users from the "off" bucket — it never takes anyone who's already on the new experience back out of it.

Watch, then move

Each step is a checkpoint. The Automation planner can advance on time, evaluation volume, unique exposed users, lifecycle state, or an administrator's approval, and pauses when safety checks detect a conflict.

One switch to stop it

If a step goes wrong, drop the percentage back to zero — no redeploy, no rollback. For code you don't trust at all yet, pair it with a kill switch.

A typical ramp

Most rollouts don't need exotic curves — a handful of deliberate steps, each held long enough to trust the data, gets you there safely:

1%→5%→25%→50%→100%

The first step (1%) is a smoke test — just enough real traffic to catch anything the tests missed. The middle steps are where you actually learn something. The jump to 100% should feel anticlimactic, because everything worth finding already surfaced earlier.