The twenty-first century is the century of mobile systems. People almost do not get their phones out of hand, and all websites have acquired an adaptive version that is convenient for any device. This has led to an increase in the need to create responsive sites and mobile applications, while the technologies, methods and approaches to their development are changing, becoming more complicated and supplemented with newer and newer nuances.
“In the beginning of 2014, a significant event for online business took place - for the first time in the history of the Internet, the activity of mobile users exceeded the activity of PC users.”
Development trends in this area relate to both design and development. But if the design of the interfaces is more or less clear (experts follow the standard patterns of various operating systems, whether iOS or Android), then in the mobile development industry, everything is much more complicated.
After deciding to create a mobile application, you have to face the difficulty of choosing the right artist. And here we meet the "enmity of clans" - the "clan" of the native and the "clan" of hybrid development - and anyone who is somehow connected with this claims that it is his approach that is the only true one, omitting obvious or non-obvious shortcomings.
Of course, the choice of technologies for developing your application can be entrusted to the executing company, but, based on personal experience in IT, I can say that companies promote specialists with the highest bid, or developers who have not developed live projects for a long time, or just the only one a free employee with more or less suitable specialization. Conscientious agencies, of course, will provide you with sufficient level of expertise to select the most suitable stack, but you can’t always be sure of the honesty and objectivity of offers from the company, and there’s no such possibility when choosing a freelancer.
In order not to get confused in terms and not fall into dust, simultaneously losing money, time and customers, it is better to understand how mobile development works. The article contains the necessary information to help you make a decision.
To begin with, let's see how the native development differs from the hybrid one.
“Cross-platform development allows you to create a mobile application that will simultaneously operate with iOS and Android.”
The most popular technologies for hybrid applications are React Native, Cordova, Ionic, PhoneGap. The principle is similar for all of them (to make web from NOTweb), although there are significant differences when applied in a real project. In addition to the obvious advantages - speed and cheapness - there are also a number of pros and cons that need to be considered when choosing this approach.
The main advantages of hybrid development are:
the ability to run the application on any operating system;
this type of development is faster, cheaper and easier with further support;
in comparison with the native development, this type is simpler, and therefore the risk of “bugs” and deviations from the technical specifications is lower.
The disadvantages are:
limitations that are not in the implementation of native functionality in UX;
response speed is slower than that of native applications;
limits to operating system-specific functionality.
As an example of an application developed using the hybrid approach, you can see: Instagram, Shazam. From personal experience, I can recall 2 projects that are opposite in their results and have shown in practice the limitations of using hybrid technologies.
Case 1: the client creates an application for dating, limited by the location of Germany (as a demo version).
There are 6 screens in the application: a map, a user profile, a calendar with details of scheduled appointments, a chat, a page for creating a new event and a page for details about existing ones. One of the requirements is to create the application as quickly as possible and as cheaply as possible, because the customer is not sure of the commercial success of the project.
The solution is to use React Native. The result is a stable working application with a design that meets the requirements of operating systems, no additions or corrections are required, the conclusion is successful.
Case 2: the client wants to develop an application on React Native, while the mobile version of the platform fully copies the functionality of the web version, therefore, we use the current code of the back-end part and fully develop the client part according to the customer’s design.
When coordinating the stack, we understand that React Native is able to cover the requirements and provide acceptable performance, but there are several “nuances” that are voiced to the customer:
high load of the application with animations - can lead to poor performance and freezes when moving to pages;
the application is complex, more than 15 screens with different content - leads to a low response speed, if you use React Native;
some designs do not fit React Native patterns, they need to be improved;
integration with third-party APIs (YouTube, Facebook, VKontakte, Instagram, Odnoklassniki, etc.).
In general, the recommendation is to “think about using native technologies to increase productivity and provide flexibility in terms of frontend development”. But the client is unwavering: “Instagram uses React Native, and we will.” We warn of risk and start the development.
As a result, we create applications for iOS and Android, place it on the App Store and Google Play. The application works, but users are forced to wait for content to be loaded due to overloaded functionality and animations.
Although the result is positive, it is difficult to call it successful - with native technologies “under the hood” it would be more productive and could avoid pinging when loading data from individual pages.
Summing up, it is difficult to draw unambiguous conclusions about the success of cross-platform technologies. But, using them in a live project, you need to take into account the risks and features that can affect the final result.
“The native application is written specifically for iOS or Android, taking into account the architecture of the selected mobile platform, design features and user experience. In this case, separate applications are created for each platform.”
The stack for native iOS and Android applications is very different, so there is a need to search for several specialists for each of them. The most popular technologies can be called: Objective-C and Swift - if we are talking about iOS and Java and Kotlin - if we are talking about Android development. Swift and Kotlin are more stable, more flexible, faster and more dynamic.
In the development of native mobile applications, languages and technologies are used, which are often released by the operating system developers themselves, and there are significant differences between the development for each platform.
They are literally “native” to operating systems, so there is less “conflict” when installing the application and often requires less time for debugging than with a hybrid approach.
The advantages of the native approach include:
more comfortable use of the application;
perfect integration into the device’s operating system environment;
high speed, responsiveness and degree of protection.
But there are also disadvantages, such as:
the application is developed separately for each platform;
development cost is higher;
you need separate commands for development.
Using the native approach, you can develop any functionality you need without the restrictions that exist in the cross-platform approach, thereby reducing risks.
Case 1. And again, an example from personal experience.
The client comes up with the idea to create a mobile application based on the existing functionality of the web platform. The project aims to provide connectivity between doctors and people who need their consultation. The application functionality is extensive, you need to confirm the competence of doctors, create programs for standard users and track the progress of their implementation. In addition, you need to create a chat and a personal account of all types of users with ratings and reviews.
The client wants hybrid technologies to be used, but the functionality of the platform, even at first glance, is too complex - there is a high risk of reduced performance and complexity when adding and changing new features in the future. Having voiced this to the customer, we manage o convince him and appoint a team of native developers to be sure that the application will work stably and conveniently for the user.
The result: the download speed is higher in comparison with hybrid applications. It was possible to ensure uninterrupted access to the application with push notifications, reminding users of current tasks from a program compiled specially for them by competent specialists.
To summarize, I want to say that applications developed with a native approach work faster and more stable due to full integration into the operating system, while hybrid applications may not work as well under heavy load. However, many external and internal factors must be taken into account in order to make a final decision on the application of one or another approach.
As you’ve already understood, there is a fairly rich selection of technologies and approaches in the development of mobile applications, and each of them has its pros and cons.
So, when choosing between a cross-platform and a native approach to developing mobile applications, you need to consider the following factors:
The type and complexity of the project - the more complex the project, the less chance of success when developing a cross-platform application.
Time and cost - if your budget and / or development time is limited - a hybrid application is what you need, but consider the risks.
Performance - if quick response and lack of ping during transitions are important to you - your choice is natively created applications.
Viability of the idea - do you have startup? Hybrid development can save you time, money and nerves.
It is important to prioritize correctly, because there is no one right approach and a “magic pill” for all cases. It is quite possible to implement a mobile application with its partial complement by web-technologies. Each task needs to be disassembled individually and thoroughly. The main thing when choosing an approach and an executor for your project is to understand and know the clear requirements for the result that you want to see.