In this article, I would like to present a short guide on how to release mobile apps. I’ll emphasise the internal releases. I’m also not limiting myself to Android, as I believe this may apply to iOS as well.
I split this article into some points just to increase readability. If you’d like to get to know more, please stay with me! I hope you will like it.
1 . Make sure all your tests pass ✅
If you write end-to-end unit and integration tests, you should always take care to check their output. If they fail, make them work.
2. Perform a clean full build of your app ✅
The full build can be performed on your local machine as well as using Continuous Integration.
If you or your company own a server, you can set-up your CI flow using Jenkins (which is free open source automation server). If not, you can easily use one of many CI services available on the market. I can recommend, for example, Bitrise, CircleCI, Travis and Bitbucket Pipelines.
Travis is already integrated with Github, so I if you have a paid plan, it could be your choice. If you use Bitbucket, it is the same for Bitbucket Pipelines.
Bitrise has many great integrations with services like Slack, Fabric, XCode Archive, CocoaPods, Gradle Runner, Jira and many more. I wrote a short article about CircleCI some time ago, so if you are interested, you can check it out on my blog.
3. Perform static code analysis ✅
Make sure you use tools like:
- Lint (for Java and Kotlin which is available by default in Android Studio ver. 3.1 and above), ktlint, pmd, checkstyle, findbugs, detekt, gradle-static-analysis-plugin for Android
- OCLint, tailor, SwiftLint, Clang Static Analyzer, Infer, SwiftFormat, Swimat, Faux Pas for iOS
Of course, use only the tools you find helpful to increase the quality of the project you are currently working on.
4. Prepare debug and production builds for internal needs ✅
Make sure you prepare a debug and production version of your app and release it internally for testing. You should also use crash reporting tools like Instabug’s crash reports or Fabric (Crashlytics).
It is vital to check how your app works with a debug / staging API and then with production. For Android, it also important to obfuscate code and check if it is shrunk properly.
When releasing the version for your team, you can use TestFlight for iOS and Google Play Test channel for Android. You can also consider free tools like Fabric (which will be shutdown in mid 2019) or Hockey App which is currently transitioning to App Center.
5. Automate ✅
Preparing builds can be also automated. You’ve probably heard of fastlane. It is a free tool for automating screenshots, beta deployment, App Store / Google Play deployment and code signing. It is supported by all the CI and distribution services which I mentioned earlier.
The configuration for Android and for iOS is quite straightforward but is possible only if you have macOS. Unfortunately there is no non-macOS platform support at this moment. This is painful for Android developers who code on Linux and Windows. But there is a solution! 🎉🎉🎉
Gradle Play Publisher is a Gradle plugin that automates uploading an App Bundle or APK and other app details to the Google Play Store. And it is a great alternative to Fastlane. I used it quite some time ago, it works really well and I can recommend it. The documentation is comprehensive and it allows you to smooth out configuration of the tool.
6. Know and listen to your users ✅
So you checked your code, set up tools for an automation, prepared a fully operational and tested build and released it to your team for testing. But how many times have you felt like no one cares or does not have time to give you feedback? I know from experience that it is really hard to engage the team to check and play with your newly released app.
The answer for this is Instabug. I did a lot of research about tools which help to gather feedback, bugs, reports etc almost 3 years ago, and since then I have stuck to Instabug.
It is really easy to integrate with any of your apps (it supports Android, iOS, React Native, Xamarin, Unity, Cordova) — it is just a few lines of code.
How you can use this tool:
- Your users can just shake the phone and write feedback with already taken screenshots. They can even draw or record a movie, what is missing or how to reproduce a bug. It is super helpful.
- Instead of contacting developers via contact forms, end-users can ask about features or give feedback using In-App Chat. This helps a lot in connecting with the users all the time.
Also, developers can easily reply back to users who reported bug reports or crashes to get more context from them or thank them or even tell them that the bug/crash was fixed, and they can update an app to the latest version.
- Use In-App Feature Requests and support your backlog by user-driven prioritising. Thanks to this feature the team and the product owner will know which feature to release first.
7. Monitor the engagement ✅
The app is in production, but you have this feeling that people do not use your app. What to do then?
- active users,
- session intervals,
- time in the app,
- screen flow,
- life time value.
Checking these KPIs is also vital when releasing new app features to production. Do not underestimate them. 😎
I believe this is it. I hope you enjoyed the checklist. If you have any insight or other tools which may help with application release, please let me know in the comments. You can also check out my other articles:
- Lucky 7 new tools and plugins for Android developers & designers
- 25 new Android libraries and projects to check at the beginning of 2018
- Terminal on steroids