React Native Pros and Cons [2023 Update]
Their data also shows that developers without previous experience with the framework picked it as the third most-wanted-to-learn technology. With companies such as Microsoft or Shopify building their apps with React Native, it has proven itself to be a reliable choice for businesses across various industries.
The key advantage of cross-platform frameworks can be suggested by their name: they allow developers to write one code and utilize it across different systems. As a result, apps can be built faster while demanding fewer resources. However, this doesn’t mark the end of native app development. Why? A closer analysis of React Native will allow you to better understand what it is and which projects can benefit from its use. Read on to learn about the framework's newest features, benefits and drawbacks, and other companies' experiences with it.
What is React Native?
React Native is an open-source JavaScript framework introduced by Meta. It’s based on React, the same programming language library focused on building websites. The framework, however, is mainly used for mobile app development. React Native enables one code to be utilized across multiple platforms, such as iOS or Android. So, instead of spending resources on writing separate, native codes, why not consider relying on a universal JavaScript one? Let’s examine when developing apps with React Native can be more convenient than doing so in native environments.
When to use React Native?
While cross-platform app development frameworks, such as React Native, bring a number of benefits, they can’t be used in all projects. In that case, when exactly is choosing RN most effective?
- When you create a more straightforward app and/or don’t use many native features not yet accessible in React Native (so-called APIs) like Dynamic Island
- When you want to create an MVP as fast as possible with minimal development costs for multiple mobile platforms
- When you have an existing team of React web developers and don't have resources for a new team or an external company
- When you plan to build an interdisciplinary dev team able to work on mobile and web skills (React Native and React) at the same time
As mentioned, cross-platform frameworks have some limitations. There are instances, such as projects with many features specific to the particular platform, where proceeding with native development would still be recommended.
React Native 2022 features
In March 2022, Reactive Native released the New Architecture rollout, a part of 0.68 version. This update introduced devs to a new Fabric render which greatly improves user experience and performance of the apps built in the RN framework.
The 0.69 version included React 18 enabled by default. The implemented update meant that some mechanisms previously only available in web development could finally be introduced to iOS and Android. These include Concurrency, a new behind-the-scenes mechanism enabling React to prepare multiple versions of UI at the same time.
But that’s not all – version 0.70 comes with Hermes enabled by default. This JavaScript engine reduces app startup time and further boosts the performance of apps developed with RN.
As the Reactive Native architecture improves and becomes more mainstream, the entire ecosystem profits. The framework becomes faster and provides a better experience for both users and developers.
React Native advantages and disadvantages list
Before choosing React Native for your app development process, check the React Native advantages and disadvantages list.
React Native pros
1. Accelerated development
Cross-platform apps require less time to develop in React Native than in native technologies. That’s because RN provides numerous ready-to-use components which can accelerate the process. The framework is based on JavaScript and gives access to the largest package ecosystem in the world. As an example, we built the very same app with both React Native and Swift. The latter took as much as 33% more time to build and still was working solely on iOS!
2. Faster to learn for React developers
Most of the devs with React experience shouldn’t have a difficult time developing RN apps, and vice versa. That’s because many ideas and modules in both systems overlap. Thus, devs who are familiar with one of these two environments will require less initial training when approaching the other one.
3. Quick fixes (OTA updates)
Over-the-air updates are another benefit that comes with React Native app development. They allow you to introduce quick fixes or deliver new, small features directly to users. In such instances, you can deploy them without awaiting for third-party approval (e.g. App Store or Google Play). OTA updates are automatically downloaded on the user’s device during the startup screen. The downsides? These updates work solely with Javascript bundles. Also, more notable changes still have to be examined by digital distribution services before the launch.
4. One framework, multiple platforms
Building apps with RN is convenient, as it allows to reuse the codebase (or parts of it) between multiple platforms. This applies mostly to mobile environments but also to websites and computer or smartTV operating systems.
Developing with JavaScript provides an opportunity to share the codebase with React web applications. As a result, the same devs can work on both web and mobile apps, as the technologies are very similar. Such a solution isn’t ideally stable yet but the possibility of sharing non-UI-dependent code is still beneficial. It not only shortens the development time but can also improve the consistency of the app’s business logic between all supported platforms.
In addition, the same React Native code can be partially used to develop apps in operating systems such as macOS, Windows, tvOs, or AndroidTV. Nevertheless, more complex ones might still have to be written in custom platform code.
Many multi-platform features are already available in npm packages (a set of open-source tools for devs), and sometimes it might be even possible to complete the entire development in RN. However, a number of features will still have to be written from scratch – only projects with a few native modules could be fully developed in JavaScript.
5. Fast refresh
This feature provides an excellent developer experience: it implements changes in the code in real-time without a need to reload the entire app. Thanks to this, building new features or bug fixing is less time-consuming and improves devs’ work efficiency.
6. More cohesive team
Native development requires two separate teams for each mobile platform: one for Android and one for iOS. Having two teams working separately towards the same goal might be difficult, since projects may lack consistency if not managed properly. React Native allows one team to work on multipurpose code, using only devs with detailed native skills for building particular native components.
7. Good performance
We ran a test and compared two versions of a simple application written in both React Native and Swift. The two apps achieved very similar performance results and the differences were almost unnoticeable. Nevertheless, to accomplish as good results as in native, the devs have to put extra attention to the JavaScript code.
8. Simplified UI
React Native is solidly based on creating a mobile UI. In native solutions, you will need to create a sequence of actions in the application. React Native uses declarative programming in which such an order of implementing actions is obsolete. As a result, it is much easier to spot bugs on the paths a user can take.
9. Large developer community
React Native is an open-source platform that allows developers to contribute their knowledge to the framework’s development, freely accessible to all. If a developer experiences a problem, they can turn to the community for support. As of November 2022, there were over 120,000 active questions on the React Native tag on Stack Overflow, some with several dozen comments.
React Native cons
1. Compatibility and debugging issues
What might be surprising is that even though top tech players, such as Microsoft or Meta, have used React Native for years, it’s still in beta. While the framework is constantly updated, it hasn't reached the 1.0 version yet. As a result, developers might come across various issues with package compatibility or debugging tools. Besides, due to the large amount of community packages, there is a risk that some packages you might be interested in are no longer maintained or compatible with your project.
2. Upgrading issues
Each React Native upgrade brings further improvements, so using an updated version is recommended. However, you can't always entirely rely on the automatic update implementation: you might face some unexpected issues when adapting to the new version. Fortunately, there are upgrade helpers and community guides that can support you during the transition between your current and any higher RN version.
3. Lack of custom modules
As of now, React Native still lacks some components and others can be still underdeveloped. Thus, you might have to build your solution from scratch or try to hack an existing one. Then, instead of only one codebase, you could end up with three: one for RN and native codebase for Android and iOS. This may result in differences in the behavior and appearance of an app on various platforms. Fortunately, those situations don’t come about often and chances of encountering such problems are pretty low.
4. Native developers might still be needed
The necessity of introducing dev with native programming skills depends on the complexity of the project. In some cases, RN dev should be able to write a native code if the need arises. Nonetheless, some native features (e.g. Dynamic Island) might still require a developer with detailed knowledge of a particular platform. Although React Native offers more and more open-source libraries that provide easy access to the native platform features, sometimes it might not be enough.
5. React Native forces extra consideration
App developers using React Native have to pay more attention to the performance and write comprehensive code from the get-go. They should avoid unnecessary rerenders, as these can significantly slow down more complex parts of the app. In comparison, writing codes in e.g. Swift development gives devs more breathing space for fixing errors.
Alternatives to React Native
1. Native apps development
Undeniably, the native environments are the main RN alternatives. Here, two separate teams develop two separate apps for iOS and Android. The main concern, however, is the extra attention required to keep apps consistent on different platforms. Nonetheless, if you’d like your app to have a truly native user experience or introduce modules specific to a particular platform, you should probably proceed with native development.
2. Flutter
The most popular cross-platform alternative to React Native is Flutter, a mobile application framework based on Dart introduced by Google in 2015. We analyzed Flutter’s benefits and downsides and concluded that it can provide excellent performance and a native look to the apps. However, for some, Flutter’s main characteristic can become the biggest disadvantage – writing code in Dart. Many frontend devs can find it easier to switch to React Native (especially for those with some React experience) than to learn a completely new language. On the other hand, Java or C# developers may find coding in Dart easier.
3. Kotlin Multiplatform
Despite debuting rather recently in 2020, Kotlin Multiplatform has grown into a strong React Native competitor, entering the beta stage in October 2022. Kotlin's main advantage is its flexibility: you choose which parts of code you want to share. You can select only some parts of the logic, e.g. state management or requests, and will only have to write a separate UI. This gives an opportunity to intertwine some native code with the common code. Kotlin's biggest drawback is that it’s a relatively new technology which doesn't have many supporting libraries yet. In addition, it requires the involvement of devs familiar with Swift or other coding languages.
4. Others
There are many other alternatives for cross-platform mobile development. NativeScript is a framework that allows for the development of mobile apps using web frameworks like Angular or Vue.js. Xamarin uses the C# language and, just like RN, it compiles the code to native controls. Ionic is based on rendering apps inside a WebView, which can be slower than other approaches. An interesting alternative for a simple application might be developing a Progressive Web App – a special type of website adapted for mobile and offline use.
React Native experience – how does the framework perform for other companies?
React Native has been popular among developers and adopted by many organizations throughout the years. To gain a wider perspective on how this framework suited companies that implemented it, let’s look into some prominent cases.
In August 2022, Discord announced that they arefully transitioning to the React Native environment. Their biggest pain point back then was the delay of Android updates which were implemented only after desktop and iOS features had gone live. Now, because of React Native, Discord can improve their products on multiple platforms at the same time. This also gives room for their devs to focus on implementing more frequent and coherent updates.
At the beginning of 2020, Shopify, a multinational ecommerce company, decided to adopt the React Native framework. They are continuously improving their development practices, implementing native environments only where necessary.
Microsoft is probably one of the most impactful players in the React Native community. Thanks to their efforts, React Native supports Windows and macOS applications.
A global weather app, Foreca, faced issues with launching consistent updates across iOS and Android. The company wanted to ensure that users of both platforms would have the same experience with the app. However, they noticed that native codes weren’t sufficient and, thus, made a switch to React Native. Importantly, Foreca found it more efficient than the previous approach, as it not only improved the speed of development but also allowed them to be more agile with updates. The drawbacks they noticed include troublesome debugging or delays in RN supporting new native features.
The world's largest online art marketplace, Artsy, wanted to build an interdisciplinary team in which devs can develop both websites and mobile apps. Since the company was already using React, they decided their goal would be best achieved through React Native. However, they still write native code where necessary.
On the other hand, one of the biggest companies that invested in technology, Airbnb, decided to sunset React Native. The company returned to native development due to multiple technical and organizational issues they had experienced with JavaScript coding.
React Native as a way for cross-platform app development
According to a2021 developer survey, 38% of devs picked React Native as their multi-platform framework of choice. Such a share means it holds the second place – only a few percentage points behind Flutter, its first-place competitor. React Native has not only gained enormous popularity among devs but also among businesses such as Shopify or Microsoft.
Even though it can’t fully substitute native coding, RN still brings a number of benefits. It allows developers to utilize one code and implement updates or changes consistently across different platforms. They can also build apps fast and, in case of any issues, turn to the community for advice.
At the beginning of 2017, Netguru decided to invest in React Native despite the fact it was still relatively unstable back then. Now, 19 of our devs use its stacks daily, and we have 77 React Native app development projects on our account (while writing this article). We even host a React Native Academy where we can share our knowledge with the community.
We’re not only glad to work with the framework's present version but, observing React Native evolution, we are also looking forward to the future improvements of RN.