What to choose for your next app: Native Mobile Development or React Native?

Native Mobile Development or React Native for apps? This is probably the hottest debate when it comes to choosing a development approach for building a mobile app nowadays. Since tapptitude does mobile products as core business, we want to give you our take on the subject. Read on to get a solid comparison between native mobile development and React Native, with Pros and Cons and some product and business implications.

***

We live in revolutionizing times. The age of smart assistants, self-driving cars and having the opportunity to be one click away from any kind of information or action, whether we are talking about retail, food ordering, dating or just reading. Smartphones make all of these possible. Apparently, the average user spends 3.3h online per day, on their mobile devices.

Most of our experience with smartphones are mediated by mobile apps. Now, for us as users, a mobile app represents a tool through which you can do something useful, fun or exciting in our everyday lives.

But for those who build mobile apps, many cool startups and more established businesses as well, an app represents both a technical product and a business asset. And when it comes to creating one, there are two fundamental development approaches: native mobile development or React Native (or other cross-platforms).

Native mobile development means using Swift (or Objective-C) for iOS apps, while for Android apps, using Kotlin or Java. Cross-platform mobile development can be done by using a plethora of tools, but here we’ll just focus on one of the most praised approaches in the past years: React Native, a framework for building apps with React.

Here at tapptitude, we live and breathe mobile every day and take a lot of pride in the products we build with and for our partners. We focus a lot on delivering solid products and great user experiences in the apps we do, that is why choosing the right implementation approach for apps is absolutely essential.

React Native

First, a bit of introduction. React Native is a JavaScript framework, used for writing real, natively rendering mobile applications, both for iOS and Android. It’s based on React, which is Facebook’s JavaScript library for building user interfaces, but instead of having the browser as a target, its aim is for mobile platforms. On short, web developers can write mobile applications that look and feel truly native.

Here are the pros and cons of using React Native instead of Native mobile development, as seen and preached by my colleague Iuliu.

PROS

Multiple platforms: React Native enables using the same the codebase (or as much as you need of it) between iOS and Android

Faster to build: One major selling point of React Native is shorter development time. It provides numerous ready-to-apply components that can accelerate the process.

Hot Reloading: Due to the way React uses the Virtual DOM, the app can keep running while implementing new versions and tweaking the UI, not only saving time on the compilation, but also keeping the state of the app while making changes.

Smaller Teams: Native development requires two separate teams for Android and iOS. It can hamper communication between developers and, accordingly, slow down the development. If you choose React Native, you will mostly need a (mainly) JavaScript developer who can write the code for both platforms.

Fast Applications: Many argue that React Native code might hinder app performance. JavaScript won’t be as fast as native code, but in most cases, you won’t see the difference. Depending on the time/effort spent, differences in performance are slight, almost unnoticeable to an average user.

Simplified UI logic: In native development, it is necessary to create a sequence of actions in the application, whereas React Native employs declarative programming in which such an order of implementing an action is obsolete. As a result, it is much easier to detect bugs on the paths a user can take (especially if using a state management system, such as Redux).

CONS

Steep learning curve: Simple React already implies a relatively high level of complexity to understanding and master. React Native ads on top of that (some) knowledge requirements regarding MacOS/iOS and native Android ecosystems.

Less smooth navigation: React Native still lacks a navigation system to provide users with seamless UX. There is no ideal solution to React Native for navigation between displays. It is getting better and better, but as of right now React Native is not quite there yet.

Lack of Some Custom Modules: Despite its maturity, React Native still lacks some components. The chances are you won’t have a problem with that, as the majority of custom modules you need are available, well-documented and working properly. However, it may happen that you will have to build your solution from scratch or try to hack the existing one, in which case a pure JS knowledge might not be enough.

Native Mobile Development

As the name implies, native mobile app is an application written in the specific programming language for the required smartphone. Such as Swift (or Objective-C) for iOS, Kotlin or Java for Android. These being said, let’s see the advantages and disadvantages of native mobile apps vs React Native, as explained by my colleagues, Cătălin (Senior iOS Dev) and Laurențiu (Head of Android).

iOS

PROS

Performance-wise, there is no other environment that can beat native development.

You have access to the latest technologies and features, the moment they are released by Apple (and in some cases, you can hack your way into unpublished functionality).

You don’t have to pay attention to additional performance reducing bridges between react native and the iOS SDK while coding.

You get a future-proof application. You will not be faced with a sudden drop in the development platform, as Apple will continue to support their SDK and their developers. This cannot be said for 3rd party solutions which might be suddenly dropped (see how Facebook shut down Parse).

You have direct access to all the device hardware that is publicly accessible.

Access to large amounts of free components that can ease the development process and provide your app with premium functionality (addressing all development layers of the app from model all the way to UI/UX).

CONS

Higher costs due to the need of developing an app for each platform. However, cross-platform solutions will not divide the development time by the number of platforms.

For some, the need to learn a new programming language (such as Swift and Objective-C).

Android

PROS

All the development features that were specifically designed for the platform can be used as soon as they are launched (access to all native APIs)

The best performance is achieved only in a native environment, every extra layer added just adds complexity and impacts the performance

You always have access to the latest development tools and Android Studio is proactively developed to support upcoming/unreleased Android features

There’s no dependency on any 3rd party cross-platform solution developer so there’s no chance that support for the platform is dropped

Native development provides the tools for achieving the best user experience

Great community support & tools that are constantly updated & maintained

CONS

Higher costs compared to cross-platform solutions while supporting only one platform

Deployment time usually takes longer than cross platforms due to recompilation of the entire application at each deployment on device

Due to the nature of Android, OEMs often interfere with the code that is deployed on their devices; Interacting with those pieces of native APIs that were impacted by these changes might have different outcomes than expected

After this debate, which platform do you think it won? Native Mobile Development or React Native?

To be fair, one cannot pinpoint a winner. Both platforms are good and serve their purpose, although as we can see, native development tends to be more stable, more complex, and in the words of our colleagues, having a higher performance but also a higher cost. Whereas, React Native is cheaper and it takes less development time since it uses the same codebase both for iOS and Android, but its navigation is less smooth and lacks certain modules.

Since the choice might be difficult, for the aforementioned question, the answer can be narrowed down to this: pick the platform based on the app’s intended feature set and application scope.

Still not sure what platform you should use to build your product? We can help. We can do both.

Ta-da!

Bianca always wanted to be a writer - to craft fantastic stories or to be a professor at an Ivy League university. But since life decided that wasn't the path she should take, she yelled "PLOT TWIST" and became a communication professional, having the chance to work with challenging projects. She enjoys it, nonetheless, but still believes there is a huge need for dragons.