Native development, React Native and Flutter: selection criteria
Already at the design stage of a mobile application, it is important to understand which language is more profitable to use for a particular project. Along with native development (for example, for iOS – Swift or Objective-C, for Android – Java or Kotlin), cross-platform frameworks such as React Native and Flutter are used. We at SimbirSoft offer several criteria that will help both a business and a mobile developer make a choice.
Problem of choice
There are already about five billion smartphones in the world, according to various estimates, up to 80% of them use the Android operating system, and less than 20% use iOS. And yet, each country has its own characteristics, for example, in the US, more than 65% of smartphones run on iOS. When creating mobile applications, you most often need to release versions on both iOS and Android. To do this, you can turn to native or cross-platform (“hybrid”) development.
Native development is a classic solution that requires writing applications for each platform separately, using different languages and taking into account the features of each platform. When creating multiple versions, multiple teams are working on a project at the same time.
Thanks to cross-platform frameworks, it became possible to “kill two birds with one stone” and prepare versions for iOS and Android with the help of one tool. Among the frameworks, the following are especially widespread:
— React Native by Facebook
for iOS, Android and Windows apps
— Flutter by Google
for Android, IOS and Fuchsia applications (see our article on Habré for details)
uses the Dart language, which is also used for web programming.
React Native and Flutter are growing in popularity, albeit at different rates, according to Google Trends.
Both native and cross-platform development have their own characteristics. We used both approaches in the practice of the mobile division of mobile.SimbirSoft. Among the advantages of native development are the following:
stable and fast operation of the application;
maximum application lifetime;
the application is more flexible and scalable due to the use of “native” tools;
less restrictions in architecture and functions;
The interface exactly matches the platform.
Cross-platform frameworks “customize” the application for multiple operating systems, so there is no need to create unique elements for each platform. As a result:
fewer specialists are needed;
takes less time and resources;
development speed is increased.
If the application logic is the same on all platforms, and the interface is simple, hybrid development helps to bring the product to market faster. We recommend frameworks like React Native and Flutter under the following conditions:
if you need to write a prototype of an application for several platforms in a short time;
if the application takes all the information from the server, the logic is implemented on the server, and the animation and interface are of no fundamental importance;
if a minimum number of native features are used, such as push notifications, in-app purchases, geolocation, etc.;
if modest performance is acceptable, and the content is loaded from the Internet.
Native, React Native and Flutter Selection Criteria
Some companies, when they turn to us to develop mobile applications, note the cost as one of the most significant criteria for them. At the same time, the cost and the need for specialists depend on the development method.
As a rule, a mobile studio has sufficient resources for native development of an application of any complexity.
React Native and Flutter
There are fewer specialists in these areas on the market. Difficulties are possible when developing large applications.
We recommend native technologies to businesses when the application is designed for long-term operation (in other words, “lifetime”). It is also beneficial when there is a need for high performance, complex interface and animation, low power consumption, integration with third-party resources (API, etc.). Native applications are more profitable in the long run by reducing the cost of technical support.
We recommend cross-platform technologies for rapid hypothesis testing, development of prototypes and applications with a clear life limit, for example, designed for certain events.
for complex applications – we recommend native development;
for simple applications – hybrid.
2. Speed + fit for the task
Time to market (time-to-market) is determined primarily by the size of the available team and the features of the mobile application.
Working with cross-platform frameworks can be more profitable and faster if the application is simple, with the same UI, without platform-specific details, such as access to the camera, work with the file system and fingerprints, runtime permissons. Here, hybrid development saves time by reusing almost all code and UI for two platforms. However, if you need to create complex custom views, cross-platform development slows down.
Speaking of mobile application development time, it is important to understand that there is no “average time for a hospital”. For example, in our practice, we released a banking mobile application in 100 days, and now we are participating in the further development of this product. At the same time, there were both simple applications (the launch period was about two weeks), and large-scale projects with a development period of more than a year.
3. Security and perspective
For businesses, when choosing a language, it is important to evaluate its reliability and security today from a technical point of view, as well as the prospects for further development, the risks of obsolescence.
In terms of reliability, native development is ahead of all its competitors. The development of the main libraries has been going on for more than one year, most of the bugs have already been fixed in them, native languages \u200b\u200bsuch as Java, Objective-C, Swift, Kotlin are constantly evolving. Among mobile developers, you can hear opinions that in the 2020s native development on Android will be partially replaced by Flutter, but for now this is just a guess.