Cross-platform vs Native Mobile App Development: Choosing the Right Development Tools for Your Project

Andrei Klubnikin
May 24, 2017 · 6 min read
Image for post
Image for post

[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.
  • Hybrid applications. Although mobile apps are designed for smartphones and tablets, it is the back-end layer that handles their business logic. Since both iOS and Android SDKs feature advanced web components, it is possible to create parts of an application graphical user interface (GUI) with HTML5, CSS, and JavaScript. Next, developers wrap the code in WebView — a browser bundled inside of a mobile app, which renders the contents as a good old website. Some hybrid apps even interact with a smartphone’s hardware, although the functionality can be limited. The most promising hybrid app development frameworks on the market right now are Apache Cordova (formerly known as PhoneGap) and Flutter.

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:

Image for post
Image for post
Most loved, dreaded, and wanted frameworks, libraries, and tools

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.
  • React Native. Unveiled by Facebook in 2015, React Native has reigned in the cross-platform app development market ever since. The framework is based on React — a JavaScript library for building highly responsive user interfaces. With React Native, you can create mobile applications that share up to 80% of their codebase and can access certain native features like the accelerometer and smartphone camera, although you might need separate code for iOS and Android for that.
  • Apache Cordova. Apache Cordova’s tech stack features HTML5, CSS3, and JavaScript. The mobile app development framework provides access to a smartphone’s built-in accelerometer, file storage, GPS, contact data, media, and notifications. Apache Cordova boasts several advantages, including a fairly simple API and the opportunity to employ any JS framework. However, the platform visualizes app UIs through a web browser, which might cause lag. Also, some of Cordova’s plugins are dated, so developers often have to write custom ones from scratch.
  • Flutter. Flutter is Google’s UI toolkit that allows developers to create natively compiled applications for mobile devices, web browsers, and PCs using the same codebase. Flutter is based on Dart — a relatively new programming language that shares many features with Swift and Kotlin and can be transformed into JavaScript code. With Flutter, you can design applications that render fast and adapt to platform-specific UX logic. The framework is most suitable for MVP development.

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.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store