Staged Percentage Rollouts
Release to a percentage of devices, watch the failure rate, then widen. Bucketing is deterministic per device and per release.
Roll out to a percentage
npm run ota:prod -- --rollout 10 # start narrow
yarn ota:prod --rollout 10 # yarn needs no --Anything after -- is passed straight through to the underlying command, so a flag never forces you back to typing the whole thing.
Watch adoption and the failure rate per platform on the channel page in the dashboard, then publish again at a wider percentage when it looks healthy.
The percentage is fixed at publish time
Bucketing is sha256(clientId + release) % 100 < rollout: deterministic per device and per release, so a device never flips between "update available" and "no update", and each release samples an independent slice instead of always hitting the same users.
A device outside the rollout is not stranded. The server walks from newest to oldest and serves the first release the device is both runtime-compatible with and inside the rollout for, so excluded devices keep receiving the previous stable release.
Stop a release
npm run ota:rollback # both platforms
npm run ota:rollback -- --platform ios # one platform onlyThis takes effect on the next update check — and, unlike simply publishing less, it also rescues devices that already installed the bad release. See Rollback.