Every mobile app developer can know when they have to release a new app version to the store. Not only one, but a couple of test versions in one day. It is so delaying, isn’t it? How to deal with this problem?
Once upon a time…
One year ago, we finally merged two branches into one master branch. And in this branch, we have common code for iOS and Android. You can ask now: “Did you have two separated branches, one for Android and one for iOS with duplicated code?”. We sadly answer: “YES”. Yes, we had 10.000 lines of unmerged code.
Since we have common code for both platforms, development is easier, faster, more convenient and more effective. Write once, run everywhere. One code works on multiple mobile platforms. So amazing, isn’t it? I mean, there is one more hook. If I write once, is it possible to build and deploy it at once?
When we created a new feature, then we were so happy, that we can release it to our clients. We spent a lot of time programming, debugging and testing. Only what we wanted was to build and release the application as fast as it was possible.
Let’s take a look, what do we need to create an app release:
1. increment Android code number and app version,
2. sign the application for Google Play (we did not have auto signing until now)
3. build the Android application,
4. upload the app to the Google Play
5. prepare a changelog and submit all steps,
6. open Xcode,
7. increment iOS code number and app version,
8. build the iOS application,
9. confirm all validation steps for upload,
8. wait for upload,
9. open AppStore Connect and log in,
10. create a new release and add changelog,
11. confirm all steps to make the application be live.
All these previous steps we did manually each time we needed to. In a couple of cases, these steps could take a lot of time. If we were releasing also test application, during one day it took a couple of hours.
We realized, that something is wrong and we can not continue like this in our future development. We started to develop a lot of new features. Every feature needs to be live. Each app improvement or bug fix needs to be live. We need to stay alive. We need to automate our workflow.
Just imagine, if companies like Facebook, Airbnb or Google are doing all of this manually. I know, that you cannot imagine it because it is unimaginable.
After a couple of team meetings, discussions and resources researching we found Fastlane. As they have on their website, it is the easiest way to build and release mobile apps. – Hell yeah! Fastlane is a tool that we need to have!!!
First implementation and studying documentation, testing and adaptation took a little bit more of time, but the result and value brought to our development are very effective. We automated and saved several steps of manual work and a couple of steps we transform into the one terminal command. We do not need to open Google Play Console or Xcode anymore. We do not need to open native code and increment version numbers manually anymore. Last but not least, we do not need to check if the application is uploaded to the store correctly. Do you know why? Because of thanks to Slack implementation into Fastlane.
Also, thanks to react-native upgrades, we do not need to sign Android apps separate from the building.
One more thing I would mention is that changelogs are included in the metadata. We can update it in our IDEs.
Just compare the steps what we need to do today with previous ones:
1. run command to deploy Android application,
2. run command to deploy iOS application,
3. some kind of severals checks,
4. drink coffee ☕️ (or whatever).
Between the above-mentioned steps, we do not waste a time and we do other prioritized tasks. We can also unit the first and the second step because Fastlane is adjustable. But to be honest, sometimes we need to release a minor version with bug fixes separately.
Do not waste your f*****g time and start to automate your workflow. Fastlane allows you not only deploy your app automatically but also other amazing stuff that you run from your terminal. Do not be lame who is afraid of verified methods. Try something new, do an experiment!