<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=160269078105920&amp;ev=PageView&amp;noscript=1">

Mobile Development: Pros & Cons of React Native

Tuesday 23 of July, 2019.
Reading Time: 4 minutes.
By Anamari Morales & Pamela Araya

As more and more people make technology a part of their lives, the demand for mobile apps increases with it. The industry is always looking for shorter development cycles, quicker deployment, and better app performance. Businesses creating mobile apps face two paths: 1) apps that are developed faster and that run on several platforms and devices (compromising user experience) or 2) apps that offer great user experience (imply more coding time). Sometimes, businesses are forced to make sacrifices when facing these two options.

Cross-Platform frameworks, such as React Native, aim to narrow the gap between performance and ease of development. React Native started as Facebook’s internal hackathon project in the summer of 2013 and has become one of the most popular JavaScript frameworks. This is a tool for building composable user interfaces. It encourages the creation of reusable UI components which present data that change over time. React Native has the same principles as React JS, except that it is not manipulating the DOM via the Virtual DOM but relies on native SDKs.

In this article, we will discuss why and when React Native can be a good option for your solution and when it’s better to think of another approach, such as pure native development.

Why React Native Could be a Good Option for Mobile Development

Facebook, Instagram, Wix, Walmart, Bloomberg, Pinterest, and other big brands use React Native's advantages. Here’s why:

Most popular programing language in the world: React Native is written in JavaScript and according to the Stack Overflow Developer Survey Results 2018, for the sixth year in a row, JavaScript is the most commonly used programming language. This allows companies to take advantage of front-end developers’ skills.

Identifies the needs of different platforms: When developing a mobile app using a cross-platform framework, developers face a number of challenges in terms of hardware, operating system, and a lot more. Even though React Native was originally introduced for iOS, Facebook developed its support for Android as well. Now, developers can build apps (for iOS and Android) through one codebase. Moreover, you can embed native code conveniently (if it were necessary) to impart a more platform-specific authenticity to your app.

Supported by Facebook and a growing community: Developing apps in a relatively new framework makes us wonder about its viability and if it will have good support. In the case of React Native (still a young framework), a good team of Facebook engineers openly supports it and its community is constantly growing. This is an open source project with a large list of contributors who work constantly, focused on making the project even better.

React Native is all about the UI: React Native focuses on the construction of UI for mobile apps, looking more like a JavaScript library than a framework (and yes, React Native is a framework, ReactJS is a library). This results in a UI that feels fluid (due to the interaction of JavaScript with the native environment), with quicker load times than a common hybrid application. Even though React Native was born to be multi-platform, it will respect the UI guidelines for each platform and you can even specify a specific look during the creation of the app.

Component-based development: One of the biggest advantages that React JS brings is the ability to build entire apps by reusing components. This increases the speed of development and is a good way to isolate bugs as well. This component style is also included in React Native, providing the same level of speed and granularity.

When is React Native Not a Good Idea?

We have covered how amazing React Native is and you may be thinking it’s the answer to all your mobile problems. But there are some aspects you should take into consideration before deciding if you should develop your app in React Native or in a native way:

High Performance: If your app requires high performance and productivity (like a game app or an app that requires multiple animations), cross-platform development is not the best way to go about it since you can have issues with screen response (especially if your animation exceeds a speed of 60fps). React Native performance for multitasking apps sometimes loses in comparison with the same showings for native applications. In this case, it’s best to use native development and take advantage of its performance.

Responsiveness: In terms of responsiveness, even when React Native compiles with native code, we have detected a difference between a fully native app and a React Native app. Due to this, the developer has to tackle these details and improve the user experience either with pure style or using libraries that make things easier, like React Native Elements.

Security: If your app requires a high level of security to save private user data that will be used actively (like payment cards info), you will need to pay extra attention to the components that you use. JavaScript is famous for its fragility (some of the most common Javascript security vulnerabilities are Cross-Site Scripting (XSS) and Cross-Site Request Forgery (CSRF)). Native applications use built-in security mechanisms so they are a better option for this kind of app. Another important aspect in regards to security is that the libraries that you generally use are not official; they were created by someone else in the React Native community and for this reason, they don't have official support.

Maintenance: If you plan to maintain your app over a very long period of time, or you want to add new features and evolve with new technologies like Face ID, you need to be patient. React Native is still in development and is regularly updated. Therefore, you may need to have a developer constantly checking if the platform has been updated, if the components you added are still working like you expected (especially if the native platform progresses faster, there will always be a gap between some features) or if the community development updated or developed a library for new features. In the long run, this could be expensive.

On the other hand, if you want to include special native features for an Android or iOS app, you will require additional knowledge in native development. So instead of having one developer, you end up with three (and three different developing environments); which can also prove to be expensive in the long run.

About Avantica

If you are looking for a software partner who will work towards your own business goals and success, then Avantica is your solution. We offer dedicated teams, team augmentation, and individual projects to our clients. We are constantly looking for the best methodologies in order to give you the best results.

Let's Start a Project Together



About the Authors



Preparing for an Interview: Guidelines & Tips
Managing Infrastructure States with Terraform