Native mobile apps were a gold standard for a long time. When built well, they show an excellent performance, look great and provide users with platform-specific features you cannot find anywhere. However, with the appearance of cross-platform tools, many businesses and developers were mulling over the lucrative idea of launching their products on several platforms simultaneously. This looks appealing, isn’t it? Build once, deploy anywhere and have only one team to maintain your app!

Since then, the question whether cross-platform apps could substitute native ones was the subject of heated debate among software engineers and tech giants as well. Let’s have a look at React Native — one of the most popular cross-platform mobile development frameworks. While Shopify raves about its capabilities and goes all in with React Native, Airbnb criticized it by stating that they are “sunsetting React Native and reinventing all their efforts back to native”.

So, where is the truth? Is React Native the future of mobile development or native apps will still dominate the industry? Let’s try to figure it out in this short article!

What is React Native?

For those who are new to the topic, React Native is a cross-platform mobile development framework written in JavaScript. The story of its foundation goes back to the summer of 2013 — Facebook's internal hackathon. Developers could test the first release of the framework in January 2015, and since then it has been constantly evolving to provide practitioners and users with outstanding experience.

Despite being a relatively young technology, React Native framework received a wide application in a variety of industries. It has one of the fastest growing communities on GitHub and Stack Overflow. You can also meet different groups of React Native developers on Facebook, Twitter and various other platforms, such as Reactiflux or Reddit. With so many adopters out there, you have multiple ready-made plugins and solutions at your fingertips to build an app without a hussle.

However, along with an army of followers raving about the framework, you can find a bunch of haters on the net who won’t exchange native development for any cross-platform counterpart. As Nader Dabit once said on Twitter “React Native has more haters than Kanye. Maybe that’s why the framework and community just keeps getting stronger”.

What is so good about React Native? Pros of React Native

Fast Development

When you have a single team to build your cross-platform product, it is easier to keep track of the process. You do not need to check up with Android or iOS developers to fix bugs or organize sync ups, which means you can have your mobile app ready faster and be the first to launch it on the market.

Apart from synchronized development cycles, React Native has one substantial advantage that differentiates the framework from its rivals — “hot reloading” function. It allows making changes to the app and reviewing their results almost immediately. Moreover, you can take advantage of “live reloading” to automate the building process and get rid of the manual work. In contrast to native development, where the process of rebuilding an app is a long-lasting burden, React Native saves your developers’ time and effort.

What is more, in React Native 0.61 the creators decided to unite “hot reload” and “live reloading” functions and presented “fast refresh”, which appears to be the mix of both. A new update addressed the major paint points developers experienced with “hot reloading”: the function was unreliable and often failed to update the screen. Furthermore, if you have any typos or mistakes in your code, it doesn’t work. A new function copes well with typos and falls back to full reload when necessary.

Cost-Efficiency

Building two separate mobile apps for Android and iOS might appear to be quite a pricy venture. You need to assemble two different teams, which will be cooperating to bring your idea to market. In such a scenario, you’ll have to work with both of them to ensure your product meets the users’ expectations. By opting for a cross-platform alternative, you can cut costs without compromising on quality.

Rich Talent Pool

React Native combines the benefits of both worlds as it was created based on the best practices of native development and React, which is considered to be one of the most efficient JavaScript libraries for building user interfaces. In addition to being demanded and popular, these technologies have a mild learning curve. So, web developers when they get bored doing their job or want to upgrade their skills, often switch to React Native to work with cross-platform mobile apps. It means hiring React Native developers will be much easier for you compared to Kotlin or Swift developers.

Potential for 5 Platforms’ Support

Are you looking for the technology to build a mobile app that would be accessible to a broad audience? Then React Native might make a perfect match for you. There is a common misconception among non-tech people that the framework can only be used for Android and iOS. There are a set of community-supported projects that allow building an app that can be launched at several platforms (including Windows and MacOS). Furthermore, the framework is constantly evolving to support new platforms, which provide plenty of opportunities for businesses and developers as well.

A Big Community

When your development team is stuck with a challenge, it might take a considerable amount of time for them to find a way out. Building a solution from scratch might appear to be a resource-consuming process that may delay the launch of your product. However, a big community of React Native fans might have already had the same issue, so they may provide you with all the necessary tools to fix a problem as soon as it appears.

JavaScript Engine

In 2019, Facebook presented a new open-source JavaScript engine called “Hermes” with an aim to improve the performance of React Native mobile apps on Android. With the help of static optimization and compact bytecode, it reduces the app’s size, optimizes the startup time and enhances memory utilization. In such a way, this engine enables developers to build cross-platform applications that provide superior native-like experience.

Hassle-free Debugging

Flipper is a convenient tool that enables developers to debug React Native mobile apps quickly and efficiently. It has already become an indispensable instrument in many companies and teams. Metro Action, Crash Reporter, React DevTools, Network and Native Layout Inspector are just a few out of numerous features that go out of the box with this instrument. And in new React Native 0.62, it goes by default, so you don’t need to waste your precious time installing and configuring it.

Apart from this platform, you might find a set of commands that allow troubleshooting and fixing errors in your development environment. In particular, Meet Doctor is a new React native command that allows developers to find issues in their code and fix them automatically. It is currently supported by most of the libraries React Native relies on, including XCode and Android SDK.This feature saves the time of your development team and ensures you get excellent code free from bugs and errors.

React Native Gets Even More Native

Each year cross-platform apps become more and more native-like so that soon an average user will hardly differentiate between an iOS and React Native application. Almost all the elements can be written to reflect native ones including colors, buttons, etc.

Cons of React Native

React Native is Written in Dynamically-typed Language

Your development team might tackle a few issues in the process of product creation. In contrast to Swift or Kotlin, JavaScript is a dynamically-typed programming language, which means it does not enforce any parameters to functions and variables. In such a scenario, a variable might be anything. To prevent such cases, there are a set of standards and guidelines developers need to follow. But, fortunately, there is Typescript to aid you in such situations.

Lack of Some Native Modules

While developing custom solutions, your team might need to insert the parts of native code into your product. In this case, you might end up having several codebases instead of a single one, which will demonstrate substantial differences in behavior and appearance. However, these are minor cases that do not often appear, so you are unlikely to face this issue.

What is the Future of React Native?

2019 was the year of great updates for React native, which made it even more developer-friendly and easy to use. Facebook introduced a new JavaScript engine named “Hermes”, “fast refresh” came to substitute “hot reloading” function, Meet Doctor was launched to make debugging even easier.

So, what should the React Native community expect in 2020? The future of React Native looks bright. This year the creators are introducing a new architecture to the framework, which is expected to revolutionize the way developers approach cross-platform development. The project will involve 3 major improvements:

JSI

React Native uses an engine to interpret JavaScript code and make it run on native applications. Based on the guidelines of Android and iOS, the contemporary architecture utilizes JavaScriptCore directly. However, with a new update, the team is going to introduce the third element, JavaScript interface, which will significantly speed up the application and make JS and native parts really synchronized. With JSI, developers will be able to use native objects as JS ones and vice-versa.

Fabric

The team is about to introduce a new renderer called Fabric, which will actually eliminate the bridge and let the UI be called directly from the JavaScript thread with the help of native code. This step will allow better synchronization and enhance the responsiveness of user interfaces.

TurboModules

The new React Native architecture will enable the app to load modules only when it needs them. In contrast to native modules, which are all loaded at once on the launch time, TurboModules are expected to guarantee better performance and make cross-platform apps significantly faster.

As you might have guessed, these changes will open the doors to new opportunities for businesses and developers likewise. As for now these are just rumours, but soon we expect to see significant improvements that will profoundly impact codebases and the development process as a whole.

Wrapping Up

Native or cross-platform? That is the question. With the possibilities the framework delivers, skilled software engineers will be able to build an app of any complexity for your business and launch it on several platforms. React Native will provide you with a chance to reach a broader audience, cut development costs and significantly shorten your Time to Market.