Best Practices for Automating your mobile release train

Automate release management for your mobile app to reduce time and effort while improving the quality of your releases.

Naren · April 24, 2023 · 4 minute read

In our previous post, we explored automating the build and distribution of your app using CI/CD. Automating the mobile release train is the next step in optimizing your mobile app development process. Mobile app releases often require careful planning and coordination, which can be time-consuming and frustrating for developers and product managers.

The primary objective of an efficient release train is to consistently deliver your product to end users with minimal risk and effort. This includes submitting the app to the app store, making it available for users to download and install, and monitoring its performance and behavior to identify and address potential issues after the release.

A significant challenge with mobile app releases is the inability to roll back or release a fix forward quickly. This is due to the app stores' review and approval process, and the need for users to download and install updates. Consequently, a release containing a critical bug fix may take days or weeks to reach the end user. Automating the release process can help identify issues early on, fix them before they reach the end user, and prevent rushed releases.

Critical bug fix releases are known as hotfix releases. These releases typically take priority over other development work and require immediate attention. In addition to hotfix releases, there are scheduled releases planned and scheduled in advance. Scheduled releases usually introduce new features and functionality.

Minimizing hotfix releases reduces disruption for your team and provides a better experience for users. This is where strategies like staged rollouts and feature flagging prove helpful.

Staged rollouts/Phased releases

Both Google Play Store and Apple App Store allow you to release your app to a small subset of users before making it available to everyone. This is known as a staged rollout or phased release. Staged rollouts help you monitor your app and identify any issues before making it available to all users, reducing the risk of releasing a buggy app.

Staged rollout

On the Apple App Store, phased releases offer the option to release version updates over a 7-day period with specified percentages. You can pause the release for up to 30 days or accelerate the release to 100% of users.

On the Google Play Store, staged rollouts provide more control. You can release your app to a specific percentage of users and gradually increase the percentage over time. This enables you to monitor the app's performance and identify any issues that may arise.

Halted staged rollout

Monitoring your release is an essential aspect of implementing staged rollouts and phased releases. Tools like Sentry and Firebase Crashlytics help monitor your app's performance and identify issues. You can also use these tools to determine the percentage of users who have updated to the latest version of your app. For more details on monitoring your releases, check out our post on mobile release monitoring.

Feature flagging

Another valuable strategy for your release train is feature flagging. Feature flagging enables:

  1. Rollback - Quickly roll back a feature if it causes problems for your users, allowing you to address any issues rapidly.
  2. Development flexibility - Merge code to your main branch without worrying about breaking the app or releasing unfinished features. This avoids needing to build them in feature branches and dealing with merge conflicts.
  3. Controlled rollouts - Release a feature to a small subset of users before making it available to everyone. This enables you to monitor the feature and identify any issues before rolling it out to all users.
Feature flagging

Tools like LaunchDarkly, Flagger and Firebase Remote Config offer feature flagging capabilities. Feature flagging and rollouts provide extra safety and control over your releases. This is especially useful when releasing a new feature or app. You can use feature flagging to release the feature to a small subset of users and monitor the feature's performance. If the feature performs well, you can release it to all your users. If the feature is not performing well, you can quickly roll back by disabling the feature flag and fixing the issue before making it available to all your users.

Feature flagging allows you to rapidly iterate on your app without worrying about releasing unfinished features and enables merging code to your main branch without worrying about breaking the app.

Automate Your Release Train

Once you've set up your CI/CD automation, staged rollouts, and feature flagging, the next step is to automate your release train. Automating releases helps remove the decision-making about releasing the app from developers and product managers, allowing you to focus on building great products and delivering value to your users. With this automation, you can release your app with confidence and peace of mind.

The key to automating your release train is to have all the pieces in place. These include:

  • Automated builds - Validating your code and ensuring your main branch is always in a shippable state and automatically generating the artifacts to be shipped.
  • Automated releases - Shipping the artifacts automatically to the Android Play Store and Apple App Store and submitting them for review.
  • Release schedule - Agreeing to a release cadence and sticking to the release dates with automation. This schedule must be followed without exceptions, hence the name release train. We wrote a blog post about this philosophy.
  • Automated monitoring & rollouts - Automating the rollouts with monitoring enables the team to automatically ship the app to your users while reducing the risk of an issue affecting all users or spending a lot of time monitoring the crashes manually.
  • Alerts and notifications - An essential part of automation is keeping all stakeholders apprised of the state of the release. So it is important to inform them when a release goes out, if there are issues with the current release, if the release is halted, etc.

Having these components in place makes implementing a release train a breeze. However, not all release processes are the same, so some steps, like using the main branch for releases and having quality assurance manually test the app, can be configured.

You can automate your release train using a tool like Wolfia. Wolfia allows you to automate your release train by providing a simple interface to define your release schedule, build process, release process, monitoring process, alerts, and notifications. With Wolfia, you can automate your release train and release your app with confidence and peace of mind. We've built Wolfia with all these best practices in mind.

The next step is to implement an on-call rotation. This process is where you have a team of people responsible for monitoring your release train and responding to any issues that may arise. We'll discuss this in more detail in our next blog post.

You build it. We ship it.

Try for free ->