Mobile App Platform Support Dilemma
Android and iOS have de facto become predominant platforms in today's mobile app universe. Therefore, it is a foregone conclusion that a mobile app must support iOS and Android versions to reach the most extensive possible user base.
Developing and maintaining two versions of your app on each platform takes considerable work. You would need two technical teams, each with unique skill sets to focus on continuously delivering quality outcomes. Not only can this be a costly proposition, but it also presents tremendous technical challenges in keeping the development effort in sync for both platforms.
Another daunting complexity is the addition of a third tier which heaps on the support of the web platform to bring on board the non-mobile (desktop/laptop) users to take advantage of the same app functionality mobile users do. Therefore, depending on the complexity of the user base, as many as three platforms, iOS, Android, and web, needs to be supported to deliver identical functionality to the users.
Maintaining three code bases can become a monumental undertaking in executing effective coordination and management. One solution to this dilemma is to use cross-platform tooling, such as React Native, to utilize one code base to deliver apps across all three platforms. Merging the three code bases into one is the most optimal approach, and it works in most app development cases.
But what if you have already developed three code bases? How, then, do you continue the arduous journey of maintaining your app? There is, of course, the option to switch to a cross-platform tool, but that can be too disruptive and a highly costly process. Another option is removing support on one of the platforms, thereby reducing dev operations from three to two platforms.
Removing platform support may seem like a drastic solution, but it is not as disruptive as it sounds. We will not so much remove support as dilute support for a single platform, so the idea is to remove either the iOS or the Android platform support and substitute it with a native app that runs the web version within a webview container.
This approach will likely downgrade the app user experience from a native platform. However, if any given platform constitutes less than 25% of the overall user base, then providing it full native functionality support portends to be a misallocation of resources.
In other words, if most of your user base is iOS, as is usually the case within the U.S., your equal resource allocation to provide Android and web support constitutes a misallocation. In this instance, to properly allocate resources, removing native Android support and substituting it with a native Android app that containerizes the web app will be the correct approach.
With this approach, the Android user will not receive the most optimal user experience; however, the app will still be accessible and usable. It is also possible that an Android user can run the app on a web browser within an Android device or a desktop computer for a better user experience than the containerized native app version.
Removing support from one platform will reduce the development teams from an onerous three to a more manageable two. There will be a significant cost reduction, and the development resource allocation will more accurately reflect the composition of the user base.
Another option is to use this approach to implement a more uniform development environment. Once a less utilized platform is deprecated, we may divert the freed resources to assemble a cross-platform team to create a normalized solution that supports all three platforms using a single code base.
Short-term budgetary constraints and the criticality of providing platform-specific support across the board are the primary drivers of implementing this approach. Ultimately, moving to a cross-platform solution will incur significant cost savings as operations will be winding down from three development branches to one.
Maintaining three development branches (iOS, Android, and web) is untenable in today's increasingly complex technology sphere. The appetite for delivering more sophisticated features to end users continues to strengthen, thereby increasing the need to streamline and more efficiently manage the app delivery pipelines. App developers must consider choices that simplify delivery or face issues that may require significant expenditures to find an optimal resolution.
Comments
Post a Comment