Native or Cross-Platform? What Approach and Framework to Choose for Your Mobile App Development?

Before you start building your game-changing mobile app, you need to make a few decisions. Some of them affect the overall cost and timeline and define the pool of talents you can access (or what contractors you can hire).

Establishing what platforms your app should work on is such an important decision. You can focus on one, iOS or Android, or address both. Then, you need to choose whether you want to build a native or a cross-platform app. That’s probably the most significant decision you will be forced to make during the whole development process.

Why? In this article, I will not only explain the main differences between cross-platform app development and native app approach. I’ll also investigate how both approaches can affect your project in the short term and in the long run.

On what kinds of platforms can your app work?

Let’s start by defining what platforms your app should work on. Do you have a web app and need to build a complimentary mobile app? Or maybe you need a mobile app for iOS only?

In short, you have two possibilities: to build a cross-platform app that works on more than one operating system or a native app that is meant for one specific operating system only.

In the case of cross-platform app development, you have two possibilities: you can build an app that works on the web and mobile at the same time with exact same functionalities (RWA & PWA) or for mobile devices only (however, thanks to solutions like Expo, we can expect that React Native apps might soon be easily implemented for web as well). The second option is usually associated with so-called cross-platform or hybrid app development.

Now, let’s investigate the pros and cons of each possibility starting from the most universal to the most specific types of apps.

Responsive web app (RWA)

RWA is an abbreviation for Responsive Web App. In fact, this is not one of the typical mobile apps but a web app that looks good on mobile devices (and is based on a Responsive Web Design).

RWAs are built as typical web applications and opened in a web browser. Therefore, Responsive Web Apps are different from other apps mentioned in this article because they are not installed on mobile devices.

Depending on your goals, RWA might be enough for you. Let’s say you want to offer people a platform with video training (like the ProSSto pilates portal we’ve built). Of course, you can build a dedicated mobile app, but you don’t need to. All required features can be easily provided via a web browser. Sometimes a web app is a must-have for your business anyway, so you can’t resign from building it. Because of that, it might be reasonable and cost-effective to build one web app instead of maintaining two separate apps (or three in the case of native development for ios and Android apps).

RWAs are perfect if you need to have a web portal and a mobile app of similar functionality. All you need to do is to take care of a responsive web design. With experienced developers, you can kill two birds with one stone and have the same functionalities in the web app for desktop and mobile devices at the same time using just a browser. Did I mention that it also speeds up the development time?

Progressive web app development (PWA)

Sometimes, however, you might not want to use a browser but provide users with a downloadable app. If it is a simple mobile application and you still need a web app at the same time, a Progressive Web App will be the best match.

A PWA is actually a perfectly optimised web app with some additional functionality for mobile devices and also desktop devices. Like RWA, it runs on mobile internet browsers engine, but in contrast to RWA, Progressive Web App is installed on mobile devices. Another similarity between Responsive and Progressive Web Apps is that both are built using web technologies like HTML, CSS, JavaScript, and libraries (like React).

If you want to build a simple CRUD app (that allows you to Create, Read, Update and Delete) with no custom native functionalities, PWA is more than enough. You spend less money and have an app for web, mobile, and desktop platforms (developing a PWA is usually a bit more expensive than building an RWA because a web app needs to be customised to support PWA functionality).

This kind of app can be suitable for online shopping, auctions, messaging, or other purposes that can gain an advantage from building only one mobile-optimised app that is always at your fingertips.

Cross-platform mobile app development (hybrid)

If you need a separate app for mobile devices but still want to cover Android and iOS devices at once, you can invest in cross-platform development. Such an approach allows you to build one app (with one codebase) that works on different operating systems – iOS and Android.

Cross-platform mobile app development is interchangeably called hybrid mobile app development. It’s the best choice if you don’t want to spend too much money but want to offer your app to Android and iOS users at once. It’s not obvious, but you can also build a cross-platform app for one platform only (iOS, for example). That might be more cost-efficient in the case of a simple app (like an MVP) – building its hybrid version might be cheaper than a native app development because even if you target only one platform, it will be relatively easy to build the app for another platform later with some tweaks.

However, cross-platform apps have their limitations, which is mostly the performance when the app needs to have custom functionalities that need to be highly optimized. A hybrid app is perfect if you want to build an MVP to validate your app idea or if you need to build a relatively simple app without using too many advanced device functionalities (like advanced video editing with conversion or any different heavy operations).

However, you can still build advanced features because cross-platform frameworks like React Native allow you to use native code within. In this case, cross-platform is split into cross-platform code written in Javascript/Typescript and the specific platform code (Kotlin/Java for Android and Swift/Objective-C for iOS). Both platforms have different native APIs for native functionalities (camera, storage management etc.) and use different programming languages knowledge to develop them. However, I don’t recommend you building more than a few features this way (but you can still build even a core feature of your MVP app) as the app becomes overcomplicated.

A huge advantage for cross-platform apps is that you can develop an app for both platforms using only one language (like TypeScript in React Native) and combine already developed packages by the community that support native functionalities. It becomes more challenging when your project requires many customizations and there is no library that matches the expectations. Then you need to develop things native and create an API for cross-platform use.

That becomes burdensome to maintain if you increase the amount of custom native modules too much, especially when they are very complex. When the custom native part of the app is larger than the cross-platform one, it’s time for redevelopment. In fact, you can build everything using cross-platform frameworks combined with native components, but it does not always make sense. I discuss this case in detail in the What’s the purpose of the app? section below.

Although cross-platform app development based on many libraries created by many companies and open-source contributors is easier as there is one code base, it’s also more problematic when you require very custom functionalities. There’s also a delay between operating systems updates and your app’s improvements as you need to wait till your framework supports them or if someone prepares a library to support new things.

The most common cross-platform frameworks are currently React Native (supported by Facebook), Flutter (supported by Google) and Xamarin (supported by Microsoft). We’ll compare those frameworks later.

 

Pros of cross-platform mobile apps

  • One code base for both platforms (Android and iOS)
  • You can reach users of devices with Android and iOS operating systems at once
  • Lower cost than in the case of building two native solutions separately
  • In the case of simpler apps, it’s more cost-effective to build a cross-platform application for one operating system only than a native app
  • Shorter time to market as you don’t need to wait for two separate projects to be developed
  • You can build native components within the cross-platform framework to implement advanced features
  • It’s easy to redevelop a cross-platform app to make it native, as you can reuse most of your code on migration

 

Cons of cross-platform mobile apps

  • You don’t have access to the full potential of mobile devices and their advanced features if you don’t have deep knowledge of native app development
  • Cross-platform apps are not the best idea if your app will be doing heavy operations like video editing with conversion, the camera features like augmented reality etc.
  • Updates are more problematic as changes made for one operating system might affect the second one
  • Your app updates sometimes are delayed as you need to wait until OS updates are adjusted to the chosen framework or library you are using
  • The code might be much more complicated than in the case of native apps when the app contains many custom native modules, so when non-experts develop your app, there might be issues and much more bugs than expected

Native mobile app development

As you already know, native apps are built for one platform only and use platform-specific programming languages. That means you don’t have much choice of what language to use. Generally speaking, Objective-C and Swift are used for native iOS apps, and Java, C/C++ and Kotlin are dedicated to Android solutions.

I see a few reasons why you might want to choose native app development instead of cross-platform. First of all, you should build a native app when you know that your project requires many advanced features or high computing possibilities. Native apps generally have better performance and are better optimised than cross-platform ones.

If you are about to build an MVP that you know will use many advanced functionalities in the future, you might be confused. What to do? Is that reasonable to build a temporary cross-platform app or invest in a native one from the very beginning?

I would start small with a cross-platform MVP with already provided packages by the community with some of the custom native components if needed. When your app succeeds and the time for redevelopment comes, you’ll be able to reuse a huge part of the native code, decreasing the costs of the transition.

Keep in mind, however, that if you want to build a regular app for Android and iOS without sophisticated and specialised features, it might be cheaper and much faster if you choose the cross-platform way. Cross-platform development costs are lower than in the case of building two separate apps for both operating systems.

 

Pros of native applications

  • This might be a better solution if you’re about to build a complicated app for one platform only.
  • Native app development allows you to use the full potential of mobile devices, their capabilities and the functionalities of operating systems and hardware.
  • When the operating system and platform API are updated, you can start using those new adjustments and features immediately.

 

Cons of native applications

  • The app will work on one kind of device only (Android or iOS), so it’s good when you have a specific audience.
  • If you need to reach both Android and iOS users, you need to build two separate apps and pay twice.
  • Native mobile apps are not cost-efficient in the case of MVPs or simple apps.
  • Having two apps, you need to maintain and expand the functionalities of both independently.
  • You need two development teams, one for each operating system.

Cross-platform vs native app – what to choose for your project?

Before you choose one of the particular frameworks, you need to define what kind of app you want to build. It’s not a simple audience-based decision. In fact, in some cases, the audience might not be taken into account. As you probably already noticed, there are many factors you should take into account making a choice.

If you went through all the cross-platform and native app details, you probably got lost. To make things clear, ask a few questions you should answer to establish your needs. In most cases, the best path for the project is set by the project requirements.

So, let’s sum up and consider your case.

 

What’s the app’s functionality?

The first question you should ask yourself choosing whether to build a native or cross-platform app is how complex or complicated the app is meant to be.

If you’re about to build an MVP to validate an app idea, you probably don’t know that yet. If, for now, it’s a simple app, it’s best to choose a cross-platform even if you want to build a one-platform app (yes, you can do that using cross-platform frameworks). You can build a cross-platform app relatively quickly, as there are a lot of libraries you can use in your project. Building a simple app with cross-platform frameworks is usually quicker and, therefore, cheaper than setting it up as a native one.

However, if you already know that your app is complex, requires more logic or computing power and is to use many advanced device functionalities, it might be reasonable to choose native app development from the very beginning. Even if started as cross-platform apps (e.g. to validate the app idea), such apps are sooner or later redeveloped using native frameworks. Keep in mind, however, that building a native app will definitely need more time and be more expensive than cross-platform app development. Therefore, your risk of losing money when the app fails is higher.

One of the cross-platform development pros is that you can combine cross-platform and native development when some more advanced features are needed. For this reason, you can pretty easily transform your cross-platform app into a native one using a part of the existing codebase (that is already written in the native framework). It’s high time to redevelop when the native part is larger than the cross-platform one. On the other hand, it’s worth starting from the native app if you know that the custom functionalities that need full performance and heavy computing are the most of the app.

In some cases, there’s only one way, and it’s native app development. If you want to build a Photoshop-like or Instagram-like app, you should focus on particular platforms separately.

You might be confused while reading about performance, but the high performance of a native app doesn’t mean that a cross-platform app will be hanging when you develop a cross-platform app. It means that huge computing operations like manipulating cameras or videos will be faster on the native app.

What features should be developed natively?

You should consider native app development if your app is planned to offer the following:

  • advanced audio or video editing functionalities
    • changing video resolutions
    • changing codecs, bitrate and compression settings
    • painting on the video
    • apply visual effects to the video like transitions etc.
    • manipulating the camera, for example, the augmented reality feature
  • hardware possibilities
    • heavy multi-threading computing
    • custom camera features like augmented reality
    • customized Bluetooth features

 

Cross-platform app can easily handle:

  • push notifications
  • simple video or audio recording and playing
  • GPS features
  • basic Bluetooth features
  • any CRUD communication with backend APIs

 

How complicated will the design be?

If your app is designed to use highly customized functionalities, pixel-perfect UI for both apps or much different UI for iOS and Android, 3D graphics and animations, or video/camera complex features, you should choose native app development.

 

How much money do you have?

That’s the key question. If you don’t have much money and still want to address both iOS and Android users, you should consider cross-platform development. At least to validate if your product will succeed. It’s often worth developing a less performant cross-platform app faster to validate the idea than spending months or years to develop the perfect product from a tech point of view that will not succeed.

On the other hand, if you want to address only one platform, it’s the app functionality that might define what will be more cost-effective. If you are about to build a simple app, it might turn out that cross-platform mobile development will be cheaper than a native one. There are many libraries for cross-platform frameworks that can be used to decrease development time and cost.

However, in the case of the more complicated app, it might be reasonable to build a native app, but there are not so many cases that match this exception.

 

How soon should the app be launched?

If you want to build two apps, you’ll launch them sooner if you choose a cross-platform development. In this case, you don’t need to wait for both apps to be ready and are not forced to postpone the launch of one app because the second is delayed.

Even if you want to build an app for one platform only, it might turn out that you’ll be able to build it quicker in React Native (cross-platform framework) than setting it up in Kotlin or Swift. If you have a React web app, in some cases, you can even reuse its part of logic in React Native mobile app development!

 

How important is the performance?

If you want to maximise the performance, native apps might be a better choice as they offer the best performance possible. However, nowadays, when mobile devices are powerful as computers, performance is not a crucial issue anymore (unless you build a really custom app).

If you hire top cross-platform developers, they will manage to build your cross-platform app in a way that provides users with almost the same experience. Depending on the functionality, you can still encounter issues, and the app might be a bit slower than the native one, but in most cases, there won’t be any noticeable difference.

 

How easily do you want to maintain the app?

The maintenance of cross-platform mobile applications is easier as it has one code base for both types of devices (iOS and Android). However, updates you make for one operating system might affect the app’s performance on the other. What is more, you cannot use the OS update until they are supported by the framework or libraries you are using.

If you choose native solutions and want to offer your app to both iOS and Android audiences, you need to maintain and develop two independent apps. That means you also need two teams, which increases the overall cost. Native apps can use features provided with operating systems updates immediately, while cross-platform mobile applications need to wait for the framework to support them.

 

What will the anticipated growth rate be?

What you should remember is that choosing cross-platform mobile development means that the outcome is less scalable and, therefore, better for smaller projects. It’s ok when you’re starting, building an MVP or targeting a narrow audience.

When your app grows, you might need to rebuild it using native frameworks.

The most popular cross-platform development frameworks

Let’s start by defining the framework in mobile app development. It’s a toolset that allows developers to create fully-featured mobile apps fast and efficiently. Frameworks provide software development kits (SDKs) and tools: development libraries, API tools, compilers, debuggers, pre-built components and more.

Currently, there are three main cross-platform app development frameworks: React Native, Flutter and Xamarin, and we’ll focus on them.

If you’re thinking about a new app, I suggest choosing one of those three as those are well-supported frameworks by the greatest companies – Facebook, Google and Microsoft.

You might also hear about others like Ionic, Sencha, Native Scripts, Swiftic or Mobile Angular UI. Many of those frameworks are not recommended for new projects. However, apps that were written using those are still maintained.

Currently, there are three main cross-platform app development frameworks: React Native, Flutter and Xamarin, and we’ll focus on them.

If you’re thinking about a new app, I suggest choosing one of those three as those are well-supported frameworks by the greatest companies – Facebook, Google and Microsoft.

You might also hear about others like Ionic, Sencha, Native Scripts, Swiftic or Mobile Angular UI. Many of those frameworks are not recommended for new projects. However, apps that were written using those are still maintained.

Frameworks for cross-platform app development (hybrid app development)

To develop your cross-platform app, I recommend using React Native, Flutter or Xamarin. They are rather similar. Let’s take a look at each of them.

 

React Native

Developed by: Facebook

Base: JavaScript/Typescript/Flow

Purpose: cross-platform apps

Examples: Facebook, Skype, Shopify, Coinbase, FlipKart, Tesla, Discord, Pinterest

Features:

  • a free, open-source framework
  • friendly for .NET and C# developers
  • best performance
  • reusable components and libraries (many platform-agnostic components)
  • compatible with third-party extensions
  • high-quality UI
  • excellent APIs
  • third-party libraries support (which makes migration easier)
  • easily adjustable to different screen resolutions (responsive)
  • broad community
  • short time to market
  • almost-native performance

 

Flutter

Developed by: Google

Base: Dart

Purpose: cross-platform apps with well-designed UI

Examples: BMW, eBay Motors, Google Ads, Google Pay, Alibaba, iRobot, Reflectly, Cryptograph, Postmuse, Hamilton

Features:

  • a free, open-source framework
  • broad community
  • simple debugging
  • customizable widgets
  • easy way to code design
  • development speed and quick time to market
  • almost-native performance
  • compiles its Dart language into native code

 

Xamarin

Developed by: Microsoft

Base: .NET & C#

Purpose: cross-platform apps compatible with more than just Android and iOS

Examples: Volveremos, Aussie Weather, Tube Mate, CA Mobile, The World Bank, Novarum DX

Features:

  • a free, open-source framework
  • a part of Microsoft Visual Studio
  • friendly for .NET and C# developers
  • perfect for building apps for various operating systems like Android, iOS, Windows, tvOS, macOS, watchOS and more
  • native APIs
  • Google emulator
  • well-supported (corporate support)
  • diagnostic tools
  • Android SDK Manager
  • Google Emulator Manager

React Native vs Flutter – which framework to choose for cross-platform apps

React Native and Flutter are almost the same. They both support hybrid app development; however, Flutter uses Dart language (not JavaScript), which makes it a bit more difficult to learn for many developers and therefore makes the pool of accessible talents smaller.

Developers who know React and JavaScript can almost immediately start coding in React Native for their first cross-platform apps. That also makes the pool of talents and community broader. Partly because of this, there is a larger amount of libraries, and React Native is a better-established framework that is sure for a little bit longer.

How to choose the best way for mobile app development

First of all, you need to decide what kind of app you want to build – cross-platform or native. That mostly depends on your goals, budget and app features. If you have your own in-house team, that might also depend on their skills.

When you choose to build a native app, you need to use particular frameworks. In the case of cross-platform apps, you have more possibilities. Still, the two most popular frameworks for such mobile apps – React Native and Flutter – are very similar and both developed by leading technology giants (neither of them is about to become extinct). React Native, however, is a little bit longer on the market and might provide you with a broader pool of potential developers that can take care of your app.

Well, if you want my advice, I have one tip for you: make sure the company you choose is reliable and trustworthy. It’s crucial as they should be transparent and project-oriented enough to tell you when the cross-platform approach is no longer an effective solution and needs to be switched to native mobile development. Sometimes that means the company won’t be able to handle the project anymore, but the right partner will help you to find another contractor or build an internal team.

For this reason, in many cases, it’s best to start with a small cross-platform app built by open and sincere people who care for your goals as much as their own using one of the popular cross-platform frameworks.

If you need a hand with choosing the app type or the framework, feel free to drop me a line! Multiple platforms aren’t as scary as they seem at first 🙂