Automate release management for your mobile app to reduce time and effort while improving the quality of your releases.
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.
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.
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.
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.
Another valuable strategy for your release train is feature flagging. Feature flagging enables:
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.
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:
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.