Mobile app development using React Native: Pros and Cons

What's React Native

React Native is a mobile app development framework based on JavaScript, React API and native components for IOS and Android. React Native is open-source software. Facebook introduced the first version of React Native in 2015, and it has grown in popularity ever since.

One of the reasons for such popularity is that you can use React Native to develop iOS and Android apps. So instead of Swift or Obj-C for iOS or Java for Android, you use JavaScript to create multi-platform mobile apps.

How React Native works under the hood

For better understanding, we can divide React Native into three parts:

  • Native side
  • Bridge
  • JavaScript side

The Bridge takes the JavaScript code and passes it to the Native side. The Native side is what users see and interact with – the interface.

For example, if the user swipes or taps a button, the Native side sends a signal to JavaScript through Bridge. Then by exchanging messages between the Native side and JavaScript code, the Bridge transforms native elements into something the React components can grasp and work with.

The whole process looks like this:

  1. The app starts, and the main thread starts loading JavaScript.
  2. After the initial loading of JavaScript code, the main thread sends it to another JavaScript thread. Even if some heavy calculations are happening on the JS side, the UI will not freeze to enable a stable user experience.
  3. React generates a new virtual DOM and sends it to another thread after there is a difference in Reconciler.
  4. After that, the Shadow thread (which generates shadow nodes) calculates a new layout and sends it to the main thread, and then the main thread sends it to UI.

By understanding how React Native works, we can establish the best hint to a performant app:

keep the Bridge from overloading

What type of apps can you develop using React Native?

The main benefit of React Native framework is that you can develop any application with it. If you're looking to create a multi-platform app with no complex functionality, then consider React Native. For apps with massive data flows, we would recommend building native apps.

Many companies are using React Native for their apps. For example, Tesla uses React Native to build interfaces for its cars. Airbnb also uses React Native in their applications their iOS and Android apps. Not to mention Facebook App and Instagram, which both use React Native. Another popular mobile application built on React Native is Coinbase.

Man in orange jacket is sitting in Tesla and using Tesla app
Photo by Malte Helmhold / Unsplash

You can check the list of popular companies and developers using React Native to build and support their products via this link.

React Native: benefits and drawbacks

As incredible as React Native is, it still has not only benefits but also some drawbacks.

PROS:

Easy to get started

An experienced full-stack developer (a developer who has experience with front-end and back-end components) can start developing mobile applications on React Native without special training or courses. To get started, you need to have experience writing code in JavaScript and knowledge of React. React Native is simple to develop on, so that's why it's so appealing to many devs.

Modular architecture

Modular programming is a software development technique that helps to divide the functionality of a program into several interchangeable and independent blocks called modules. This method enables flexibility for the development team, as developers can even delve into each other's projects if needed.

Development for all platforms

As we've established before, React Native enables reusing the same code for both iOS and Android. You can't develop an app for Windows, though, but developing one for macOS is possible. For a React Native app, you won't need a huge development team, as one or two developers can easily build and support a simple app.

It saves time and money

Thanks to the vast library of ready-to-use components and modules, developing an app on React Native is way faster than using any other framework. On top of that, you will need to write the code once for all platforms, which increases developing budget savings even further.

Live fixes and development

You can fix and implement UI changes while the application is being live, thanks to hot reloading. Forget about deploying changes and waiting days until they go live.

Almost native performance

While React Native falls short in performance compared to Native apps, it's still a high-speed and responsive framework. An average user won't see the difference between the two. For more complex applications, you might look for something different, but React Native is still the best solution for most apps on the market, taking into account other benefits.

It's easier to design UI

While for a Native app, you need to create a sequence of actions in the app, React Native allows seeing everything in the script. It decreases the time you need to design the user interface elements.

CONS:

It's not a Native app

As we established earlier in the performance section, React Native is still not a Native app, which can have a couple of drawbacks. The speed and performance might not be one of them, though it won't be an issue for the majority of the apps. On the other hand, the navigation might feel a bit clunky compared to the Native iOS or Android Apps.

You might need help from other devs

It's a rare occurrence, but you might need some help from other developers to access the device's hardware: sensors, camera, etc, or for some native code knowledge, as it is often required to build an app using React Native.


React Native is not a perfect framework. But for most apps, especially multi-platform ones, it's the way to design and develop. By choosing React Native, you will most likely save a lot of resources that you can spend anywhere else. React Native app development is way more manageable due to benefits, and the drawbacks are so minor, so it is the best choice for most companies.

Sergey Gyluyk

Marketing Lead

Besides marketing, I'm interested in design, new tech, fashion, exploring new places and languages.

Share

Continue reading