When and Why Not Use React Native?

When & Why Not to Use React Native

Quick Summary:

Are you planning to go with React Native for your next mobile app solution requirements? Or are you confused and wondering ā€˜is React Native a good choice for your project?ā€™ React Native is one of the most popular mobile app frameworks, but it is far from perfect. Here is a quick look into the other side of React Native, that is not discussed often.

You will find many blogs and articles convincing you why you should go for React Native for your mobile app development project. And most of them hold their merit as well. However, no mobile app development framework is without limitations, challenges and flaws.

Same is the case for React Native app development. There are many use cases and practical examples where even the most experienced developers have expressed some or the other type of disappointment or annoyance working with React Native for their projects. Hence it is important to understand the downsides of React Native as well to make an informed decision whether React Native is suitable for your project or not.

React Native Key USPs from Business Perspective

React Native is one of the leading open-source JavaScript framework developed by Facebook generally known for its ability to develop cross-platform native like mobile apps for iOS and Android platforms. React Native has been successfully adopted by hundreds of big businesses worldwide like Uber, Facebook and even Microsoft. However, just because it worked for these mammoths, does not necessarily mean it would work for you too. Nonetheless, before we start knit picking on why React Native could be the wrong decision, we should focus on its key USPs that is responsible for its immense popularity that it has gained over the past few years.

  • Lower Costs
  • Faster Time to Market
  • Write Once Use Anywhere
  • Library of Native Modules
  • React Native brings JavaScript
  • Easy and straightforward Installation Process

LookinG for React developers to hire?

Get in touch to develop highly scalable web app project.

Is React Native Dead? Declining Popularity and Stats

This question has created a lot of buzz in the field of mobile app development platforms. Part reason for the decline in React Nativeā€™s popularity is due to the emergence of Google-backed Flutter that slowly but gradually started gaining wider acceptance among developers and clients alike.

A study published by Statista clearly showed Flutter leading the mobile app development platform category with 42 percent of software developers leaning towards Flutter whereas React Native declined to 38%.

Also Read: ā€“ Flutter vs React Native

Views on React Native from Developers around the world

https://twitter.com/McCarron/status/1266486079185657856?ref_src=twsrc%5Etfwā€ target=ā€_blankā€ rel=ā€noopener

https://twitter.com/ricburton/status/1378891194776739842?ref_src=twsrc%5Etfwā€ target=ā€_blankā€ rel=ā€noopener

https://twitter.com/ricburton/status/1378891194776739842?ref_src=twsrc%5Etfwā€ target=ā€_blankā€ rel=ā€noopener

Also Read: ā€“ Top React Native UI Components Libraries

Top React Native Challenges and Limitations

1. Dependency on Native App Developers

Though React Native is supposed to be a cross platform app development framework, more than often you would need native developers to utilize React Nativeā€™s core functions to their fullest. This is especially true for any project that has heavy operational burden of computation for apps build on React Native. To make this highly complex app function you need to dispose all computations to the mobile appā€™s native part that only a trained and experienced native developer can efficiently work on.

2. Issues with React Nativeā€™s Abstraction Layer

The abstraction layer in React Native acts as a bridge that allows React Native to fully activate the API rendering processes on iOS and Android. The abstraction layer is built on top of the native platform for improving overall functionality. The issue with this process is that it becomes a challenge for React Native developers to find bugs in the abstraction layer. Such bugs are generally very difficult to pinpoint and even more difficult to solve.

Another issue is if you want your reactive native app to have custom designs, you will need to rely on native languages like Objective C, Java or Kotlin. This goes against the very reason behind building a hybrid app. React Nativeā€™s abstraction layer also depends heavily on third party libraries for ensuring the integrity and consistency of your framework. Hence, if the third party integrations were unstable, your overall framework would be fragile as well.

Looking for the best React Native app development company?

Aglowid provids you full-stack React Native app development solutions

3. Dependency on Third Party Resources

Using third party resources to power your app and expand your mobile appā€™s potential is a healthy and much needed practice in mobile app development. However, when you develop your app with React Native, use cases it becomes next to impossible to build your app without depending on third party libraries. A good example of this is the Tab bar function in React Native.

When you are implementing this function on iOS, it is pretty straightforward and simple. Not the same case with Android. For getting the same feature in Android you would have to download a third party library, adding unnecessary dependency for your app that you have very less or no control over.

4. Outdated and Deprecated Third Party Libraries

As we just discussed for certain use cases you canā€™t create a fully functional and scalable React Native app without having to depend on third party libraries and resources. React Native as a framework is updated very frequently. While this is exciting and good for the overall community, the problem this leads to is that most of these third party libraries and resources often get outdated very quick and easily.

It can be exhausting to match the pace and make constant changes to keep up with the platforms update, for which reason most of these third party libraries also get deprecated. Due to this, your app always faces uncertainty and risk of being impacted heavily depending on the shelf life of the third party libraries you depend on.

5. React Native Testing and Implementation Challenges

For any beginner or experienced mobile app developer, if their intention is to switch to React Native for reducing their time to market, React Native might not be the best solution. The problem with React Native as we briefly mentioned when discussing the abstraction layer is mainly of debugging. New developers that are getting initiated in React Native cannot utilize all features of chrome debugger for editing each elementā€™s properties. Though React Native has its own built-in code inspector, it is basic and not reliable for tasks that are more complex.

6. React Nativeā€™s Architectural Limitations

React Native is based on a core architecture that has its own challenges and limitations. It uses JSON which means every chunk of data needs to be serialized into JSON and deserialized while moving out. This leads to a massive delay in the app functionalities especially if your app is data intensive. This impacts the initialization time negatively as any code written in JavaScript needs to be parsed in the JVM (Java Virtual Machine). Higher initialization time can be off putting to many users who might abandon your app.

7. Limitations of React Nativeā€™s ā€˜Reusable Codeā€™

The entire write once, use anywhere motto is not entirely true when it comes to React Native. Developers still need to make modifications and tweaks for each individual platform. The size of the extra code is influenced by appā€™s function and the targeted operating system. Generally React Native has 60-90% of shared codebase that can be entirely shared. Though this helps reduce development time significantly in comparison to native platforms, React Native is still not a true platform-agnostic solution.

8. Overall App Size

Apps build with React Native are larger in comparison to native apps. People with older devices or low network coverage areas might not be able to handle such large apps. Besides customers, do not like using heavy space blocking apps on their smartphones anyway. Any app developer should to reduce react native app size, and focus on getting their app size as small as possible, and there are a few tricks so for reducing React Native app size as well. However, it is still a hindrance and a limitation.

have a unique app Idea?

Hire Certified Developers To Build Robust Feature, Rich App And Websites.

What is React Native not suitable for?

1. Complex Interfaces

If you are looking for building a mobile app with multiple screen transitions, interactions and animations, React Native is probably not the best bet for your mobile app development project. Generally, mobile apps with need of complex gestures are not built with React Native. React Native does try to tackle this problem with its gesture responder however, when you introduce complicated gestures in your mobile app, developers will still find it challenging and difficult to integrate them in the React Native app. This is generally because Android and iOS have different unified APIs that differ quite a bit from each other.

2. Apps built for a single OS

If you are certain that, you want to target only a single OS platform for your mobile app, and then going for React Native app development does not make sense. This is because apps built with React Native will look and feel inferior to native apps on all fronts ā€“ performance, design, user interface and more. Hence, if you are certain about your project plan and sticking to a single OS, you should opt for native app development and ditch React Native.

3. Utilities like Battery Monitors

Another aspect where native app development makes more sense than React Native is when you want to build utilities like media players, battery monitors and antiviruses. These kind of apps require access to core mobile functionalities and sensors that are provided by the mobile phoneā€™s OS ā€“ Android or iOS.

4. Apps that require High Computation

We already discussed that React Native does not perform well when put under a situation that demands many user interactions. This problem extends when you try to build an app that demands high computational power from your mobile device. For instance, a smart stock trading app. Due to the basic nature of JavaScript to handle such a demand you would need to delegate some of this heavy computational tasks to the native part of your app. Ā Making high computation requiring apps with React Native would lead to slower loading apps that would then lead to lesser downloads and higher rate of uninstalls.

Decoding Case Study ā€“ Airbnb Sunsetting React Native

As you probably know, Airbnb recently decided to drop React Native as it was not matching their requirements. Previous to this, they dedicatedly got so invested in React Native back from 2016, that they created their own fork of React Native. This lead to difficulties and challenges in maintaining the language, resulting in hindrances moving forward with their development process plan. They also faced challenges debugging and updating React Native components, which ultimately motivated Airbnb to migrate their apps to native technologies.

Key identified problems Airbnb faced with React Native

  • Bridge Serialization
  • Single Threadedness
  • Delayed Initialization Times

So, Is React Native dying as it didnā€™t work for Airbnb?

No, absolutely not. Airbnb is a giant global market player that had a flexible budget to experiment and migrate between technologies as and when needed. Besides Airbnb started using React Native back in 2016, compared to which the platform has matured highly today. Moreover, Airbnb admitted via a blog post that React Native is a good framework for many applications and that they held a positive impression about the Facebook backed framework.

This post was last modified on August 21, 2023 6:59 pm

Saurabh Barot: Saurabh Barot, CTO at Aglowid IT Solutions, brings over a decade of expertise in web, mobile, data engineering, Salesforce, and cloud computing. Known for his strategic leadership, he drives technology initiatives, oversees data infrastructure, and leads cross-functional teams. His expertise spans across Big Data, ETL processes, CRM systems, and cloud infrastructure, ensuring alignment with business goals and keeping the company at the forefront of innovation.
Related Post