Table of Contents
It is already hard to develop and maintain a high-quality app, and it takes a lot of time. But the release process itself becomes really hard and takes much more time for mobile developers. This issue became a really big thing for companies and gained so much attention, so they had to make unusual decisions and allocate extra resources and staff for release management or technical product management.
The moment that makes the situation really problematic is once a release is out, you can never turn it back. Risks could be minimized by the use of feature flagging, but shipping binary is still an irreversible action.
Perfect solutions for mobile app releases could never be found, but still, there are a lot of practices and tools to make things easier for your team. In this article, we are going to highlight some typical problems that can occur while developing apps for shipping, and offer some practices that can help you lower friction and ship updates with more confidence.
The challenge of mobile development
Developing mobile apps is highly complicated. You have to count not only basic application development but pay attention to different screen sizes, locales, platforms, and hardware. While web developers also have to take care of some of those elements, they don't have to worry about the approval by a third-party store, or ensuring that users are going to update their applications. All browsers and servers update automatically.
But, developing for mobile platforms like IOS or Android is entirely different. Even a minimal update on your build needs to be approved before you can upload it to the app store. After your update is approved, you have to wait for app users to install it. Most of the users are unable to make automatic updates for their phones, even if there is some percentage that did not block this function.
Testing and QA are also quite different in mobile development than on web development. Most teams have physical hardware in a device lab only for manual testing. That makes things really expensive, especially now, when most developers are working remotely.
Two major models in mobile development
As long as all changes and releases must be approved by app stores, communication with marketing support and the leadership team is a key moment, as much as timing.
Of course, every company is different, but all mobile development release processes can be grouped into one of the categories:
When the moment of release comes, only final, ready-for-production bug fixes and new features will make it into release. Every other change is waiting till the next release train to go.
These models are really helpful when it comes to shipping updates frequently and make developers focus on small details. This model was adopted by companies like Facebook or SoundCloud.
From the user's point, the release train model is really good. Users can see regular updates and growing stability and other quick improvements, all of which make an impression that app development is active and ongoing. That also means that all necessary bug fixes and updates will go as fast as possible, which provides the best user experience.
According to this system, an update is released by developers only when a specific, predetermined set of features is complete. That lets developers focus on getting an entire feature complete and not warring about the deadline of the next release train.
From the user's point of view, this model can be both good and bad. On one hand, fewer updates give opt buyers more visibility, on the other hand, it gives users a sense that your application isn`t actively improved.
It is important to have an integrated release plan, but there are many details of the process that you can't predict. The team has to build binaries, and test the app, not to mention adding supporting screenshots, release notes, and metadata. After installing you still need to monitor crash reports and incoming feedback.
Besides, there are a lot of steps between code writing and making the updated app available in app stores. Most of the steps are really time-consuming.
What is really good is that there are some time-approved methods to ship mobile apps with less friction and more confidence.
Automated testing and continuous integration
Automatizing the testing process is quite a good decision for any kind of software development, and for mobile apps, it becomes even more possible and needed with time. mobile testing frameworks like Appium, Sauce Labs, and Mobot can give you different abilities for automated testing.
Usually, that is a good idea to combine automated testing with continuous integration, which can be made by platforms like CircleCI, GitHub Actions, and Jenkins. The tools can run linting checks, static code analysis, and any other task.
Third-party involvement makes it impossible to automatize the whole process of release. But there are a lot of tools that can help you move in this direction: for example, you can run automatized releases locally.
Clear communication channels
That moment gets more and more important while your team is growing. It usually takes some special management and organization skills. But you must never forget how problematic all information and communication burdens can become without proper management and organization.
By following these tips, you can minimize friction and increase confidence in the mobile app development and deployment process. This can lead to faster release times, fewer issues, and greater overall success for your app.