DEV Community

Cover image for React Native Pros and Cons in 2021
tomgrabski for Pagepro

Posted on • Originally published at pagepro.co

React Native Pros and Cons in 2021

I see web and mobile development technologies on a crazy race to improve their performance each and every year.

Obviously, that’s great news. Development is becoming faster and easier to execute, cheaper to implement, more user-friendly with less effort, and so on. We live in great times – implementing a business idea has never been easier and technology is opening the doors of imagination wider than ever before.

For example, let’s take a look at mobile development. Everybody wants to build an app, and everybody wants to use them (according to stats, users downloaded 178.1 billion mobile apps to their smart devices by the start of 2018).  

But until recently, creating an app was very time and cost-consuming. And before going to the market, budgets could evaporate and so could the entire project. To avoid that, businesses started to look for alternatives, and they found cross-platform development with React Native at the head as a great solution.

Today, you will learn about the pros and cons of React Native, and you will be in a much better position to make an informed decision about adding React Native to your tech stack.



What is React Native?

Meet React Native – an open-source platform created in JavaScript by Facebook. It enables you to build mobile apps for both Android and iOS. They can work on any device and still use one codebase only.

RN is a perfect technology to save on development costs, yet still having truly native performance and user-experience flexibility.

It has a number of great advantages, many awesome “ready-to-go” templates, the army of dedicated contributors, and a crowd of fans.

Not to mention world leaders as a core users:

logos of apps built in react native

It’s pretty much everything that technology needs to become hot and mature.

Although, like any other platform, it has its pros and cons and shouldn’t be used to execute absolutely every single project there is. We can see more and more developers (even native ones) choosing React Native as their core mobile development technology.

But it’s not the choice of developers only.

Thanks to many business advantages (great performance, low production and maintenance cost, and more), it’s not a surprise that many biggest players on the market are choosing React Native as well.

So what makes it so special for both businesses and developers?

Let’s dive in more deeply into advantages, and meet the pros and cons of React Native.



When to use React Native?

To keep it short, all app makers that want their apps to work on all devices, both Android and iOS operating systems, yet still keep it all in one codebase only.

Although React Native is becoming better and better in terms of performance and it seems to get closer to truly native experience, there are still many differences that we should be aware of.

Cross-platform vs native mobile apps

The most important difference between native apps and cross-platform apps is that native apps are made to work on a particular operating system. That means they can use all the blessings of that system, yet it cannot work anywhere else beside.

However, RN aims to be platform-agnostic in the future, because of re-architecturing the framework. That's why there are some new things going on, like React Native Web or react-native-windows (for building apps for Windows and macOS).

Although cross-platform apps have been made to work everywhere, they still lack the kind of flexibility and performance on a specific operating system that native apps have.

Take an alligator and a fish. An alligator can walk and swim, but will never swim as good as a fish. On the other hand, fish cannot walk at all. So cross-platform apps are like alligators. They can swim and walk, but will never be as good at swimming, as fishes (native apps).

This is why if you are planning to build a game, or something extremely demanding design-wise, you should make a comparison of cross-platform apps and native apps more closely, to decide what should be your choice, but native apps are still unconquered if it comes to performance, yet React Native is silently getting there.

Just mind that performance differences are only visible in extreme cases, so if this is not absolutely crucial to your business, React Native may appear to be a much better idea from a business and development point of view.

Take Shopify, and their decision on going full gas with React Native.

After years of native mobile development, we've decided to go full steam ahead building all of our new mobile apps using React Native.

Shopify



React Native in 2021

Before I go to the actual pros and cons of React Native development I would like to quickly stop and mention what really makes me so excited.

Re-architecture announced in 2018 puts a lot of effort to make RN more performant, e.g. there is a new JS engine available – Hermes, and it makes apps running much faster on older Android devices.

However, it doesn’t end there. The React Native re-architecture means the deprecation of the Bridge in favour of a new element called the JavaScript Interface (JSI). It enables Fabric and TurboModules.

The JSI comes together with a few improvement that really excites me:

  • The JS bundle is not bound to the JSC anymore as it can use any other JS engine – like Hermes.
  • JavaScript can hold a reference to C++ Host Objects thanks to using JSI and invoke methods on them.

JSI allows for direct control over the native modules.



React Native pros

The list below was created to give you as most comprehensive list of React Native pros as possible and to divide them into two groups – pros from a business perspective and development perspective.

If you know more React Native pros, please let me know in the comments.:

From a business perspective

  • Development speed and cost – what developers love about React is that they’re able to reuse and recycle components developed before by them and the wide React Native ecosystem. They can also share their codebase and make them work faster.
  • Works everywhere – Once you learn React Native, you can build apps for iOS, Android, and Windows.
  • User Experience – as long as you are not using extremely complicated designs and interactions, or you are not making a heavy game, you are still able to build high-performance apps with an absolutely great user experience.
  • Faster time to market – you can arrive on the market much faster to test your MVP, get feedback and adapt changes accordingly without a need for a big investment.
  • Help on demand – React Native community is massive. Many problems that you may face during development, may already be fixed somewhere out there.
  • Maintenance cost – you only deal with one codebase.
  • React Native mobile apps are visible – it’s easy to get your apps listed in AppStore and Play Store. Not like PWA.

From a development perspective

  • Easy to work with – experienced developers will definitely appreciate the development experience. Meaningful error messages, time-saving and robust tools make it a premium choice over other platforms.
  • Changes preview – you don’t have to rebuild the application, again and again, to see changes. It saves a lot of time and makes things quick and efficient. Hit “Command+R” to refresh the application.
  • Quick iteration cycles – which just simply adds more value.
  • Intelligent debugging tools – and error reporting mechanisms. Give it an advantage over others and allows developers to focus more on the productive part.
  • Easier to debug – uses Flipper as default.
  • Keep things minimal and worthy – it doesn’t force you to work in Xcode or Android Studio for iOS or android apps respectively.
  • A large community of developers – who are contributing day in, day out.
  • Code reusability – developers can easily integrate 90% of the native framework and reuse the code for any platform. This feature not only saves time but also helps to cut down the cost of building two apps. Cool thing is that you can use the web app code (written in React) for mobile apps.
  • Pre-developed components – numerous open-source libraries are available to accelerate your work.
  • Live reloading feature – it helps to compile and read the file from the point where the developer made changes. Then a new file is offered to the stimulator which automatically reads the file from the beginning.
  • Compatible with third-party plugins – and does not require high memory to process. No specific web views functions are required and native modules are linked with the plugin through the framework. Smoother running and faster loading are key features for it.
  • Transform web projects into mobile applications – work done on this platform is easy to understand, and anyone can work around it although they were not previously engaged in it. It increases flexibility and web updates become consistent.
  • Smoother and faster UI – as compared to classic hybrid ones. The interface created through React Native is highly responsive and feels fluid.
  • Expo – it’s a great tool for fast development of apps for many platforms, with many ready-to-go libraries in the SDK.
  • One codebase for all – a possibility of keeping just one codebase to run a project in an Android, iOS and web browser
  • Demo mode – when using Expo, it’s possible to build a demo for a customer without actually pushing the app to the Testflight or Google Store. The only thing we need is an Expo App on the mobile device.
  • Over The Air (OTA) updates – allow pushing quick fixes directly to users without the need to wait for App store or Google play to accept our changes



React Native cons

  • Performance is still lower than native – React Native is not able to use all the blessings and potential of a specific platform. On the other hand, native apps can really maximize functionalities and deliver the ultimate user experience in the result.However, the re-architecture puts a lot of effort to make RN more performant, e.g. there is a new JS engine available - Hermes, and it makes apps running much faster on older Android devices.
  • Not efficient design-wise – If you consider complicated designs or advanced interactions as a crucial part of your business advantage, you should definitely go for native development.
  • Custom modules – many custom modules are already available, yet, there may be a need for some specific components that you will be forced to build from scratch yourself.
  • Updating issues – it’s hard to keep the app updated with the latest React Native version. Updating RN versions is in most cases a complicated process.
  • If you are building a web app with React Native, you have to give up all the libraries that are using native modules



Further readings

In this article, you had a chance to find out about the pros and cons of React Native, but if you want to know more, we recommend the following articles:

Top comments (0)