It is not wrong to say that mobile phones are the half soul of every individual and when it comes to Android development or iOS development, businesses often get confused whether they should offer their consumers, a mobile app with superlative User Interface (UI) and outstanding User Experience (UX) or apps that are compatible with multiple platforms and are faster to develop in the first place. And hence, there comes the REACT Native Development in the picture!

In 2012 Mark Zuckerberg commented, “The biggest mistake we made as a company was betting too much on HTML5 as opposed to native”. React Native was announced at Facebook’s React.js conference in February 2015 and open-sourced in March 2015.

With the rise of React Native popularity and the growing number of popular mobile apps (such as Facebook, Instagram, Pinterest, Uber, Discord, SoundCloud, Skype…) being partially or completely rewritten in React Native, the question arises: Should mobile developers use React Native for mobile development instead of going full native with Java or Swift?

Another reason why the REACT Native framework has gained popularity in recent years is that the framework helps cater both the platforms at one go and ends the holy war of selecting either iOS or Android development for mobile developers. 

Advantages of React Native

#1 Large Community

React Native is an open-source platform. That means all documentation related to this technology is open for everyone and is available for free to everyone in React Native community. There’s a great advantage to using a community-driven technology. For example, if you face any issue related to React Native development, you can get help from community experts or find information online.

Another benefit of working with an open-source platform is recognition for writing code. Developers can share their experiences and create portfolios, which encourages them to write better code. For example, after learning something new while working with React Native, a developer can share their experience with the GitHub React Native Community, get feedback, and collaborate with other members.

Apart from the GitHub community, React Native is also greatly supported by Facebook. Facebook developers have set up a pecial forum for long-form conversation where other developers can share best practices and solutions. In addition, there’s a Reactiflux Chat if you need to get an immediate answer to any question.

#2 Reusable code & pre-built components

This is probably the most important advantage of React Native. With the convenience of this framework, developers don’t need to build a separate mobile app for each platform, as almost 90 percent of React Native code can be reused between iOS and Android.

For companies and organizations that are considering building a mobile app, React Native is a perfect solution that can cut the time and cost in half. Moreover, if a company already has a web app written in React, much of this code can be reused for building a mobile app.

An open-source library of pre-built components in React Native greatly speeds up the process of mobile app development. It’s likely that someone already has written the code for some functions you need to deploy in your app and that you can use it for free.

#3 Third-party plugin support

The React Native framework is still advancing, so it might lack some components in the core framework. To fill this gap, React Native provides two types of third-party plugins: native modules and JavaScript modules.

For example, if you need to add Google Maps or Google Calendars to your basic app functionality, React Native allows you to link any plugin with a native or third-party module. Among the most prominent third-party plugins for React Native are React Native SelectmeReact Native Vector IconsReact Native Router FluxReact Native Gifted SpinnerReact Native Modalbox, and React Native Drawer.

When React Native isn’t a good solution

Despite React Native being a breakthrough in mobile application development, it has some drawbacks. Recently, Airbnb and Udacity shared their experience using React Native and gave the verdict that this platform has plenty of benefits but still can’t be successfully used to build absolutely any kind of mobile application.

#1 Immaturity

React Native is newer, faster, and less mature than iOS or Android. This can have a negative impact on programs. Generally, React Native works perfectly, but there are some cases when its immaturity results in unpredictable instances, which we’ll show you below:

  • The React Native framework is growing extremely fast and new updates are released every week. Every new update has a lot of changes, so developers need to regularly update their apps. Going more than a few months without updating an app can have a poor result. For example, Airbnb developers faced a problem with React Native for their mobile app development in 2017. They found it impossible to use React Native version 0.43 to React Native version 0.49 as they used React 16 alpha and beta.
  • In some cases, developers can’t limit themselves to writing code only in React Native. They might need to use an additional native code for components that aren’t compatible with React Native.
  • There are some cases when React Native components work worse than native components. For example, with long lists. Users see these kinds of lists everywhere: tweets on Twitter, photos on Instagram, and posts on Facebook are all app lists. When these lists become too huge and complicated, it’s much harder to implement them with React Native. React Native has a FlatList library to work with long lists, but it can’t be compared to the flexibility and maturity of native platforms like UICollectionView (on iOS) and RecyclerView (on Android). So using native platforms in such cases is considered more productive.

#2 Tools of Java Script

JavaScript is an extremely flexible and powerful programming language, but it is a weakly typed language. Some mobile engineers might face a lack of type safety, which makes it difficult to scale. As a result, engineers have to adopt other integrations like TypeScript and Flow to the existing infrastructure.

#3 Complex User Interface

React Native isn’t a good choice for developing an app that requires many interactions, animations, screen transitions, or complex gestures.

However, there’s a gesture responder system in React Native that runs the lifecycle of all gestures in the app, when it comes to screens with complex gestures, developers might face some difficulties as the Android and iOS touch subsystems are too different for using a unified API.

#5 Open-source libraries

Knowing several platforms well is a rather daunting task for a mobile engineer, and requires much time and effort. React Native libraries that have native bridges, such as for videos and maps, require a good understanding of three platforms to run successfully. If mobile engineers know only one or two platforms, it may lead to a lack of knowledge required to solve some inconsistencies on Android and iOS.