[UPDATED] Building a mobile application in 2020 is not what it used to be five years ago:
- The global mobile application market topped $106 billion in 2018 and has been growing at a CAGR of 18.4% ever since.
- Android powers 74.13% of smartphones, while the iOS market share is estimated at 24.79%. KaiOS, their closest competitor, comes third with 0.35%. Windows, BlackBerry, Symbian, and other mobile operating systems that once enjoyed considerable popularity have long fallen into oblivion.
- Enterprise mobility, the Internet of Things, and eCommerce have changed the role of mobile applications. Companies that turn to app developers need a tool to distribute their content, ensure on-the-fly access to corporate data, manage smart devices, and help their clients complete transactions faster.
Today, the “native vs. cross-platform” question is no longer about building slow-performing, ever-crashing apps at half the price of an iOS or Android app.
With powerful cross-platform application development tools like Xamarin, React Native, and Flutter, you can create apps with a 90% reusable codebase that utilize native UI and control elements, access smartphone functionality, and comply with the Human Interface and Material Design guidelines.
The question is, what is the right technology stack for YOUR project?
Cross-platform vs Native Apps: Key Differences
A native mobile app is an application that meets the requirements of a particular operating system by using its SDK and primary technology stack, as well as hardware memory, camera, sensors, and other programs installed on a device.
The advantages of native mobile apps include:
- High performance
- Robust functionality
- Seamless user experience
A cross-platform application is a mobile app that is compatible with multiple operating systems and can, therefore, run on any smartphone, tablet, PC, smartwatch, and connected TV.
Platform-independent applications have multiple advantages:
- 70–90% reusable code
- Easy maintenance and updates
- Broader reach
- Shorter time to market
There are two types of cross-platform mobile applications:
- Native cross-platform apps. Each operating system has its SDK and technology stack: Java or Kotlin for Android and Objective-C or Swift for iOS apps. Cross-platform app developers create a unified API running on top of a native SDK, make use of native IDEs, and build iOS and Android apps that share the same codebase. Native cross-platform applications are primarily built with Xamarin, React Native, and Kotlin Multiplatform.
Top Cross-platform Mobile App Development Tools
According to the 2019 Stack Overflow Developer Survey, Xamarin, React Native, Flutter, and Cordova were the most popular cross-platform frameworks used by professional developers:
Let’s see how they stack up against native app development technologies:
- Xamarin. Built with #C and .Net, Xamarin allows developers to create cross-platform applications for Android, iOS, tvOS, macOS, and Windows. Xamarin applications with shared interfaces are developed using Xamarin.Forms. If your goal is to design a platform-specific interface, Xamarin.iOS and Xamarin.Android are the go-to tools. Xamarin provides powerful libraries to access native and 3rd-party APIs, and leverage smartphone hardware and functionality: sensors, camera, text messages, connectivity, etc. Applications created with Xamarin perform on par with native apps — even when it comes to rendering dynamic data in real time.
Another cross-platform app development technology that is gaining in popularity is Kotlin Multiplatform Projects, an experimental feature supported by Kotlin 1.2 and 1.3. It allows developers to separate the UI and back end of a mobile app. With the shared business logic, writing apps for multiple platforms gets easier. However, few Android developers are familiar with the feature yet. So you might have a hard time finding a suitable team and turn to developers that specialize in React Native, Flutter, or Xamarin cross-platform development in the end.
Pros & Cons of Cross-platform Mobile App Development
The advantages of building a cross-platform application include:
- Shorter development time. Provided you choose the right tech stack and plan your project thoroughly, you may be able to reuse up to 80% of the original codebase — both at the back end and UI levels — for multiple platforms. This helps companies reduce the time required to fix back-end logic issues (which usually takes 10–20% of total project time) and launch apps faster.
- Exposure to a larger number of users. Most cross-platform apps run on both Android and iOS, as well as Windows, macOS, Linux, and operating systems underpinning the logic of smartwatches and connected home appliances.
- Updates synchronization. In a world where mobile apps get up to four updates every month, maintenance costs can consume a large amount of app revenue — and that’s where cross-platform apps walk away the clear winner.
And here’s where platform-independent applications might fall short:
- Performance. When it comes to CPU and GPU-heavy tasks, there is a considerable performance gap between native and hybrid applications. Apps built with Xamarin.iOS and Xamarin.Android, on the other hand, display nearly-native results.
- Steep learning curve. Due to the high level of abstraction, cross-platform code is hard to write. Developers who specialize in platform-independent applications must have a good understanding of both the iOS and Android ecosystems, as well as the cross-platform tools of their choice.
- Limited support of 3rd-party libraries. Not all 3rd-party libraries and SDKs work in sync with cross-platform app development frameworks. This prompts developers to consider alternatives or find a way to integrate the desired functionality into a mobile app, which is time-consuming.
Choosing between Native and Cross-platform Applications
Some five years ago, companies that treated mobile apps as a pivotal business tool had no other choice but to go native. Now mature cross-platform app development tools like Xamarin and React Native easily merge non-native code with OS-specific functionality.
But all cross-platform frameworks are not created equal.
Airbnb, whose website is primarily built with React, decided to ditch their native mobile apps in favor of a cross-platform solution. The company placed a bet on React Native and spent two years implementing advanced native features like element transitions, geofencing, and parallax scrolling across multiple platforms. Two years later, Airbnb announced that, due to technical challenges and the lack of IT resources, they were “sunsetting React Native” and going back to iOS and Android.
It doesn’t mean React is in any way inferior to Xamarin or native application development tools. It’s just that too many factors, including the mobile application feature set and expected workload, come into play when you make the decision to replatform your software or integrate a newly built app into an existing IT infrastructure.