The Other Side of React Native — Limitations & Opportunities of React Native

Ronak Patel
Jun 5, 2019 · 8 min read

It was Facebook which introduced React Native to the mobile app development world. It got all the fame because of the ability to build cross-platform apps which worked equally well on Android and iOS platforms. As per a study, cross-platform is rapidly growing and by 2020, it is estimated to grow by $80.45 billion. React Native is progressive in nature and it offers traditional and modern methods which you need to develop hybrid mobile apps. Over the last few years, the popularity of React Native has increased and this has led to an increase in the number of apps build using the technology. Today React Native developers are finding it easy to learn and adapt to the new technology by getting to know JavaScript.

Why developers prefer React Native?

When it comes to hybrid app development, today React Native is considered as the best platforms to build cross-platform apps for Android and iOS. This can be the right solution when you want to save money, time and your valuable human resources.

· React Native helps with faster development and so fewer costs

· It helps with cross-platform app development

· The efficiency of native app development increases drastically

· When it comes to cross-platform mobile app development, React Native is a leading choice

· It comes with the feature of hot reloading

· Offers out of the box focus on UI and access to Native API

· Building apps for Android and iOS with a single code base.

· Turn any web project into mobile with React mobile development

· React Native mobile app performs like a native app

· It’s compatible with third-party plugins; needs less memory and runs them smoothly

· React Native is going to stay in the market for a long time.

However, beyond this, React Native is said to have some limitations or drawbacks too.

Limitations of React native

Like any other technology React Native comes with its share of limitations. Most of these issues are now getting addressed by Facebook and the community of React Native. Still, there are some that you should be aware of before you plan to make a quick unplanned move towards React Native mobile app development. Having an idea of such concerns can prove to be good.

Native app development comes with its set of benefits

We have seen that JavaScript is fast, but Swift, Objective-C and Java are faster, especially when you have to make massive calculations. When you have to perform calculation-intensive tasks, JavaScript code is not said to be efficient and when it comes to controlling native elements, there is an overhead for JavaScript. JavaScript has a single device thread which is dedicated for it while native code can use any thread it wants. React Native can seem to be a better choice when you have not to do any heavy lifting. If your app needs much of heavy lifting, it would be recommended that you go for native development as you can easily manage memory footprint and CPU usage more closely.

Constant updates to the platform

Comparatively, React Native is an emerging platform in its young years. On the other hand, Native development is quite matured. Android(Java) and iOS(ObjC) is now booming in the market for nearly 10 years now and over these years, a good number of tools have come into existence too. Now, this cannot be called as a disadvantage for React Native, but it is true that React Native has much to catch up. Being new in the market, currently, React Native is going through development rigorously and a new version is released every month. Constant updates come up with bug fixes, new ported native components, performance improvements, and improved custom components. For platform activeness, it can be considered reasonable. If the app has to be maintained for a long-term, it can be considered as a wrong choice as there will be a need to update the platform with each build which can lead to dependency checking the code base that exists. If the logic of the components that are pre-built changes, then there will be a need to have vigilant updates to our own code when including new releases. So to keep up with the platform, the developers will have to put in some efforts which will be needed to include such changes. Many by understanding this situation completely go for React Native. You need to be sure your client understands this well when you are consulting.

Loosely-typed language

For layout, React Native makes use of HTML-like tags, CSS-like stylesheets, and JavaScript code. Here the advantage is that we get to enjoy all the benefits that come from JavaScript, but along with the benefits it brings in some issues too. Unlike Swift and Java, JavaScript does not enforce any parameters and any type of variables to functions. This means that at a time, a variable can be anything. There are certain practices to be followed for strongly-typed native programming language and the developers need to follow the standards and guidelines here.

Native language dependency

If some functionality is not found in React Native currently, then the developers end up writing native modules. Native modules can be called as a bridge between React Native code and native code. You need to write the native modules in Swift/Objective-C and Java. So during your React Native app development, you will either need to take the help of a native developer or do some native coding on your own using the native language.

Limitations of abstraction layers

We can call React Native an abstraction, which means that you are developing large chunks of code which is present between the native platform and the developer. Bugs are one of the significant issues that come with abstractions. If you face any issue with abstractions, then you will have to get into the implementation to find and fix it. At this stage, you may find issues which can be out of your knowledge area and you may end up spending more time trying to tackle such unresolved issues. Another issue that you will find with abstraction is that you will need the help of third-party to resolve the bugs of course but to maintain the framework too. The world of iOS is moving very quickly and so other companies have to move fast and keep their abstraction layer up to date to match. The features which you cannot access are another abstraction leak you will face. Most of the abstraction layers are incomplete and at the system level, some features lay low, which you cannot see through the abstraction layer.

Upcoming OS version support and long-term commitment

The lack of long-term commitment to the project is another important concern with using React Native. Like CocoaPod, React Native is not a plug-and-play solution. It is a complete software development platform, not just an SDK or a library. The project running on React Native will come to a halt if Facebook stops maintaining React Native as there is no replacement available for it currently.

The process to move to another OS version will be a slow process. Again, there is no guarantee that the OS versions will be compatible with iOS 11 or 12.

License and Patent controversy

Another important concern that you will face with React Native is License and Patent controversy. React Native has Version 2, Additional Grant of Patent Rights from Facebook along with BSD-style license. In 2017 Facebook updated the Open Source Licensing and Patent for React Native, React and other of its open source projects. Based on this update if you use Facebook over a patent issue, then Facebook will terminate your right to use its open source projects. Now, this may seem to be a bit discouraging when it comes to using Facebook over other patents. You can even say that it offers Facebook enough space to violate patents for the apps which are built on React Native. For the developers who make use of React Native, React and other open source projects, it has stirred up a lot of panics. Based on this, the creator of WordPress, Automatic completely abandoned the WordPress code rewriter they have in React.

Similarly, the Apache Foundation had a similar thought. It decided that it will no longer follow the BSD+Patents licensed code from Facebook for its new projects. Now, this may sound to be quite discouraging. Later Facebook changed its licensing norms for open source projects like React, Flow, Jet, and Immutable.js and brought them under MIT license. Still, this step has not been taken for React Native as it still remains under BSD+Patents Licensing.

Why go for React Native?

So we have seen a number of limitations of React Native. Still, you must be asking yourself, “Why React Native”? “Why should we go ahead and invest our resources into something which is so complex?” Like anything else, there is an explanation for it too.

· It allows React Native developers with customized code reusability. You can easily reutilize 90% of the codes in your native framework.

· React Native is known to offer the best performance in the industry. It generates respective code for Android and iOS by connecting the native components.

· It is possible to easily contribute to the framework which exists as it comes with technology that is community driven.

· For the developers React Native performance comes at lesser costs. Here the developers can easily build Android and iOS apps using a single framework which brings down the costs. Again with the reusability of codes, the expense gets controlled too.

· By making use of JavaScript, it becomes possible for the developers to come up with an easy to use UI/UX, which is user-friendly too.

Similarly, you will find a number of reasons which will encourage using React Native despite its limitations.

Things that React Native solve

React Native works on the principle of “learn once, write everywhere.” Now, this has helped React Native to take care of some core issues which were prevalent in the development arena before React Native was launched. This includes:

· Imperative programming

· Iteration period

· Differences in codebase

A number of developers around the world have agreed to the fact that they have been able to develop amazing apps which are entirely customized for mobile phones using React Native. Building apps which are faster and easier have now become possible with the launch of React Native. For the JavaScript developers, it becomes possible to expand their limits with ease with the reduction in development costs and instantly reloads that comes with React Native. Many believe that the only way to have an application build based on content successfully is by choosing to React Native.

Brands that use React Native

A good number of businesses startups prefer React Native to build world-class applications. Some of the brands who have achieved success are:

· Facebook

· Bloomberg

· Instagram

· Skype

· Vogue

· Pinterest

· Walmart

· Tesla

· Wix

React Native performance wins over limitations

So one thing you need to be clear about is that whenever you are looking for best framework for mobile app development, it will come with certain limitations along with its benefits. This means you have two options. You can either leave the technology and look for something else or go for a different approach to use technology in a way that can help your business. React Native is today all about offering cross-platform app development and this means if you build React Native app, you have better chances of exposure in the market. Now, this is something definitely to think about!

Ronak Patel

Written by

An IT enthusiast, who love to explore the ocean of technology. With a goal to fullfill his enthusiasm, he founded an IT development firm — Aglowid IT Solution

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade