Versioning on Trendyol iOS App Releases
When will the new update arrive?
Which version are you using?
We all know that the apps we use have a version number. These version numbers increase as new features are released or bugs in applications are resolved.
Well, how we manage the process of publishing new features in the iOS Apps?
Before releasing a new version, we run regression tests to verify that the existing functionality in the application is working as expected and that the new changes do not create any flaws in the functionality that was running prior to this change.
In this process, firstly, when we are ready for regression, we create the Release Candidate (RC) package, which includes the new features of the application.
Each business has regression sets containing test scenarios that will meet all the requirements of the software. We test each business separately with these regression sets. The regression process continues until each business is tested and errors found during the regression test are corrected. You can see sample regression sets of businesses below.
When all criteria are at an acceptable level, the regression process is terminated. After the test is terminated, we are preparing an environment for the update of the new version to TestFlight by increasing the version in App Store Connect. Then we start the upload process by typing the following command on Friday. After the new version is uploaded to TestFlight, we beta tests with product managers. In this process, if there is nothing preventing us from sending the application to the store, we select the relevant version to App Store Connect and send the application to review.
We decide how to increase the version number according to the changes we made after the last version.
- An update with small changes and bug fixes where there are not many changes -> Patch
- An update for new functionality -> Minor
- An update for major changes (For example: Food Channel project) -> Major
Friday is an automation tool that deals with the Appstore side and skynet enterprise deployment. You can reach the article about how we trigger our automation tools and why we use them as iOS Team which is written by my teammate Anıl.
You can review the process of sending packages to the Appstore and what you wonder about Friday from my teammate Anıl’s article.
TestFlight is a platform that enables the creation and management of test programs for versions of applications before they were released on the App Store.TestFlight application was published by Benjamin Satterfield and Trystan Kosmynka in 2010 as an application that includes Over-The-Air feature for both iOS and Android. The Android support of the application, which was purchased by Apple in 2012, was cut by Apple and made available only for iOS.
We release the package when it is approved by the App Store. First, we send the version to 1% of users. Later, 7% and 15% are opened to users and 100% of users are opened within 7 days. It also does not allow automatic updates for users before 7 days. However, if the users are within the percentage opened within 7 days, the application is automatically updated for these users. Otherwise, they need to update the application manually from the app store.
So what are we doing if there is a critical issue with the current version?
What is Hotfix?
Hotfix releases are not preplanned because it is made to fix critical issues with the current version. A hotfix is a significant bug that affects the majority of users for which there is no reasonable workaround.
“Are we making hotfix for every problem?”
Of course NO!
So how do we decide which bug is worth fixing? Let’s see together…
First, we analyze the problem and determine the area of influence of the problem. Then we decide whether to do the fix or not by considering the questions below.
- How serious is this error? Does the problem involve a security exposure or data loss? Is functionality blocked? If so, how important is that functionality?
- Does it affect most users?
- Does the error affect a common or major function?
- Is there a workaround? Can those affected be shown these workaround?A new problem with previously working functionality?
- A problem with new functionality?
- An old problem that’s been in the product for one or more previous releases?
- How long will it take to implement and test a fix?
- What is the scope of these changes?
Next Release: affects the user but is not critical urgently. So it should be fixed in the next scheduled release.
Next Release: affects the user but is not critical urgently. So it should be fixed in the next scheduled release.
Upcoming Sprints: Bugs that are not in a hurry but need to be fixed. So these are added to the backlog.
We are also looking at when the next release will be scheduled. If the next version is within a few days, we decide on the hotfix process according to the answer to these questions and the urgency of the problem.
How do we handle hotfix in agile environment?
We all know that one basic rule which is followed in the scrum is to not take any new or additional tickets that affect the sprint goal. If the ticket is created in between the sprint and has no urgency, we do not consider. We add it to the backlog for the next sprint. However, if there is a bug, we prioritize it and include it in the sprint according to the priority of other tickets. If this bug exists in the current version, we add it with the Prod bug tag in the sprint.
If the bug in the current version was noticed during the sprint and there is an urgency, we include this bug in the sprint and hotfix the bug urgently.
Hotfix process on Trendyol iOS App
The hotfix process is when a major problem occurs at the production level, the solution to that particular problem is deployed. When the problem is resolved, we are preparing an environment for updating the new version to TestFlight by upgrading the version on App Store Connect. Then we start the process of installing the hotfix version by typing the following command on Friday. If there is no problem after the new version is uploaded to TestFlight, we notify Apple that we will release this version. When Apple approves the version, we release it.
First, the version opens to 1% of users. If no crash or other problems are observed in 1% of the users, we spread the version to all users.
I tried to explain versioning on app release at Trendyol iOS Team.
Thanks for reading! 👨🏼💻