It’s time for the release train to finally leave the station.
You’ve spent weeks working on new features and functionality for the next version of your mobile app. Long hours of planning, discussions with stakeholders, coding, debugging, testing, and integration all culminate in one big moment where your code makes its way into the world and changes how your app works on thousands of devices.
For many developers, release day can be as stressful as it is exciting. No matter how many times you test the release candidate, there’s always a chance your new release will break the app, cause new types of errors, or make old ones return.
Be proactive in detecting errors by responding to issues quickly and putting out fires before they spread. This approach involves monitoring your application before, during, and after the release:
- Before the release – Test your release candidate for all types of devices, screen sizes, and operating systems.
- At the time of the release – Release the new version in phases to stay on top of any errors that may arise.
- After the release – Continue monitoring app performance on all new installs to address any issues.
Testing before the release helps you identify critical bugs and usability issues, assess device compatibility, and improve user experience. Before you get to the release stage, test the alpha and beta builds, debug at every stage for all platforms, and then test the final release candidate. At each stage, monitor crashes, network calls, and UI hangs.
When testing your app before the release, keep an eye out for issues such as:
- Crashes
- Freezes
- Performance slowdowns
- Faulty APIs
- Launch failures
- Excess power consumption
- Network traffic overloads
Low storage space, bad memory management, too many threads, slow internet connections, or errors with third-party APIs can cause these issues.
Measure app performance with your Apdex score
A comprehensive way to measure your app’s performance before the release is to track its Apdex score. Your Apdex score, measured on a scale of zero to one, represents the overall performance of your app. The higher the score, the better your app is performing.
Apdex accounts for crashes, app launches, app traces, network calls, and UI hangs and measures users’ sessions for smooth and speedy performance. If a majority of your users face no issues, their app launches quickly, and they progress from one screen to another in less than a second, your Apdex score will be higher. Apdex is a more useful metric than measuring wait times alone, as it gives a more complete picture of the app’s overall performance and user experience.
Debug for Android apps
For Android apps, developers can debug the app in Android Studio. You can test it on any device, debug the UI, inspect network traffic, and see if there are issues with your database. You can also run ‘local unit tests’ on virtual machines and instrumented tests on real hardware devices.
Use unit tests to check coding that doesn’t call the Android API. Instrumented tests, on the other hand, help you determine whether the Android Instrumentation APIs are working properly. In most cases, you will need to run both tests. For example, in a banking app, a unit test will help you ensure the feature that shows the transaction history of a user works as intended. For the same app, instrumented tests will help you establish that the navigation works or the Android APIs are called properly.
The Android Studio also allows you to test your app one final time in release mode, before you version and release it.
Debug for iOS apps
For iOS apps, Apple recommends you test the beta multiple times before it can promote it to the status of a release candidate. You first test your app in Xcode, Apple’s integrated development environment, and then distribute it to beta testers.
Apple recommends using TestFlight, a beta testing app, to invite beta testers and test multiple builds of your app. Once beta testing is done, you can submit your app to the App Store. Apple also provides developers with beta versions of its upcoming operating systems, so you can test your app for compatibility.
Pre-launch testing makes for a smooth release. However, issues can surface during and after the release, which makes staged rollouts a great strategy for releasing your app.
With a phased or staged rollout, you release the new version of your app to a small portion of your user base. This way, you monitor your app’s performance in the real world before shipping the product to everyone. You can release the new version of your app to a random number of users, users specific to a certain region, or users with specific levels of engagement. Both Google Play and the App Store give you the option to choose a staged rollout when releasing your app.
Monitor errors and feedback to identify regressions
A staged rollout gives you the time to fix small errors that arise or roll back the update in the case of a major issue. However, it also creates its own challenges. In a staged rollout, users who get the new version of the app are unaware they are part of a staged rollout. When these users come across a bug or an error, they may not report it right away because they assume that everyone else is facing the same problem—surely someone has already reported it.
There are two ways to avoid and address commonly unreported issues:
- Use application performance monitoring tools like Instabug so you find out about crashes, UI hangs, and similar issues before anyone reports them.
- Use in-app feedback tools such as short surveys and live chat to reach out to your users and gather their opinions on the new release.
In-app surveys that are short and ask specific, multiple-choice questions will help you find the weak aspects of your release. The survey should be frictionless to the user experience; avoid triggering it immediately after the user updates to the new version, or when they’re in the middle of completing a task. Sometimes, new releases cause old errors to resurface. To keep an eye on old, resolved issues, set regression alerts, and be the first to be notified when an old issue appears in a new version of your app.
Follow the example of successful apps
Phased rollouts are best used for updating existing apps, especially if you have thousands or tens of thousands of users, because you’re able to deploy your update without disrupting the experience of all of your users at once. Doing a big-bang release, where the new version is rolled out to everyone simultaneously, is risky. That’s why apps with large user bases opt for phased rollouts.
Netflix switched to phased rollouts because the company is simply too big to roll out new versions of the app in one go. Phased rollouts and continuous performance monitoring enabled the company to prevent poor releases. This strategy also helps Netflix scale its infrastructure and backend services efficiently, as it gradually rolls out the new version to its user base.
For new apps, roll out an MVP
When introducing a new app, take the minimum viable product (MVP) to market instead. An MVP contains the minimum number of possible features needed for your app to run. Since it does not have too many features, it’s a smaller, almost bare-bones version of the app.
From a business point of view, an MVP helps you understand if your product resonates with its target audience. In terms of performance monitoring, you get to see if the core features you built work as intended with multiple versions of operating systems and different types of devices.
Also, if you inform users that the app is an MVP, everyone who downloads it knows they are signing up for an early version and will be more inclined to share their feedback on the app’s current and planned features.
Rolling out an MVP for a new app provides the same advantages as a staged rollout for a pre-existing app. The number of users who install it grows slowly every day, allowing you to monitor app performance, fix bugs, scale up, and even roll back the app if needed.
Monitoring doesn’t end with the release. For a successful app, continue to monitor its performance through the next release and beyond.
Continuous app monitoring throughout the release management process produces:
- A higher-quality app and better user experience
- Reduction in downtime
- Faster issue resolution
- Increased security and protection
- More time available to dedicate to developing new features
With continuous performance monitoring, you detect issues and their root causes quickly. You can follow user journeys, see exactly what they were trying to do when the app crashed on them, identify the error, and resolve it.
Application performance monitoring (APM) also helps you detect attacks and suspicious activity quickly. By setting trigger alerts for an unusually high volume of network requests coming from a large number of mobile devices, you can identify DDoS attacks and protect yourself and your users.
APM also helps you use your resources efficiently. You minimize the time you and your team would otherwise spend debugging and finding errors, giving you more bandwidth to work on new features and functionality.
No matter how much you test your pre-release version, errors can always surface as more and more users download and start using your app. Apple’s release of iOS 16.0.1 provides a good example. Apple released the new version of the iOS to address authorization and data migration issues with iPhone 14, but within days of the new release, the company announced it was still working to resolve issues with FaceTime and iMessage. A company as large and dominant as Apple, after all the pre-release testing and phased rollouts, still faced post-release issues that it had to address in the next release train. Thanks to APM, the company was able to stay on top of the situation and keep its users informed.
Waiting for the user to report an issue is a risky move. Most will uninstall the app or give it a one-star rating and a negative review instead. By the time you hear from some of your users about a recurring issue, the damage to your app rating is done.
By monitoring your app’s performance throughout the release cycle, you learn your app’s performance issues before anyone even reports them. This gives you a head start on fixing the issue, while giving you the tools to keep your user base informed of the steps you’re taking and reducing the mean time to repair (MTTR).
Instabug helps you monitor your mobile app's performance throughout its life cycle. You can set alerts for network requests that exceed your set limits, cold and hot launches that take too long, crashes, frozen screens, and slow performance. You can also track custom performance metrics to identify network- and client-side issues.
This comprehensive toolkit ensures you’re monitoring your alpha, beta, release candidate, and final version around the clock, giving you everything you need to identify and eliminate any errors from your app to ensure your release is seamless.
Learn more:
- App Launch Optimization: How to Resolve Slow Startup Times
- Mobile App Network Performance Monitoring and Debugging Guide
- Understanding Cold, Hot, and Warm App Launch Time
- How Often Should You Update Your Free Mobile App?
Instabug empowers mobile teams to maintain industry-leading apps with mobile-focused, user-centric stability and performance monitoring.
Visit our sandbox or book a demo to see how Instabug can help your app