“We need an application compatible with Android and iOS.”
This is a very common initial requirement to hear in a first conversation with potential clients. Except in rare cases where the application should run on specific mobile devices, covering both platforms is required so the product does not exclude a huge part of the users. Usually, this requirement comes with an important customer question: can you reduce the costs of developing applications using a cross-platform tool and “generate” versions for any device?
First of all, there is no “silver bullet”
An easy answer to the question, without considering in detail the client’s design and business requirements, should be received with suspicion. There will be a choice between developing two “native” projects with little or no shared code, using a multiplatform framework such as React Native or starting with a web alternative such as Progressive Web Apps (PWA). Each of these options may impose on the customer technical, financial, or distribution constraints that must be emphasized by the partner or development team.
Requirements: The devil lives in the details
Simple requirements such as “my app needs to show notifications from push messages” or “my app needs to be distributed by App Store” could already delete PWA as a design option because iOS does not show push notifications of PWAs and Apple does not allow this type of application to be distributed by the App store. On the other hand, the ease of distributing PWAs over the web without the need to post them on Google Play or the App Store can be seen as an advantage depending on the project goals. Other common requirements such as “my application needs to be integrated with Amazon Web Services (AWS)” may make Flutter, a multiplatform Google framework that has been gaining much prominence lately, expensive or impractical for the lack of an SDK for integration with the service. Although it is possible to circumvent this type of limitation by writing native code for each of the platforms, the additional cost decreases the competitiveness and the very advantage of developing hybrid applications. Therefore, a careful analysis of which platforms or alternatives can meet all the technical and distribution requirements of the customer is crucial before putting all the options on the table.
Investment and Talent
We could write an article for each of the development options, but the infographic above is an attempt to summarize some of the major pros and cons of each of them. From left to right, development investment tends to decline, as does the learning curve for Web developers.
However, in this direction, performance and the user experience are reduced, while the limitations imposed on project requirements are increased, especially when access to hardware functionality is required. It can be said that the right-most options in the infographic tend to be more cost-effective when the project is simpler, less hardware dependent, and more focused on illustrating data provided by a service or social networks. Still, such standards are often not enough for an informed decision making, and a careful analysis of a project’s specific requirements against the capabilities of each option is essential. In the infographic, as in this article, we mention only some of the main hybrid platforms available for each option. To choose them, we take into consideration the maturity, the support of the development community and the solidity of the companies behind them.
Making the decision
All things considered, when selecting an external partner it is important to have a time and cost estimate of the most conservative option – two native projects (Android and iOS) – to serve as a benchmark. Any option that results in an estimate close to the two native projects becomes less interesting, since these offer less project risk and higher quality. The ideal external partner should also present one or two alternatives to native development and, in case of rejection, provide an objective justification such as “we can not develop a PWA because your application needs to use Geofencing“. This type of detail is important because it allows some requirements to be cut if they are not essential, reopening the range of lower cost options. When you choose to develop internally with existing teams or hiring new developers, the programming languages and platforms on which these professionals have experience usually take a very heavy weight on their answers if they are asked about the best options. It is important to make sure that a team that is more Web-centric does not overestimate the capabilities of a specific framework and really ensures that all technical and distribution requirements can be met by the platform or tool they choose. On the other hand, developers for Android and iOS native platforms often discard hybrid or web options, citing impediments such as performance or disabilities that can actually be bypassed or tolerated. In some cases, a little proof of concept can be developed to “test” the capability of a technology and measure the learning difficulty it imposes on the team. A good choice among the different options available should be compatible with the resources available for investment and the expected return, but it should also ensure that the customer can focus on their business requirements without being held back from limitations imposed by the platform they have chosen.