Solving Challenges with App Versioning
Topic: Common Mistakes
August 29, 2023
The number of app users is decreasing for no apparent reason. This is one of the nightmares of many app owners.
Thinking about this problem, as a developer I would like to share the story of one of our company's customers. It is a leading real estate marketplace on mobile and the web, with a huge user base and unrivaled dominance in a major US city. The project was developed by another team of developers in the early 2000s and came to our company much later.
When the number of app users suddenly started to decrease, the customer turned to us for professional help. He was afraid that he would lose the rest of his user base and his dominant position. He was also worried about his reputation, because negative reviews can be extremely damaging. They scare off potential customers and make it harder to restore a bad reputation.
The Root of the Problem
With the help of technical specialists, I found out that about 35% of users reported problems with the app. While a person was working in the app or exploring its new features, it suddenly closed or crashed. Annoyed and disappointed, users bombarded the technical specialists with angry messages.
When my colleagues and I got to the bottom of the problem, it turned out that some users did not want or could not update the mobile app on their phones to the latest version. The reasons varied widely:
- outdated devices,
- incompatible software.
Thus, the reasons were far beyond users' resistance to change.
In such cases, the only way to provide services to the app user is to properly set up the side of an app that is seen only by developers - a server side.
More Isn't Always Better
The project I'm talking about had four major updates, resulting in four versions. All were associated with different URLs, colloquially known as web addresses. Why is that a problem?
If previous developers wanted to make changes to the basic functions of the app, they had to go to the server side of each of the four versions. From time to time it happened that members of the previous team of developers forgot to make changes to all versions of the app. They did it in the fourth version but forgot to do it in earlier versions. This would cause errors and users would get different functionalities in their apps.
For example, there is a "user" object, to which they added a field called "favorite apartments." The mobile developers added in the app a field asking users about their favorite apartments. The backend developers, in their turn, added "favorite apartments" to the fourth version of the app, but forgot to add it to all other versions. What happens in this case? When the users of the first three versions access the "favorite apartments" field, the app crashes. Accordingly, the users get a message that there is no such field.
So we quickly came to the conclusion: we need only one version of the app that we will maintain.
Solution Lies on the Surface
How did we solve this problem? Instead of making changes to all four versions of the app, we did it to only one of them, for example V4. I can compare this to a tree, where the new versions of the application are the branches and the base version is the trunk. We, developers, call it the inheritance tree.
For example, when a person wanted to see his favorite apartments on the fourth version of the app, they were shown to him without any problems. When they came to the second or third version of the app, they were told that there was no such page. Subsequently, the user received a message asking them to update the app to the latest version.
So I only needed to make a change in one version. And everything kept working for both new and old versions. It didn't take long to see the result. The users complained less about the problems with the app crashing and became less likely to contact the technical support.
As for our customer, he felt like a mountain fell from his shoulders when we identified the reason for the decrease in the number of users, and found the best solution to this problem. He could finally breathe a sigh of relief because the user base stopped decreasing. Moreover, neither his reputation nor the app's unchallenged dominance in the city were no longer at risk.
The app owner was grateful to us for taking care of the problem and solving it as soon as possible.
My colleagues and I deal with absolutely various kinds of problems in app development. If the problem is related to a decrease in the number of users, it should be solved immediately, because time is playing against us. We have accumulated practical experience that allows us to confidently state that any problem is solvable if it is addressed by professionals.
"The less, the better" - This saying perfectly describes the above case. While having several versions of the app, it's better to select only one endpoint on the server side. This means that the inheritance tree should replace the versioning system.
Working with professionals will save both time and money. Experienced and highly qualified developers find the cause of the problem faster and offer the most effective solution.