The Complete Guide to Progressive Rollouts
Shipping to 100% of users on day one is risky. Progressive rollouts let you test in production with real users while limiting blast radius. Here's how to do it right.
What is a Progressive Rollout?
A progressive rollout (also called a gradual rollout or percentage deployment) releases a feature to a small percentage of users first, then increases that percentage over time.
How Percentage Rollouts Work
The feature flag system uses a hash of the user ID to determine if a user is in the rollout. This ensures:
- Consistency - The same user always gets the same experience
- Stickiness - Once enabled for a user, it stays enabled
- Determinism - No database lookups needed per request
// Simplified percentage check
hash = murmurhash(userId + flagKey)
percentage = hash % 100
isEnabled = percentage < rolloutPercentage Before You Roll Out
1. Define Success Metrics
Before shipping, know what you're measuring:
- Error rates - Is the new code breaking things?
- Latency - Is performance acceptable?
- Business metrics - Conversion, engagement, revenue
2. Set Rollback Criteria
Define when you'll automatically stop the rollout:
- Error rate > 1% (baseline: 0.1%)
- P99 latency > 500ms (baseline: 200ms)
- Conversion rate drops > 5%
3. Prepare Your Rollback
The rollback should be one click. In Flagit, you just toggle the flag off or set the percentage to 0%. The change propagates instantly via SSE.
Rollout Strategies
Strategy 1: Linear Increase
Simple and predictable. Increase by a fixed amount each day.
1% → 5% → 10% → 25% → 50% → 100% Best for: Low-risk features, UI changes, non-critical paths.
Strategy 2: Ring Deployment
Start with specific user groups before percentage rollout.
Internal → Beta Users → 10% → 50% → 100% Best for: Major features, breaking changes, high-risk code.
Strategy 3: Geographic Rollout
Roll out to one region at a time.
Australia → EU → US East → US West → Global Best for: Infrastructure changes, latency-sensitive features.
Example: New Checkout Flow
Let's walk through a real example - rolling out a new checkout experience.
Enable for internal team via email ends with @company.com rule.
Enable 1% rollout. Monitor error rates, checkout completion rate.
After 24 hours with no issues, increase to 10%. Watch for edge cases.
At 50%, you have statistical significance for A/B comparison. Compare metrics.
Enable for 100%. Schedule flag cleanup in 2 weeks.
When Things Go Wrong
Rollbacks happen. Here's how to handle them:
- Don't panic - The feature flag exists exactly for this moment
- Kill the rollout - Set percentage to 0% immediately
- Assess impact - How many users were affected?
- Investigate - What went wrong? Fix and try again
Pro Tip
Keep the "old" code path working until you're at 100% and have removed the flag. Never delete the fallback while the flag is still in use.
Summary
Progressive rollouts are your safety net. They let you:
- Test in production with real users
- Catch issues before they affect everyone
- Roll back instantly without a deploy
- Compare metrics between old and new experiences
Start small. Monitor closely. Expand with confidence.