Staged Rollouts Guide
Ship updates safely by rolling them out to a small group first, then widening the audience once you confirm stability.
Step 1: Deploy Your Update
swiftpatch deploy -p ios --hermes -n "v1.2.0 - New checkout flow"
Your release starts at whatever rollout percentage you set (default is 100%).
Step 2: Set the Rollout Percentage
After deploying, adjust the rollout from the dashboard:
Step 1: Go to your app's Releases page.
Step 2: Click on the release.
Step 3: Adjust the Rollout Percentage.
Recommended stages
- 1-5% -- Canary. Monitor for 1-2 hours.
- 10-25% -- Broader test. Monitor for 4-8 hours.
- 50% -- Half of users. Monitor for 24 hours.
- 100% -- Full release.
Step 3: Monitor
Check the dashboard for:
- Crash rate
- Rollback events
- Error logs
warning
If anything looks wrong, pause the rollout immediately. You can always resume later.
Step 4: Rollback if Needed
swiftpatch rollback -a <app-id> -p ios
Or click Rollback on the release in the dashboard.
Automated Deploy with Manual Rollout
A common pattern: let CI deploy automatically, then manage rollout manually from the dashboard.
.github/workflows/deploy.yml
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- run: npm install -g @swiftpatch/cli
- name: Deploy
run: |
swiftpatch deploy \
-p ios \
--hermes \
-n "Release from ${{ github.sha }}" \
--ci-token ${{ secrets.SWIFTPATCH_CI_TOKEN }}
Best Practices
- Start small (1-5%) every time -- no exceptions
- Wait between stages for issues to surface
- Monitor crash rates and user reports actively
- Have a rollback plan ready before you start
- Communicate with QA about each stage