We will define a cross-platform and native approach to application development, describe the pros and cons of each and tell you which one to choose.
When smartphones first appeared, developers were limited to a platform-specific, or native, approach to building applications. That is, they could only create an app for a specific platform (iOS and Android). If you needed support for both platforms at once, then you had to create two separate applications for each mobile platform.
There are a few more choices now because in addition to the native one, you can also create a cross-platform application that will run on both Android and iOS using just one codebase. Next, we will tell you what is behind the terms of native and cross-platform application development, and also describe in detail the pros and cons of each approach and their nuances.
Native programs are those that run only on one mobile platform or operating system, that is, only on iOS, Android, Windows mobile, Blackberry, etc. These are almost all applications installed by default: phone book, accelerator, file manager, calendar, calculator, email client and other standard services, as well as almost all mobile video games and other programs using graphics chips.
Users love "native" for responsive UX, high speed of work, familiar design and responsiveness. This is achieved through the use of "native" language environments for each platform: Swift and Objective-C for iOS, as well as Java and Kotlin for Android. In addition, using a native approach, programmers can get more complete access to the hardware and service part of the device: photo and video cameras, audio module, phone book, GPS module, etc. - in general, they are easily integrated and "feel at home" on native platform.
For the adapted UX, responsiveness, functionality and performance, you have to pay with time and, consequently, development costs, since it takes one and a half to two times more time to write code for two platforms, which means that the development budget should be much larger (more about this below in the text).
Pros of developing native apps
- High speed and performance.
Since the creation of native programs uses tools and technologies directly related to the platform, this allows for a direct and at the same time easier interaction of the application with the platform, which significantly increases the overall speed and performance of the program, especially when using the graphics chip of the device (therefore, almost all mobile games are native applications). For the same reasons, "native" have a lower response time, a low probability of crashes and freezes.
- More options for platform integration.
More complete access to the platform's functions and services allows you to create applications with a more complete use of the capabilities of this platform. For example, native photography and video applications usually produce better photos and videos. The same applies to Bluetooth, NFC, GPS, audio module and other functions.
- Familiar user interface (more responsive). Since native applications are more closely integrated with the platform, this allows you to use the maximum available capabilities of the device hardware and more fully comply with the guidelines (which will be discussed below). This allows you to implement a more familiar interface and user experience for the platform audience.
- Better positioning in online marketplaces.
Thanks to tighter integration with the platform and device, as well as better user experience, native apps are usually ranked higher in such marketplaces as the App Store, Google Play. In addition, there are suggestions that the ranking mechanisms on these sites are a priori more friendly to "native" applications.
Cons of developing native apps
- Larger time and cost of creating an application.
Developing a program for each of several platforms can greatly increase development time, since engineers need to write two code bases, therefore, the cost of developing an application will be higher. Adapting UI / UX design for each platform can also take quite a long time, which will further "inflate" the development budget.
- Dependence on one mobile operating system.
For native solutions, software engineers use a language environment specifically designed for the operating platform, which makes such an application incompatible with other platforms. Sometimes this is not a problem (for example, if you are targeting India, where more than 90% of smartphones run on Android), but more often because of this approach, you will limit the reach and availability of your servicing, product or service.
- Lost financial opportunities (profits).
The deliberate reduction of your market by one mobile platform is a deliberate reduction in the potential financial benefit. Especially if during design and development, no one thinks about a possible transition to other mobile platforms in the event of a successful launch of the project.
Cross-platform apps (not native)
Cross-platform applications are programs created according to the concept of "compile once, run everywhere", since they involve the development of one codebase to work on different platforms / operating systems. This is achieved through the use of development tools such as React Native and Xamarin, which allow you to write program code and deploy it on different platforms with UI / UX design close to the native for the chosen platform.
Thanks to the cross-platform approach to creating programs, you can significantly reduce development time and cost. However, you should not expect outstanding performance and / or maximum integration with platform and device functions and services. Customization can also be a problem as it will be limited by the structure used.
Pros of cross-platform app development
- One code base for all platforms.
Perhaps the main plus of cross-platform development is the use of the same code base for different mobile platforms. This allows the development team to use only one technology stack (and at the same time it is much easier to pick up), rather than several technology stacks at once for each mobile platform / operating system.
- Easier and faster deployment.
Because there is no need to learn multiple technology stacks to create cross-platform solutions, developers can focus on one technology stack, allowing them to explore and then realize all of its benefits. In addition, one codebase also allows you to greatly speed up the initial deployment of an application on multiple platforms at once, as well as reduce the time and complexity of updates.
- Reduced development time and cost.
This is another major benefit of cross-platform development, which is achieved by reducing coding time for two or more codebases. How much time and money can be saved depends on the task of the project and the framework. For example, thanks to React Native, you can create apps 50% faster than native development. Plus, React Native allows you to use off-the-shelf components that have already been created by someone else, easily integrating them into your own project. This is why we at Merehead build cross-platform apps using React Native.
- Covering a wider audience of users.
Since cross-platform solutions are developed for two or more platforms / operating systems, their target audience coverage is greater. This allows the application to be presented on more mobile devices to more users, which makes the cross-platform more profitable for business than being present on only one platform.
- Allowing the same interface and UX.
One development team and a common codebase makes it possible to create the same user experience for all platforms, which is very important for brands. In addition, it allows you to implement a "seamless" transition from one platform to another, for example, from a smartphone to a tablet, laptop, computer or TV (game console or smart TV).
Cons of cross-platform app development
- Less flexibility than native apps.
A unified technology stack does not offer the same flexibility as a platform-specific stack. Because of this, cross-platform solutions in the overwhelming majority cannot have the same degree of integration with the platform and device as native solutions.
- Lower performance and reliability.
A loss of design flexibility will also mean a loss of room for improvement and performance optimization. In other words, all other things being equal, cross-platform solutions will never run as fast, reliable, secure, and smoothly as native apps.
- Possible design mismatch on the two platforms.
Another problem you may have is that there are some differences between user interfaces and user experience on different platforms / operating systems (for example, Windows has a Start button, but macOS has no analogue). This can be due to both different requirements for the design of user interfaces on different platforms, and the specific limitations of these platforms.
- Possible difficulties with app marketplaces.
The mechanism and requirements for cross-platform applications in Apple App Store marketplaces and Google Play Store are different. Passing all bureaucratic procedures, checks and tests can take a long time and cause some difficulties.
Features of the native and cross-platform approach
Above, we wrote that when creating mobile applications
, they use guidelines - these are valuable instructions / directions from platform owners, focused on adjusting the functionality and appearance of the application to the platform standards. The guidelines reflect the vision of the platform creators on how to make the user experience on the platform as comfortable as possible. In other words, with their help, you can understand how the design should look like so that it is familiar to users of the target platform.
Native development uses languages that have the most complete tools to implement all the requirements of the guidelines, that is, to create a familiar audience of the design platform. Whereas cross-platform development involves the use of universal tools that, although they allow you to bring the design closer to "native", for this you will have to spend much more effort. At the same time, the animation speed, responsiveness, effects and design will still be at least a little, but different (though this is not always a bad thing).
User experience. Lower responsiveness (the speed at which the application responds to user actions), sharper (stuttered) animations, pings and freezes can seriously ruin the user experience. These problems often lead to users uninstalling the application after the first launch, despite its uniqueness, nice design and low cost.
Cross-platform solutions, due to the use of non-platform-specific languages, are inferior to native ones in this regard - they slow down and freeze, and this is their main problem. And although freezes can be for a split second, but this is enough for the user to give preference to the native application. For example, many people prefer Android devices, since in this market you can find devices with a screen refresh rate of 90-140 Hz, while on the same iPhone 12 Pro Max it is only 60 Hz, which greatly spoils the user experience.
In addition, developers of cross-platform applications usually create the same design (it's easier, faster and cheaper), which may not always be good, since each platform usually has its own specific rules (guidelines). And when these rules are ignored, users of one of the platforms may find it unusual (uncomfortable) to use the application.
A striking example is the Back function, which is familiar to Android devices, and has no analogue on iOS. If a cross-platform application has the same design, then users of the same platform will be forced to adapt, which can degrade their user experience. This problem can be solved only by creating two different designs, taking into account the peculiarities of each platform. But these, in fact, will be two different applications, but in the same cross-platform language, which largely negates the advantages of this approach to software development.
Limitations of the mobile platform. With native development, you will be limited by the platform and device you are using. When designing a cross-platform application, the developer must take into account not only these limitations, but also the capabilities of the language, bridge and framework used.
Service and support. For a comprehensive service of a cross-platform solution (updates, security updates, search and fixing of errors), you usually need half as many resources, since one specialist (team) can handle this, while servicing native solutions for two platforms requires at least two specialists (Android, iOS).
Development time and cost. The creation of cross-platform solutions, as a rule, is much cheaper than native development, due to the smaller amount of work. The payoff is usually between 30 and 50%. Here is a table comparing the time and cost of cross-platform vs native development, based on data from the international freelance platform upwork.com.
Table of main differences between native and cross-platform approach
Now that we understand what is meant by cross-platform and native development, and we also know the pros and cons of each option, let's take a quick look at the main differences between the two.
Resume (which approach to take)
The decision to choose the optimal approach to application development depends on the business problems of the project complexity and individual circumstances, so there is no single correct answer. Only general recommendations can be given.
It is worth stopping at the native approach of application development if:
A cross-platform approach is preferred if:
- the application will have to make the most of all the available platform and device capabilities (multi-tiered menu, calendar, animations, camera, phone book, geo targeting, etc);
- you need maximum reliability, safety and stability;
- you need maximum speed and performance;
- the application must be able to work offline.
- you have a limited budget;
- it is necessary to launch the application on two platforms in a short time;
- your business does not require complex functional developments (multi-tiered menu, phone book, geolocation, etc);
- you are willing to put up with low responsiveness.
You can also emphasize that if you have the opportunity, it is almost always preferable to create a native application (for Android Java and Kotlin, for IOS Swift), since it is more profitable in the medium and long term.
The cross-platform approach (React Native) is best used to test an idea and go to market as soon as possible. Also, this approach is more preferable if you need a simple application for solving a specific task, for example, a news feed or a voting form.
A little bonus
If you still haven't decided which option is best for you - cross-platform vs native development, use this scheme:
Development method selection map. Source