Skip to main content

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