Releasing a new version of a mobile app can be a stressful process. The first few times you do it, your customer base is probably pretty small, so it doesn’t feel like a very big deal.
However, after your user base grows into the thousands, the pressure really starts to build. The fear of releasing a bug that could potentially impact tens of thousands of people can be unnerving for even the most confident developer.
Fortunately, there are some simple steps that we can take to help ensure that the release process goes smoothly.
1. Run Automated Tests
Prior to distributing your app, the first thing you should do is run your automated test suite. Every app, no matter how small or large, should have automated tests of some kind that run frequently.
The focus of this post is not automated software testing practices, so I won’t dwell on the topic. However, I do feel strongly that automated tests are an excellent way to reduce bugs in new code and protect against regressions.
2. Use a Device Farm
Device farms are services that will run your app on a wide range of mobile devices and operating systems and give you a report. I highly recommend leveraging one of these services if you can—especially for Android apps where it’s not uncommon to discover issues that only affect certain phones or versions of Android.
Pre-launch report (Android only)
For Android apps, Google offers a service called the pre-launch report (PLR). Any app uploaded to the Google Play Console can be tested by this service. By default, the test harness will automatically try to crawl through your app by randomly tapping buttons, typing into forms and swiping. You can even provide it with log-in credentials for a test account if your app requires sign-in.
The PLR will test your app on a wide range of phones and versions of the Android operating system. As a result, it will produce a large amount of information about your app’s stability, performance, accessibility, security vulnerabilities and even screenshots.
Not every app will be able to get value from a pre-launch report, but I highly recommend using it if you can.
AWS Device Farm
Amazon also has a service called the AWS Device Farm. It can be used to test your app on a large range of real devices—over 2,500! This service is nice because it supports both Android and iOS; however, it’s not free.
3. Do Alpha and Beta Testing
Alpha and Beta testing are forms of pre-release app distribution that enable you to get your app in the hands of testers before it goes out to the general public. The terms Alpha and Beta can mean different things to different organizations.
Google Play testing tracks
The Google Play Developer Console defines several test tracks for pre-release testing. These tracks progress from narrower to broader audiences.
- Internal testing (closed track) – This track allows you to release the app to a fixed set of internal testers. Each tester must be manually invited by entering an email address into the developer console.
- Alpha Testing (closed track) – Closed track Alpha testing is the first level of testing intended for external testers. “Closed track” means that users cannot sign up freely; they must be invited, and their email addresses must be entered into the Google Play developer console. Users can be recruited via email, Google Groups, social media, etc.
- Beta Testing (open track) – Open Track Beta testing is also intended for users outside of the organization. When a release is set up for Beta testing, it becomes visible to the public in the Google Play store, but it’s clearly marked as a Beta version. Users can freely opt in to install it and try it out. The number of users that can participate in Beta testing can be restricted to a maximum value; however, you cannot limit it below 1000 users.
TestFlight (iOS)
Apple’s approach to broad user testing has fewer options. TestFlight is the primary mechanism for distributing your app. While there is no “open track” or Beta testing feature in the App Store, you can create a Beta test group on TestFlight and generate a public URL that is associated with it. That URL can then be shared broadly by any means, allowing users to opt in to testing the Beta app.
4. Start with a Phased Rollout
Once you’ve completed the Alpha/Beta testing period and you’re feeling confident about your release candidate, it’s time to release the app to the public. There is one final tool that you can leverage to ensure that a nasty, undetected bug doesn’t hit your entire user base at once—it’s called a phased rollout.
A phased rollout (or staged rollout) is pretty straightforward. It just means that your app is released to incrementally larger portions of your user base over a set period of time. This feature is available for both Android and iOS apps.
For iOS apps, Apple specifies a rigid timeline for the rollout. It starts at 1% of users on Day 1 and ramps up to 100% on Day 7. Android’s system is more flexible, as it requires you to manually change the percentage of users who can access the app at whatever intervals you prefer. Both systems allow the rollout process to be paused and resumed at any time.
During a phased rollout, you watch for app crashes, keep in sync with customer service, and monitor your app store reviews. If a major issue is detected you can stop the rollout and get it fixed.
I hope these tips help your next rollout go smoothly.