Phased Rollouts
Instead of pushing an update to 100% of devices at once, release it to a small percentage first. Watch for problems. Widen the audience only when you confirm stability.
Think of it like a soft launch for a restaurant -- you invite a few friends first, work out the kinks, then open to the public.

How Rollouts Work
The SDK assigns each device to a rollout group using a hash of the device ID. This means:
- Consistent -- A device in the 5% group stays in at 25%
- Additive -- Increasing the percentage only adds new devices
- Reproducible -- Same percentage always selects the same cohort
Setting Rollout Percentage
Dashboard
Step 1: Open Releases for your app.
Step 2: Click the release's Rollout percentage or ... > Edit Rollout.
Step 3: Enter the new percentage and save.
CLI
swiftpatch releases rollout <release-id> --percent 25
API
curl -X PATCH https://api.swiftpatch.io/v1/apps/:appId/releases/:releaseId/rollout \
-H "Authorization: Bearer sp_live_your-key" \
-H "Content-Type: application/json" \
-d '{"rollout": 25}'
Recommended Strategy
| Phase | Percentage | Wait | What to monitor |
|---|---|---|---|
| Canary | 1-5% | 1-2 hours | Crash rate, fatal errors |
| Early adopters | 5-10% | 4-8 hours | Performance, error logs |
| Mid rollout | 25% | 12-24 hours | Adoption rate, rollback events |
| Late rollout | 50% | 24-48 hours | Full metrics, user reports |
| GA (full release) | 100% | -- | Post-release monitoring |
Deploying straight to 100% defeats the purpose. Starting at 1-5% costs nothing and gives you an escape hatch.
Monitoring

| Metric | Healthy | Warning |
|---|---|---|
| Success Rate | Above 98% | Drops more than 2% |
| Total Installs | Grows with rollout % | Stalls unexpectedly |
| Crash Groups | No new groups | New groups appearing |
| Platform Split | Proportional | One platform shows lower success |
If crash rates spike or success rate drops, pause immediately. Investigate before expanding. You can always resume.
Rolling Back
If you need to pull a release at any point:
swiftpatch releases rollback <release-id>
Or disable it from the Dashboard. Devices that already installed the update keep it until a new release is published.
Next Steps
- Rollbacks -- Automatic and manual rollback strategies
- Crash Detection -- How the SDK detects crashes
- Dashboard Rollouts -- Managing rollouts from the web UI