Progressive Rollout: 10% → 50% → 100%
Learn how to safely roll out a feature to your entire user base using percentage-based targeting.
Prerequisites
- FeatureSignals server running
- A project with production and staging environments
- An SDK integrated in your application
Why Progressive Rollouts?
Shipping a feature to 100% of users on day one is risky. Progressive rollouts let you:
- Catch bugs early with a small group
- Monitor performance and error rates at each stage
- Roll back instantly if something goes wrong
- Build confidence before full release
Step 1: Create the Flag
Create a boolean flag for the feature you want to roll out:
- Key:
redesigned-dashboard - Name: Redesigned Dashboard
- Type: Boolean
- Default:
false
curl -X POST https://api.featuresignals.com/v1/projects/{projectID}/flags \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"key": "redesigned-dashboard",
"name": "Redesigned Dashboard",
"type": "boolean",
"defaultValue": false
}'
Step 2: Integrate the SDK
Use the flag in your application code:
const showNewDashboard = await client.boolVariation(
'redesigned-dashboard',
{ userID: user.id, email: user.email },
false
);
if (showNewDashboard) {
renderRedesignedDashboard();
} else {
renderCurrentDashboard();
}
Step 3: Start at 10%
Enable the flag in production with a 10% rollout:
curl -X PUT https://api.featuresignals.com/v1/projects/{projectID}/flags/redesigned-dashboard/environments/{prodEnvID} \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"enabled": true,
"percentage": 10
}'
Or in the dashboard:
- Go to the
redesigned-dashboardflag - Select the Production environment
- Toggle Enabled on
- Set Percentage to
10 - Save
What to Monitor
Wait 24–48 hours and check:
- Error rates: Are flagged users seeing more errors?
- Performance: Any latency regressions?
- Evaluation metrics: Check the dashboard under Metrics → Evaluations
- User feedback: Support tickets or complaints from the 10% cohort
Step 4: Increase to 50%
If everything looks healthy, bump the rollout:
curl -X PUT https://api.featuresignals.com/v1/projects/{projectID}/flags/redesigned-dashboard/environments/{prodEnvID} \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"enabled": true,
"percentage": 50
}'
At 50%, you get much better signal on edge cases and performance under load. Monitor for another 24–48 hours.
Step 5: Go to 100%
Once you're confident:
curl -X PUT https://api.featuresignals.com/v1/projects/{projectID}/flags/redesigned-dashboard/environments/{prodEnvID} \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"enabled": true,
"percentage": 100
}'
Emergency Rollback
If you detect issues at any stage, use the kill switch to instantly disable:
curl -X POST https://api.featuresignals.com/v1/projects/{projectID}/flags/redesigned-dashboard/kill \
-H "Authorization: Bearer $TOKEN"
This disables the flag across all environments immediately. All users revert to the default (false) value.
Step 6: Clean Up
After the feature has been at 100% for a stable period:
- Remove the feature flag check from code
- Delete the old dashboard code path
- Deploy
- Delete the flag from FeatureSignals
Advanced: Combine with Targeting
You can layer percentage rollouts with segment targeting for more control:
curl -X PUT https://api.featuresignals.com/v1/projects/{projectID}/flags/redesigned-dashboard/environments/{prodEnvID} \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"enabled": true,
"percentage": 10,
"rules": [
{ "segmentKey": "internal-team", "value": true },
{ "segmentKey": "beta-users", "value": true }
]
}'
This gives 100% of internal team and beta users the new dashboard, plus 10% of everyone else.
Next Steps
- Set up approval workflows to require review before production rollout changes
- Configure webhooks to notify Slack when rollout percentages change
- Track A/B metrics to measure the impact of your rollout