Wolfia logo
Help

Monitoring your mobile app releases

How to ensure high quality releases for your mobile app with monitoring and provide a great user experience

Naren

March 16, 2023

Photo by Rita Morais on Unsplash

When you release a new version of your mobile app, you want to ensure it works as expected in production. If it doesn't, you want to know about it immediately. This is where monitoring comes into play.

This post will examine why monitoring is essential and how to monitor your mobile app releases.

Why should we monitor releases?

The goal of monitoring releases is to ensure your new features work as expected and reduce the blast radius of a release in case it doesn't work as expected. This is essential to provide a great user experience.

Mobile releases are quite different from other software releases on other platforms. Unlike web and server-side deployments, mobile apps are distributed in the form of app binaries through the app stores that need to be downloaded and installed by the user on their devices. This means:

  1. You cannot instantly deliver an update to all your users since they might not all update their app at the same time
  2. You need to ensure backward compatibility for the app to work as expected for users who haven't updated their app
  3. You need to de-risk your releases by testing them with a subset of users before releasing them to the public
  4. You need to have server-side fallbacks in case the new release doesn't work as expected

How do we know if the new release works as expected?

  • You can use automated integration tests, but more is needed as you can't test all the possible scenarios because of combinatorial explosion.
  • You can test it manually with quality assurance (QA) or internal users, but this is not scalable as you add more features and complexity grows.

While the above methods are helpful, more is needed to ensure your app works as expected in production. So, the final piece is to monitor your app releases.

Monitoring is collecting data about your app and using it to identify and debug issues. This is an essential step to ensure the smooth operation of your app. By closely monitoring releases, you can identify and address issues before they become critical.

How do we reduce the blast radius of a release in case it doesn't work as expected?

  • Using nightly builds to release a new version to your internal users. This is an excellent way to test the new version with your internal users before releasing it to the public and receiving early feedback.
  • Using staged rollouts to roll out a new version to a subset of users and monitor the impact of the release. And then gradually roll out the new version to all users.
  • Using feature flags to enable/disable features in production. This allows you to release a new app version with new features without affecting existing users. You can slowly roll out the new features to a subset of users and monitor the impact of the release.
Rollouts

How do we ship a new release quickly to fix a critical issue?

Once an issue has been identified, it's best to check if a backend fix is possible. If so, you can push a fix through the backend without a new release of your app. This has multiple benefits:

  • You can instantly fix the issue.
  • You don't need to wait for the app store to approve the new version of the app.
  • You don't need to wait for the user to download and install the new version of the app.

However, in the case the issue lies in the app, you need to release a new version of the app. In this case, you need to ensure that the new version of the app is stable and doesn't introduce any new issues. This is usually called a "Hotfix" release.

Even with Hotfix releases, you need to make sure the user downloads and installs the new version of the app. And in the case of a critical issue (i.e., security), you need to prevent users from using the older versions of the app; ** force upgrade** can come in handy.

Force upgrade

This is usually an SDK that allows you to force users to upgrade to the latest version of your app by blocking the UI.

How do you monitor releases?

There are multiple parts to monitoring your app releases.

Crash reporting

Crash reporting is the process of collecting crash reports from your app and analyzing them to find the root cause of the crash. Popular crash reporting tools include Embrace, Firebase Crashlytics, Sentry, Instabug and Bugsnag. These tools provide detailed information on the crash, such as the affected devices, operating system versions, and stack traces, which helps developers identify and fix issues quickly. Integrating a crash reporting tool into your app is essential for monitoring the stability of your releases and ensuring a high-quality user experience.

Crash reporting

Performance monitoring

Performance monitoring focuses on tracking and optimizing the speed and responsiveness of your app. Tools like New Relic and AppDynamics help you identify performance bottlenecks, such as slow network requests or resource-intensive operations, that can negatively impact the user experience. By monitoring performance metrics, you can proactively address issues and improve your app's overall performance.

Performance monitoring

Product Analytics

Product analytics tools, such as PostHog, Mixpanel, and Amplitude, help you understand how users interact with your app and which features are most popular. Monitoring user engagement and behavior allows you to make data-driven decisions about which features to prioritize and improve.

Analytics also provides valuable debugging information for production issues. They are an excellent tool for identifying the root cause of an issue. For example, if you notice a sudden drop in user sign-up, you can use analytics to identify the actions which led to the drop.

Product analytics

Adoption monitoring

Adoption monitoring involves tracking how users are adopting the latest version of your app. Adoption metrics help understand which versions of your app are used by users.

Adoption monitoring

With these tools and appropriate (on-call) processes, you can ensure stable app releases. However, much manual work is still involved in monitoring releases. This is where automation helps!

Automating releases with Fastlane

Fastlane is an open-source tool that automates the deployment of mobile apps to the App Store and Play Store. Fastlane is an open-source tool that automates the deployment of mobile apps to the App Store and Play Store. It simplifies releases by automating code signing, app submission, and screenshots generation.

Fastlane

While Fastlane is a powerful tool for automating app releases, it does not provide built-in monitoring capabilities. To ensure the success of your app releases, combining Fastlane with monitoring tools discussed earlier in this post is essential.

Wolfia automates the release process and integrates with monitoring tools to provide a complete solution for monitoring mobile app releases and automated staged rollouts. If you are interested, you can try it out for free.

Wolfia

Final thoughts

Automating the app release process removes manual steps and reduces the risk of human error. Combining automation with monitoring tools can ensure a high-quality user experience with reduced operational overhead.