Cross-platform vs. native mobile development

20 min read
March 15, 2021

We live in a mobile world, and more companies are taking all their business to mobile apps. 

However, when business owners decide to go mobile, the major challenge they often encounter is choosing the right mobile technology.

Before developing an app, it’s important to note that there are different technologies you can employ. 

Whether you choose to build a native, hybrid, or cross-platform app, each of these technologies has its own pros and cons, depending on the nature of your project.

In this article, we’ll offer you some insight into native (Android and iOS), and cross-platform technologies (Flutter, React Native, etc.).

Then, we’ll also shed some light on the major differences between them. 

Native Mobile Development Technologies

Put simply, native mobile development involves creating apps suited to work on particular mobile operating systems.

To achieve this, there are selected technologies and programming languages developers use. 

For example, if you’re looking to build an iOS app, you’ll need to learn Objective-C or Swift. Conversely, Android developers rely on Java or Kotlin.

As you probably know already, Android and iOS are the two major mobile operating systems in use today. 

GuideHero03

The entrepreneur’s guide to boosting mobile app ROI →

Get your free copy and find out how successful entrepreneurs define parameters of success!

To develop native apps, both Android and iOS developers make use of a specific set of development tools called the Software Development Kit (SDK) and an Integrated Development Environment (IDE).

In the end, because they’re specifically targeted at predetermined operating systems, native apps are generally more secure, intuitive, perform better, and grant developers complete access to the target device’s features. 

However, it’s not all roses.

Native development is also often more capital intensive both initially and post-launch.

Native Mobile Development Frameworks

Beyond the general overview above, let’s take a closer look at the development frameworks that back native Android and iOS apps.

Android: Android Studio

When introducing the idea of native mobile development in the previous section, we talked about an Integrated Development Environment as one of the tools necessary for creating a native app

In Android development, the official and most widely used IDE by developers is the Android Studio.

Android studio

Building Android apps with the Android Studio means you don’t just get a powerful code editor backed by interesting developer tools — you also have access to advanced features that turbocharge your developer experience. 

Some of these features include:

  • A feature-packed emulator that offers great performance.
  • A flexible build system based on Gradle.
  • Wide range of frameworks and testing tools.
  • Support for sample code import and reusable app features through code templates and GitHub integration.
  • Google Cloud Platform integration.
  • C++ and Native Development Kit (NDK) support.

Another perk of developing with Android Studio is that as an IDE, it allows you to build native apps on virtually any operating system, be it Windows, Mac, or Linux. 

However, to do this, you’ll need to install a Java Development Kit (JDK).

Among other development tools, a JDK includes the Java Runtime Environment (JRE), a code interpreter (Java), and a compiler (javac). 

With the JDK configured, you can now install the Android Studio and start building your first Android app.

When it comes to the choice of framework, Android Studio is a common pick among Android developers. Considering its extensive feature offering, it’s not hard to see why. 

Pros


  • Free-to-use open-source software.
  • Supports Java-Kotlin auto-translation.
  • Intuitive editor layout and flexible interface (supports theme editing).
  • Library update is seamless.
  • Excellent debug mode.
  • Large developer community support.
  • More secure development. 
  • Intuitive development.
  • Better performance.
  • Grant developers complete access to the target device’s features.

Cons


  • Requires heavy hardware resources
  • Emulator launches slowly
  • Handling dedicated codebase only for the android platform.

Some of the most popular native apps made with Android Studio include WhatsApp Messenger, LinkedIn, Netflix, Evernote, Uber, etc.

To sum up, let’s go over the pros and cons of using Android Studio.

iOS: XCode

On the iOS side of the aisle, XCode is the direct equivalent of Android Studio. 

It’s the official IDE from Apple and has a long history in the iOS development world. Since it’s native for iOS development, it supports Objective-C, Swift.

iOS

XCode features virtually everything you need to develop an iOS app: compilers, debuggers, Storyboard editors, and the XML Interface Builder (XIB).

In Apple’s usual proprietary style, some iOS app-building functionalities are locked exclusively to XCode. 

For example, even with non-native platforms such as Flutter or React Native, it’s impossible to edit storyboards without XCode. 

Furthermore, other alternative IDEs still require you to have XCode installed.

Features

Here are some of XCode’s major features:

  • Extensive programming language support — C, C++, Objective-C, Java, Python, AppleScript, etc.
  • Utility for building fat binary files, including code that is compatible with different architectures in Mach-O executable format.
  • iOS app compiling and debugging on ARM architecture processors.
  • Graphical User Interface (GUI) tool that facilitates codeless user interface design and prototyping.
  • Code filter, Version editor, coding assistant, source control, etc.

Each of these features comes with a lot of punch that positions XCode as your one-stop-shop for everything iOS development. 

It’s also a great solution that iOS developers of all skill levels find really helpful.

Beginner developers will definitely appreciate the source code checker, which highlights any error while typing.

This feature comes in handy for even the pros as well. 

Similarly, you can save a lot of coding time with snippets of commonly-used code and templates. When you’re developing, XCode makes it easy to send your app to the App Store.

Additionally, if you ever get stuck, XCode’s documentation could hardly be more thorough.

The help library packs several resources, including SDK documentation, API references, sample code, coding guides, and almost anything a developer needs to troubleshoot effectively. 

XCode Pros and Cons

Pros


  • Extensive programming language support
  • Easy-to-use interface
  • Extensive documentation

Cons


  • Apple-specific language
  • Exporting the app to a device is complicated

All this information is available in the documentation viewer. And it all updates automatically!

As one would expect, the majority of native iOS apps are made with XCode. 

Firefox, LinkedIn, SlideShare, Asana, Lyft, and WordPress — they all came to the iOS platform through XCode.

Pros

  • A smooth, easy-to-use interface that makes UI creation seamless.
  • The simulator mimics your iPhone and lets you test your app while building it.
  • Excellent code completion feature (time-saver for developers at all skill levels).
  • Extensive documentation.
  • Availability of multiple working schemes.
  • More secure development.
  • Intuitive development.
  • Better performance.
  • Grant developers complete access to the target device’s features.

Cons

  • Exclusive to only Apple operating systems.
  • No support for tabbed work environments.
  • Exporting your app to a device directly is rather complicated.
  • Handling dedicated codebase only for the iOS platform.

Cross-Platform Mobile Development Technologies

No doubt, native mobile apps are unparalleled when it comes to performance. 

However, beyond sheer power, being able to run a single code base on several operating systems can be game-changing in many circumstances. 

Though less powerful, this option is always more cost-effective and faster. This is where cross-platform mobile development comes in.

different technologies for mobile app development

We’ve previously discussed how SDKs allow developers to use preferred programming languages to build native apps. 

Fortunately, these native SDKs also support Application Programming Interfaces (APIs) that you can use in programming languages originally incompatible with the OS vendor.

Cross-platform mobile technologies are developed by third-party vendors. 

These vendors create a unified API based on the native operating systems’ SDKs. 

Coupled with this unified API and a unique IDE, developers can now write a single code base that supports multiple OS.

Top Cross-Platform App Frameworks

There are several cross-platform mobile frameworks out there, but let’s take a look at five of the top vendors in the market.

Flutter

Though quite new to the game, Flutter has already made quite some waves in the market and has gained wide acceptance, as well. 

Google started working on the framework in 2015; Flutter didn’t make it out of the beta stage until late 2018. 

Since then, developers have used it to build mobile apps that deliver a near-native experience.

In general, Flutter is a versatile open-source mobile framework that relies on Google’s programming language, Dart. This programming language is a highly critical component of Flutter’s architecture. 

Dart is compiled Ahead-Of-Time (AOT) into native code for several other platforms. 

This ability to eliminate the need for a JavaScript bridge (as in React Native) gives Flutter a significant edge in terms of startup times and overall performance.

Features

Some of the interesting features you can expect using Flutter include:

  • Hot Reload: This feature updates your app immediately when you make any change to the code. In other words, you can fix bugs in a matter of seconds. You can also take the liberty to improvise and test out new features.
  • Widgets: These are a very important part of Flutter development. Each widget helps you modify a specific portion of the entire user interface. Flutter’s widget hierarchy enhances performance by avoiding the need to transition consistently between Flutter and platform code.
  • Code integration: Flutter sports multiple mechanisms that facilitate interoperability not only with external code but also APIs. For example, you could reuse native languages such as Android’s native Kotlin or iOS’s Swift.
  • Internationalized Flutter Libraries: Flutter’s internationalized widgets and classes make localizing your app in multiple locations achievable without much hassle.

Flutter also boasts the Flutter app builder.

It’s essentially a codeless drag and drop editor you can use to create elegant UI designs. Notwithstanding its age, Flutter has already been used to build some exciting apps such as the new Google Ads and Alibaba apps.

Flutter pros and cons

Pros


  • Great performance
  • Faster app development
  • Mild learning curve

Cons


  • Limited library
  • Heavy on storage space
  • Takes some time to get used

So, let’s sum up its pros and cons.

Pros

  • Flutter apps offer great performance (relative to other cross-platform frameworks).
  • Thanks to the Hot Reload, code changes are implemented very fast during development.
  • Ready-made and custom widgets allow for significantly faster app development.
  • Great for building elegant modern UI designs.
  • A very mild learning curve for newbies. Flutter’s fast growth also means there’s a growing developer community.

Cons

  • Absence of third-party libraries. The Flutter library is limited as well.
  • Flutter apps often take up lots of storage space.
  • Compatibility with iOS is still a major worry for developers.
  • Compared to other popular technologies, Dart may require some getting used to.
  • It takes a while (few weeks) until cross-platform including Flutter catches up with the latest OS updates.
  • Crashlitics doesn’t work on Flutter.
  • Push notification is tricky to handle.
  • Native apps are 10x faster than Flutter apps.

React Native

React Native is Facebook’s alternative to Google’s Flutter. 

It’s been around since 2015, and many have considered it a revolution in cross-platform development since then. 

Before 2015, Facebook had been working on it as a part of its internal hackathon project since 2013. The major idea was to bring the perks of web development to mobile while maintaining cross-platform compatibility.

In essence, React Native is based on a powerful JavaScript library called React. 

The framework uses the functionality of small code pieces referred to as ‘components’ to build a complete complex mobile app UI. 

These React components are reusable, making development faster and less stressful. It’s also an open-source technology and not only supports Android and iOS apps but also web apps as well.

One major plus React Native presents is its reliance on a widely-used programming language, JavaScript. 

Along with HTML and CSS, JavaScript is one of the major World Wide Web technologies. 

Therefore, most developers with even a little experience in web development often find it easy adopting React Native as a new skill.

The execution of a React Native’s mobile app can be seen in apps such as Artsy, Bloomberg, and Delivery.com.

Threads

The architecture behind virtually all React Native applications consists of three major threads: 

  • The UI thread: This is also referred to as the main thread. The native Android or iOS app runs here. It is also the only thread that has the ability to make changes to the app’s UI. The UI thread is common to all mobile apps.
  • The shadow thread: Furthermore, React Native requires a background thread to calculate the layout to be utilized by the React library. The shadow thread executes this function.
  • The JavaScript thread: Lastly, the JS thread serves as a JavaScript engine which houses and executes your JavaScript code. While the UI thread regulates how your UI elements and processes are displayed, the UI’s structure and functionalities are defined here.

Depending on the OS and the nature of the project, React Native may also make use of other threads such as the native modules thread and the render thread. 

Here’s our summary of React Native’s pros and cons.

Pros

  • Requires significantly shorter development time.
  • With Fast Refresh, bug fixing is also faster.
  • React Native’s reliance on JavaScript means a large developer community.
  • Simplified yet elegant UI implementation.
  • Near-native app performance results.

Cons

  • Custom modules/components are limited.
  • Developing certain platform-specific modules still requires a native developer.
  • Compatibility and debugging issues are pretty common.
  • Development environment overhead, a lot of extra resources needed

Xamarin

Even though Xamarin was quite popular in 2019, today it slowly loses the battle, regarding the Statista.com data.

Originally introduced in 2011, Xamarin can now boast a community of over 1.4 million developers. 

Just like React Native, Xamarin relies on a mature programming language, C#. 

Since it’s a part of the .NET framework, you can use your code with other .NET features while enjoying a lot of stability. Some of the features include Lambdas and Language Integrated Query (LINQ).

In order to build apps that work on all mobile platforms, Xamarin utilizes both C# and individual native libraries, all wrapped in the .NET layer. 

In other words, Xamarin code is compiled natively. The framework leverages platform-specific capabilities through API access. 

As a result, the final product is quite comparable to native iOS and Android apps in terms of performance and feel.

Xamarin pros and cons

Pros


  • Near-native UX
  • Open-source technology
  • Easy app maintenance

Cons


  • Costly for enterprise use
  • A limited number of Xamarin developers

For the two major mobile platforms, Xamarin offers two products: Xamarin.iOS and Xamarin.Android.

On iOS, Xamarin uses AOT compilation to compile the source code directly into native ARM assembly code. 

On the other hand, Android Xamarin apps rely on Just-In-Time compilation to compile into native assembly code at runtime. 

To achieve this, the source code is first compiled into an Intermediate Language.

Using Xamarin, developers can reuse a large percentage of their code on multiple mobile platforms. 

Xamarin.Forms is a product that makes this possible. It’s a library sporting over 40 cross-platform controls designed to help create prototypes and apps.

There’s quite a long list of products built using Xamarin. Some popular examples include Microsoft Azure, Alaska Airlines, Insightly, UPS Mobile, etc.

Now let’s go over its pros and cons.

Pros

  • Solid performance and near-native user experience.
  • Supports a wide range of hardware features (compatibility issues are rare).
  • Open-source technology.
  • Maintaining Xamarin apps is relatively easy.
  • Xamarin.Forms library makes code sharing seamless.
  • Fast development with Xamarin.Forms XAML Hot Reload.

Cons

  • Using Xamarin for enterprise purposes costs a lot.
  • Compared to other cross-platform technologies, the Xamarin talent pool is pretty limited.
  • Access to open-source libraries is restricted.

Ionic

We’ve talked about cross-platform mobile frameworks that allow you to build native apps. However, there’s a minor downside to using any of the technologies mentioned above. 

Though they deliver apps that are near-native in performance, you’ll still need to hire native developers to execute some tasks when developing the individual codebases.

However, with a framework like Ionic, you get to build hybrid mobile applications using existing web development technologies. 

More specifically, Ionic developers use single codes written in front-end technologies such as Javascript, Angular, CSS, and HTML. 

Ionic is based on Apache Cordova, which implements the native part of the application.

The resulting mobile app is neither fully web-based nor fully native. 

Ionic pros and cons

Pros


  • Integration with a lot of tools
  • Quick prototyping
  • Extensive documentation and code library

Cons


  • Could use better performance
  • Making changes is slow and more complicated

Though the app’s layout is executed via web views, it still has access to the native device’s APIs.

This means the app can be displayed both natively and as a Progressive Web App (PWA) in the device’s browser. 

It’s a very convenient option for app owners and developers who want to run one single codebase on multiple platforms and also as a web app.

However, it’s important to note that using Ionic on iOS may not deliver a polished experience as on Android. 

Developers may experience difficulties installing and using certain plugins, such as Flurry Analytics on iOS. The same goes for template elements such as segment that often induce scrolling issues.

Popular hybrid apps developed using the Ionic framework include Sanvello, TD Trading, Sworkit, MarketWatch, etc.

Pros

  • One codebase for multiple mobile and even web platforms (doesn’t require native developers).
  • Integrates with a wide range of plugins and tools.
  • Prototyping is quick and easy with an extensive choice of UI elements.
  • Great documentation and a large community.

Cons

  • Ionic apps fall behind in the performance department.
  • Ionic development is highly plugin-dependent. This may lead to compatibility issues and the need to build custom plugins to access specific hardware features.
  • Lack of hot reloading means making changes to code will be slow and requires restarting the app.
  • Ionic apps are often heavy since they require a lot of code and plugin integration.

Adobe PhoneGap

Last but not least on our list is the Adobe PhoneGap. 

As the name implies, the framework is the brainchild of the famous software company, Adobe. 

Until Adobe discontinued support for PhoneGap and PhoneGap Build on October 1st, 2020, it was one of the most popular options for cross-platform hybrid development on mobile.

On PhoneGap, developers assemble hybrid apps making use of CSS, HTML, and JavaScript. 

 Adobe PhoneGap was initially referred to as Apache Cordova.

PhoneGap’s architecture is quite similar to Ionic’s since Ionic was developed from the same codebase.

In essence, they both leverage the idea of using common web technologies to build mobile applications.

PhoneGap’s architecture comprises mainly of the following two segments:

  • A JavaScript API: This is the intermediary interface between the CSS/HTML5 code and the native device functionality such as contacts, geolocation, etc.
  • The source code: This is the local code that JavaScript APIs invoke in order to run the app.

In general, PhoneGap is a development framework that has made a mark in the market. 

It’s often regarded as a great alternative to Xamarin. Its multiple hybrid features and multiple language offering (CSS, HTML, and JavaScript) make it possible to build complex apps in a flexible manner.

PhoneGap development boasts amazing apps such as FanReact, Yoga+Travel, Untappd, and Logitech Squeezebox Controller.

Here is an overview of its pros and cons.

Pros

  • PhoneGap development is mostly pocket-friendly.
  • Performance is really close to native (especially for a hybrid technology).
  • It’s open-source, meaning you can easily get help from the online community. Backend support is also swift and helpful.
  • Plugins are user-friendly.

Cons

  • Plugins easily get outdated.
  • PhoneGap may not be the best solution for hardware-intensive apps.

Difference Between Native and Cross-Platform App Development

Making a final decision as to what mobile development approach to adopt can be a tricky task. 

Now that we have a clearer idea of how the major native and cross-platform mobile technologies work, let’s examine how much of a difference choosing either approach can make.

Generally, here are the major areas in which native and cross-platform app development differ:

Performance: No doubt, native apps perform better and are more responsive than cross-platform apps. This is large because the native code interacts directly with the device’s resources. E.g. on demanding computing tasks, native is 10x or faster than RN app.

Development time: However, as a trade-off, native apps take significantly more time to develop as separate teams are required to develop for different platforms. Cross-platform apps shine here since code can easily be duplicated across several platforms.

Development cost: The same logic works here. More development time and personnel mean more development costs. The ability to develop for different platforms with one team will save you a lot of resources.

Product lifetime: It is not the same if you plan to develop a mobile application that will be used for the next 8 years (mobile banking, telco, etc.) or a prototype for a startup. Native development is safer for projects that are long term because the tools and framework are more stable and there are no changes overnight

Access to hardware resources: If your application requires complete access to all the target device’s resources and services, then native development is the way to go. Though cross-platform apps try to make up with plugin integration, compatibility issues are still often common, and the app often ends up taking up a lot of space.

UI/UX design: Finally, cross-platform development also lags behind in the UI/UX experience. Because developing in a native environment grants unrestricted access to UI/UX components, native apps generally deliver more stunning visuals and an outstanding UX.

Background processes: Allowing the app to perform tasks while not in the foreground, must be native.

Push notification: Push notification handling is tricky in cross-platform, native does it much better

OS updates: It takes a while (few weeks) until cross-platform catches up with the latest OS updates

Debugging: Cross-platform doesn’t offer the same app debugging capabilities. E.g. Crashlitics doesn’t work on RN & Flutter


Take all of them into account as you choose the right technology for your app.

Conclusion

To round things off, it’s hard not to notice how far mobile development has come in recent years. 

Regardless of the type of app you choose to build, there is a myriad of technologies you can choose from.

If you choose to go native, you’d like to consider either building a native Android app or an iOS app. 

Developing for both platforms can be done using Android Studio and XCode, respectively. 

If native is not your cup of tea, then you can hardly go wrong with cross-platform alternatives such as Flutter, React Native.

Most importantly, you should bear in mind what you stand to gain and lose in terms of development cost, performance, and UI/UX design.

Categories
Written by

Marin Luetic

CCO

A seasoned software engineering executive, Marin’s role combines his in-depth understanding of software engineering processes (particularly mobile) with product and business strategies. Humbly boasting 20+ years of international experience at the forefront of telecoms, Marin knows how to create and deliver state of the art software products to businesses of all sizes. Plus, his skills as a lifelong basketball player mean he can lead a team to victory. When he’s not hopping from meeting to meeting, you’ll find Marin listening to indie rock, or scouring the latest IT news.

Related articles