Order Group
Feb. 22, 2019, 6:25 p.m. | Mobile Development

Mobile App Development: React Native (Hybrid) vs. Native iOS and Android

React Native is a leading hybrid mobile development solution. The project was started by Mark Zuckerberg who since 2012 has been pushing for one framework that would make it possible to build with the same JavaScript code native apps for iOS and Android.

How hybrid mobile development works

The alternative is to develop the app separately for each platform using languages like Python, Java or Swift. If you are planning to launch an app for both Apple's and Google's platform you'd need to run two parallel projects with two development teams. It has always been a problem, that's why hybrid solutions are in demand.

React Native is the leading hybrid mobile development framework. With React Native you write an iOS app just like you would write a web app. That's very convenient, but also may cause some problems.

React Native uses React.js library for building user interfaces, another project maintained by Facebook and the community. Unlike React.js, which uses web components for the interface, React Native uses the Android and iOS library.

React Native components are similar to HTML and styling is similar to CSS. These components relate to native iOS and Android components.

The idea sounds great, but some obstacles still make going all native the right choice in many cases. Let's take a look at the pros and cons of the two solutions.

Fewer resources needed - advantage hybrid

You only use the same codebase for the two world's most significant mobile operating systems. You need fewer developers to build and support the code, there are no separate iOS and Android teams, it takes less time, and each update works on both platform immediately. You can test and optimize the application simultaneously in both ecosystems.

Imperfect touch and feel - advantage native

With one codebase come some problems. It is impossible to link the iOS and Android components directly 1:1. The two platforms compete with different design guidelines and UX module behaviors. Google and Apple want to be different since they are looking for arguments in favor of their platform.

At times hybrid solutions don't look as smooth as native ones. However, even if the two platforms share just a part of your app's code, it brings substantial savings.

A direct fix needed! - advantage native

At times React Native team have to write some platform-specific code. This may be a problem if nobody on the team has any experience with native iOS or Android development.

JavaScript quick development and instant feedback loop - advantage hybrid

JavsScript is easy to learn and very flexible. Programming in JavaScript goes very fast. Additionally, you can run and debug any JavaScript code in your browser. Such small things make the development process much more manageable.

JavaScript may be chaotic - advantage native

Both Java and Swift are strongly-typed programming languages, which means every type of data, constants or variables are defined. On the other hand, JavaScript is untyped (or dynamically typed) language. You don't have to set variables, which makes all the coding easier. However, since "everything is allowed," this may lead to a mess in your code if you are not very careful. You should control your junior JavaScript developers.

JavaScript performance - advantage hybrid

JavaScript is one of the most popular programming languages in the world. Thanks to vibrant community it's constantly improved. While JavaScript used to lag, at the moment, it's the fastest language, thanks to solutions like Node.js own server runtime and asynchronous event loop model.

Hot reloading - advantage hybrid

The developers' tools for iOS and Android (Xcode, Eclipse and Android Studio) require a time-consuming building time. At times when you are making small changes in a complex app, you have to wait long to see the result. With hot reloading in React Native let you introduce changes just to the data or screen you are working on. There are also many auto reloading mechanisms available.

Access to internal APIs - advantage native

It's easier to integrate the camera, GPS, touch ID, accessories (such as Apple Watch) and other elements when using natural solutions. If your app is focused on perfect integration with some key APIs, you may consider choosing one platform for a start and go native.

Native modules for connection with other services - advantage native

As I wrote before, you have to consider writing some native code when developing a React Native app. This is necessary when you want to connect your app with the native modules or external services.

Better publishing control - advantage native

Publishing an app may be challenging. Especially in AppStore, but also in Google. That is why you need people with some native development expertise in your team.

Should I go native or hybrid?

It all depends. You have to answer some key questions.

Do your customers prefer any of the two platforms? Would you like to launch an iOS or Android app first? Is perfect integration with some key modules (camera, GPS, etc.) essential for your product? Are you entering a competitive market with flawless UX and UI?

If the answer to these is "yes," maybe you should consider going Android or iOS native.

Do you want to reach all the devices? Are mobile apps just a part of your product? Are you developing a web app for desktops and laptops as well? Do you want to build your app fast?

If the answer is "yes," React Native is the solution for you.