Gradual Rollout for Mobile App Releases
Publishing new app versions can be scary. Once a version is published, it’s out there for good, bugs and all, and any bug fixes need to go through a new app review process that may take days. Rolling out your app releases gradually will help you catch critical errors early and release with much more confidence. This is a guide for releasing apps with gradual rollout on iOS and Android.
What is Gradual Rollout?
Gradual rollout means initially rolling out your release to only a subset of users and then gradually rolling it out to everyone provided no critical issues were found.
In an ideal world, unit tests, e2e tests, and manual QA will catch all of the bugs, but let’s face it, a lot of issues are only found in production. So the gradual rollout may be a difference between having 10% of your users encounter a serious issue vs 100% of them. And you’ll certainly feel the difference in your app rating.
App Store vs. Play Store
It will probably come as no surprise that the gradual rollout works completely differently on iOS and Android.
Here are the key differences:
- Android: you have complete control over the rollout percentage and you edit it manually
- iOS: the app will be rolled out automatically over the next seven days
- Android: you can customise the rollout per region
- iOS: the rollout is the same for each region
- Android: new installs will use the rollout %
- iOS: new installs will always use the latest version
In both stores you have the option to halt the rollout completely as well as convert to a full rollout at any point.
iOS Phased Releases
For App Store releases, you choose whether to opt into this feature before you submit your app for approval.
After your release has been reviewed and published, this section will switch to a view that shows which percentage of users the app has been rolled out to.
At any point during the seven-day rollout, you can choose to skip the phased release and immediately release to all users.
If any critical bugs are found and you want to stop the rollout, you can pause the phased release for up to 30 days. This should give you enough time to build, review and publish a new version instead.
Android Staged Rollout
For Android, you can choose a rollout percentage for the release when you submit it, and unlike iOS, you can choose the exact rollout percentage. If your app is available in multiple regions, you can also choose which regions to roll out to.
After your release is published, you can monitor its progress on Google Play, and either update the rollout to a higher %, or halt the rollout if you’ve found an issue. Halting a rollout will not downgrade existing users, but it will prevent new users from installing that version of the app.
Releasing your apps with gradual rollout is pointless if you don’t also monitor the release. It takes some time for the results of the release to come in. The 24-hour mark is a good time to check if things are looking fine for the new release:
- Inspect the Android release dashboard. Google Play has an amazing release dashboard (under Production) that shows crashes, ANRs, and reviews. You can compare the current release with the previous one, or all previous releases. This will help highlight any critical regressions.
- Monitor errors from the new release. Assuming you have an error logging tool integrated in your app (and you should, something like Sentry is fantastic), review the errors from the new release. Any new crashes? Any spikes in new errors?
- Keep an eye on new app reviews. App reviews must always be taken with a pinch of salt. Who of us hasn’t received an app review that was unrelated to the app? But a sudden influx of “unable to check out” and “cannot log in” reviews can be indicative of a new problem.
Rolling Out to Everyone
The decision of when to roll out to everyone is usually up to you and the business.
One thing to note is that for iOS you don’t get to choose the rollout %, but since all new users always get the new app, you’ll usually see a higher percentage of actual users from iOS when it’s only rolled out to 1% than you do with Android at 10%.
Here’s an example of a rollout workflow:
- wait 24 hours and review logs
- increase Android rollout to 50%
- wait 48 hours and review logs
- increase Android rollout to 100%
- increase iOS rollout to 100%
But the actual workflow depends on your needs and the release. Did a lot of things change and you’re nervous about the changes? Release more gradually. Was it a small but critical bugfix? Then release faster.
Using a gradual rollout can be a huge help in preventing critical regressions or bugs from slipping into production. Considering how slow it can be to get new app versions reviewed and published, this can make a huge difference. We hope to never find issues at this stage, but if we do at least we can catch them early and minimise the effect on users.