In this article we are going to give an idea when choosing to develop natively (Android or iOS) or cross-platform (Flutter and React Native).
We will cover the basics, advantages, disadvantages and a conclusion to help you to take the decision.
Native
When we talk about Native app, we referred an application built in a specific programming language, for the specific device platform, either iOS or Android. Native iOS apps are written in Swift or Objective-C and native Android apps are written in Java or Kotlin.
Advantages
Best Performance – Native apps are very fast and responsive because they are build for that specific platform and are compiled using platforms core programming language and APIs.
More secure – Developing a native mobile app is a great way yo guarantee your users reliable data protection
Interactive and intuitive – The native apps inherit their devices OS interfaces, making them look and feel like an integrate part of the device. They are created specifically for an operating system. The flow of native apps are more natural as they have specific UI standards for each platform.
Full feature set of devices – Native apps are developed for their particular platform, taking full advantage of the software and the operating systems features. These apps can directly access the hardware of the device such as the GPS, camera, microphone, etc. so they are faster in execution, which ultimately results in better user experience. Push notifications are another huge advantage to choose native app development. Push notifications go through the iOS server (APNS) which you need your app bundle ID and same with Google’s Cloud Messaging (GCM).
Disadvantages
Development cost – The developers write code separately for each platform using different programming languages, so it takes longer to develop the Native Application.
Flutter or React Native
React Native is an open-source mobile application framework created by Facebook. It is used to develop applications for Android, Android TV, iOS, macOS, tvOS, Web, Windows and UWP by enabling developers to use React along with native platform capabilities.
Flutter is Google’s platform-independent technology for creating applications used on mobile, desktop and web platforms. Flutter has the advantages of native development and allows you to reuse most of the code among different platforms, which can reduce your budget costs considerably.
Flutter ranks higher with 75.4% and React Native also made the cut with 62.5% among most loved frameworks.
We have to keep in mind that Flutter is only a few years old and React Native has been around longer so many devs are already working on it.
Advantages
Faster Development – Developers will work with one code base, not need to build separate Android or iOS projects. They can reuse a big part of an app’s code between platforms, so development is much quicker.
Low Cost – A cross platform application can be about 30% cheaper than building iOS and Android apps separately. Having one project for both platforms, a big chunks of code and other assets can be reuse between platforms. The overall cost for each platform is less than developing native mobile apps.
Wider audience – It is better to create an Android or an iOS app first? Which platform has a bigger market? With a cross platform you don’t have to worry about this questions.
Reusable code – As we mention, in native applications it is necessary to write code separately, which is usually done by two different developers or teams. In cross platform the whole codebase is in one place. So one developer can handle both platforms concurrently.
Disadvantages
Harder code design – Adapt the design and functionalities of cross platform applications not only to specific devices but also to platforms with many differences. These issues don’t occur that often in native apps, so developers can focus on solving users problems.
New features – Every time Google or Apple introduce a new feature for Android or iOS, it takes some time to update applications to support this new feature. In native apps this is much faster.
Comparation Chart
This table show a comparation taking in consideration different aspects that help to see the differences from a global perspective.
Performance
Performance is one of the most important characteristics of an app. It depends on many factors but, in general, if you compare two apps where one is native and the other is cross-platform and both have the same functionalities, the native one will be slightly faster.
These difference in performance are usually small, especially when it comes to simple applications.
There are different types of performance that we have to consider:
Interacting with phone API like accessing photos, file system, getting GPS location.
Rendering speed like animations smoothness, frames per second.
Business logic like the speed of mathematical calculation and memory manipulations.
These comparative graphs are the result of running 2 known algorithms, Borwein Algorithm and Gauss-Legendre Algorithm, on iOS and Android using React Native, Flutter, Swift and Objective-C.
Conclusions
There are some key to take note about this “comparison”:
Not all cross platform apps are slow.
Flutter apps have higher performance than swift apps.
Objective C and Flutter will be a good choice if you want to develop a super fast iOS app.
For the apps with high load calculations, Flutter is a good option for both, Android and iOS app development.
If you are thinking on a usual business app with minor animations and shinny look, technology doesn’t matter at all. But on heavy animations apps we recommend use native development.
Related to cross platform development, we don’t recommend using React Native in a CPU heavy operation app, Flutter is a great fit for such task from CPU and memory standpoint.
Take in mind that using Flutter can built mobile, web and desktop environments and it feels like Flutter might become a King of cross-platform development in the short future.