ReactJS and React Native - Key Difference, Advantages, and Disadvantages

ReactJS and React Native are the new web and mobile development technologies introduced by Facebook.

The project was started by Jordan Walke, a Facebook software engineer, in 2011. To simplify the development process and promote a more comfortable user experience, they decided to create a library for building a web interface with JavaScript.

So why was React created, and what are the pros and cons of using React technologies?

What is React? Historical overview

Before developing ReactJS, Facebook faced a significant user experience task: creating a dynamic user interface with optimal performance. For example, engineers wanted news feed updates to be updated simultaneously for all chat users.

To do this, Facebook had to optimize the development process itself, and Jordan Walke decided to do it with JavaScript. He proposed to put XHP, the Facebook markup syntax, in the JS coordinate system. The idea seemed impossible, but in 2011 his team released the ReactJS library based on the symbiosis of JavaScript and XHP. Afterwards, Facebook realized that ReactJS worked faster than any other such implementation.

What is ReactJS?

ReactJS is a JavaScript library that combines the speed of JavaScript and uses a new method of rendering web pages, making them highly dynamic and responsive to user input. As a result, the product dramatically changed Facebook’s approach to development. After the library was released as an open-source JavaScript tool in 2013, it became trendy due to its revolutionary approach to UI programming, which created the long competition between React and Angular, another popular web development tool.

What is React Native?

Two years later, the same group of engineers released React Native, a hybrid mobile app development framework for iOS and Android. The tool was based on the same principles as ReactJS and was soon accepted by the engineering community and companies that adhere to the mobile-first strategy.

How does React Native work?

React Native combines native application development with JavaScript UI development. While heavy computing functionality can be implemented with native modules for iOS and Android, the rest of the code can be written with JavaScript and shared across different platforms. Unlike the cross-platform tools from PhoneGap and Cordova, React Native does not use WebView, a mobile engine that encapsulates code. Instead, it provides access to native mobile controllers, resulting in a native look and feel for apps.

So let’s take a closer look at the pros and cons of ReactJS as the main product. Next, we’ll see how React Native is different and what advantages and disadvantages of ReactJS.

The advantages of ReactJS

1. Virtual DOM in ReactJS improves user experience and speeds up developer’s work

DOM (document object model) is a logical structure of documents in HTML, XHTML or XML formats. Simply put, it’s a visualization agreement on data inputs and outputs, which comes in the form of a tree structure. Web browsers use presentation engines to transform or parse the HTML syntax of the representation into a document object model, which we can see in browsers.

The main concern with the classic DOM construct is how it handles changes, i.e., user input, requests, etc. A server is constantly checking the difference caused by these changes to give the necessary response. To respond correctly, it also needs to update the DOM trees of the whole document, which is ergonomically incorrect. The DOM trees are relatively large today and contain thousands of elements.

The team behind React has been successful in increasing the speed of updates by using a virtual DOM. Unlike other frameworks that work with the real DOM, ReactJS uses its abstract copy — the virtual DOM. As a result, it even updates minimalist changes applied by the user but does not affect other parts of the interface. This is also possible thanks to the isolation of React components, which we will see below, and a unique data structure in the library.

This structure makes updates very fast, which helps to create a highly dynamic user interface. We can notice this when we write on the Facebook chat and see the news feed being updated simultaneously. Also, ReactJS developers don’t have to bind DOM to front-end server functionality because React elements are already connected to it.

This approach allowed developers to work faster with UI objects and use hot reload (applying changes in real-time mode). Thus, it’s not only increased performance but also made programming faster.

2. The ability to reuse React components saves a lot of time.

Another benefit of Facebook with React is the ability to reuse different level code components, which also saves a lot of time.

Think about designers. They constantly reuse the same assets. If they didn’t, they would have to draw company logos, for example, over and over again. It’s pretty apparent: reuse is a design efficiency. In programming, this process is a bit more complicated. System upgrades often become a headache, as every change can affect the work of other system components.

Managing updates is easy for developers because all ReactJS components are isolated, and changes made to one do not affect the others. This makes it possible to reuse components that do not produce changes to make programming more precise, ergonomic, and comfortable for developers.

3. One-way data flow in ReactJS provides stable code

ReactJS allows you to work directly with components and uses data backlinking to ensure that child structures do not affect their parents. It makes the code stable.

Most of the complex view model systems of the JS representation have one significant but understandable drawback — the structure of the data flow. For example, in the view model system, child elements can affect the parent if they are changed. Facebook removed these issues in React JS, making it only visible.

Instead of using explicit data binding, ReactJS uses data flow in one direction — down. In such a structure, child elements cannot affect parent data. Thus, to modify an object, a developer-only needs to change its state and apply updates. Correspondingly, only authorized components will be upgraded.

4. An open-source Facebook library: constantly developing and open to the community

ReactJS was one of the first JavaScript-related projects released as open-source by Facebook. It means that ReactJS uses all the benefits of free access: lots of useful apps and additional tools provided by external developers. Facebook’s Pete Hunt explains that at least two main features — batching and pruning — were created by developers who noticed the project on GitHub. ReactJS is now the fifth player in the trend on GitHub, with more than 111 000 stars. Additionally, over 1,200 open-source contributors work with the library.

5. Redux: practical state container

Certainly, Redux is independent of React, and you can use it with Angular or Vue. However, Redux is worth mentioning here simply because this tool is considered an absolute must-learn tool by all React engineers, applied in around 60% of React applications. So yes, you can use Redux with Angular, but the likelihood of a React developer knowing Redux is much greater than knowing Angular. And you’ll find more support from the community for tackling the React-Redux learning curve. So why is this good?

Redux simplifies the storage and management of component states in large applications with many dynamic elements where it becomes increasingly difficult. Redux stores the application state in a single object and allows each component to access the application state without processing child components or using callbacks. For example, when you have two features that share the same state (like detailed and general views in the image below) and stand out in the tree view, data must be passed through multiple intermediate components with all the related problems without Redux terms of heaviness.

Redux provides a centralized data store object to allow these components to access it directly.

Additionally, as states become more manageable, the app is easier to test and save. Besides, the tool allows the hot reload mentioned above and many other valuable actions. You can learn more about Redux in the book Understanding Redux by Ohans Emmanuel.

6. Wide React and Redux tool line

React, and Redux come with a decent set of related tools that make the developer’s life easier. For example, the React Developer Tools extension for Chrome and a similar extension for Firefox allow you to examine component hierarchies in the virtual DOM and modify states and properties. Additionally, you can check out React Sight, which visualizes state trees; Reselect DevTools, making it easy to debug and visualize Reselect, a library of selectors for Redux. Redux DevTools Profiler Monitor allows profiling actions in Chrome DevTools. And there are many more to try.

Disadvantages of ReactJS

1. A high rate of development

Developers Michael Jackson and Ryan Florence describe this inconvenience well: “We were driving here with two flat tires, and we have no idea what is going on! The environment is constantly changing, and developers have to relearn new ways of doing things regularly. Everything is changing, and some developers are not comfortable keeping up with such a pace.

This trend decreases over time as ReactJS matures.

2. A too light documentation

The problem with the documentation stems from the constant upgrades of new tools. New libraries like Redux and Reflux promise to speed up a library’s work or improve the entire React ecosystem. In the end, developers struggle to integrate these tools with ReactJS. Some in the community believe that React technologies are evolving and accelerating so quickly that there is no time to write proper instructions. To solve this problem, developers write their documentation on specific tools used in current projects.

3. ‘HTML in my JavaScript!’ — JSX as a barrier

ReactJS uses JSX and it is a syntax extension, which allows mixing HTML with JavaScript. JSX has its advantages (for example, code injection protection), but some development community members see JSX as a severe disadvantage. Developers and designers complain about the complexity of JSX and the learning curve that comes with it.

4. Additional SEO problems

There are concerns that Google and other search engines may not index or noindex dynamic web pages with client-side rendering. These concerns have not been fully proven, and there are tools for debunking. In 2014, Google itself confirmed that its crawlers were capable of reading dynamic content. So, we’re not going to say that Google won’t index your ReactJS app.

However, it would help if you still did some testing to make sure your app is a partner of Google, as some users have reported issues. SEO specialists recommend launching your React apps through Fetch as a Google tool to understand better how bots are experiencing them.

While not a big deal, SEO can add to your development efforts. You can read more about SEO testing of React apps here.

ReactJS and React Native: what’s the difference?

Two years after the release of ReactJS in 2015, Facebook created React Native. While the ReactJS library is developed for building web interfaces, React Native is a hybrid app development framework for iOS and Android that allows you to reuse up to 95% of the code, leaving the rest to design.’ specific interfaces to the platform.

All technical differences between the two are due to the goals of the platform.

  • While ReactJS uses Virtual DOM to render browser code, React Native uses native APIs as a gateway to render components on mobile. For example, Android components use Java APIs and call Objective-C API for rendering on iOS.
  • React Native does not use HTML. So if you’ve worked with ReactJS before, you’ll need to familiarize yourself with React Native syntax. For example, it uses <Text> instead of <p> and <View> instead of <div>.
  • Because React Native does not use CSS, standard CSS features like animation are executed with particular React Native APIs.

Benefits of React Native

The React Native framework is currently one of the fastest and most efficient environments for developing mobile applications. The same goes for ReactJS, and here’s what you need to know in terms of mobile:

1. React Native uses JavaScript — a fast and popular programming language

Let’s reiterate that JavaScript remains one of the fastest and most widely used programming languages. 55.4% of developers use JavaScript, according to the annual Stack Overflow survey. Moreover, the maturity of the JS community allows specialists to learn the language quickly and constantly progress in its use. So, you should generally be able to find a native React developer for your project promptly.

In addition, React Native leverages and combines the main advantages of JavaScript and ReactJS. For example, due to the prevalence of JS code, engineers can work faster and more efficiently because they don’t have to restart a developed application after each update to see the changes. Instead, they can refresh the view page.

In some cases, post-launch updates can be done more quickly. For example, Apple allows behaviour changes in JavaScript-based applications in real-time mode.

2. Native controls and native modules of React Native improve performance.

React Native renders some code components with native APIs, unlike other cross-platform frameworks like PhoneGap, which render code through WebView, a mobile engine. WebView approach drastically reduces performance. React Native communicates with targeted components for iOS or Android and generates code to native APIs directly and independently. To do this, React uses a process separate from the user interface, which also increases the performance score.

Native modules play another critical role. Currently, React provides a set of native modules written in Objective-C and Java out of the box. These modules cannot be reused on two platforms, but they aim for higher performance during computationally intensive operations such as image editing or video playback. Your team can apply existing modules or write custom modules themselves if they have Java and Objective-C experience. As the React community grows, some things are already available. The rest of the codebase can be reused. For example, Facebook Ads Manager shares 87% of the code on Android and iOS.

On top of that, React Native provides simple debugging and error messaging tools. For example, as with web programming, specialists can use the Chrome or Safari developer tools, which both are familiar with.

3. React Native contains all the features of ReactJS, intended to improve the user interface

React Native uses ReactJS as its JavaScript library. It, therefore, has all its advantages. To build a native React app on multiple platforms, developers don’t need to know the native platform language. They only need to be proficient in JavaScript and know React syntax. But, as mentioned, they can easily add native components to the code.

The top-down data flow is also preserved to change the main components without influencing the child components. This facilitates the development of the user interface while having a positive impact on the user experience. The applications look native in fine.

Disadvantages of React Native

1. Documentation

Unfortunately, React Native inherits the main disadvantage of ReactJS. As the community is young, the documentation available is still lacking, particularly for the integration of additional tools.

2. Expertise in native modules

We discussed native modules in the perks section. They provide flexibility to the framework by filling in the missing performance links. If you have to handle very computationally heavy operations, you can inject native modules and get a genuinely native feel to your application.

However, to some extent, this could hinder cross-platform development as you still need native engineers (Objective-C, Java, or both) in reserve. For example, you might not need React Native to build the next Photoshop mobile device. But, if you’re not aiming for tasks requiring brute force, JS expertise is enough.

3. Third-party components

That said, React Native does offer several out-of-the-box native modules for iOS and Android, but the number of third-party components is still limited. And we can’t know for sure that future versions of the framework will support community-built modules. So it remains a downside, as React Native doesn’t offer a wide range of features that developers might want to implement in their applications.

4. Late SDK update

React Native often drags its feet when iOS or Android updates their SDK. It’s because the React Native team needs to integrate a code library into the new software. And even though they work pretty quickly, they cannot update all parts of the APIs at once. That is why the full synchronization between React Native and the new SDKs often takes too long.

5. Instability, compatibility issues, and errors

Here is a short list of issues engineers encounter while working with React Native:

  • Hot reload failures
  • Incompatibilities between community libraries and different versions of React Native
  • Emulator issues
  • Navigation reaction problems
  • The need to frequently reinstall packages
  • Various other errors

Keep in mind that the tool is still in development, and the path to a smooth engineering experience will not be easy.

ReactJS and React Native Apps

Companies that have already adopted ReactJS or React Native have done so for different reasons. Here are the most notable adopters besides Facebook.

Instagram. The Instagram team wanted to create a website, a one-page app, to allow visitors to access the social platform. And ReactJS seemed like the best solution for that. The web application has been optimized and appears to be fast and comfortable for the users. Now, Instagram mobile and web apps are built with React.

Netflix. Netflix, which adopted ReactJS in 2015, now uses it with Gibbon. At the time, Netflix chose to React because of its one-ticket data feed model and declarative approach to programming.

Airbnb. The company decided to switch to ReactJS due to the reusability of its components, very simple code refactoring, and iteration. It is now used in the internal structures of the mobile application and the company’s web page.

Bloomberg. The online magazine chose React Native when developing its mobile application. According to their Tech at Bloomberg blog post, it is “the first tool that truly delivers on the promise of cross-platform native application development.”

In terms of performance, the React platform is progressive, considering the number of companies that have adopted it. While other frameworks improve the user interface in software performance, the young and sometimes messy React Native aims to change the way applications communicate with software and hardware. On the other hand, ReactJS, from a simple troubleshooting idea, has been transformed into a solution that can significantly optimize web development efforts and increase efficiency.

React continues to improve. For example, the team promises significant architectural changes and several other reforms to make the library flexible and lightweight.

--

--

--

Bhumin is a tech enthusiast. As an occasional blogger, He loves to share knowledge regarding technological advancements in the domains of web & mobile app.

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

How to write Mastermind in Javascript?

Theme Switcher using chakra UI

Local Overrides: Chrome’s Best Debugging Feature

Managed Key State in Flink

Next, Nuxt, Nest: Choosing the right Node.js framework

Advanced TypeScript: Type-Level Nested Object Paths

Example of nested object paths in typescript

7 Interesting React Hooks ⚛️

Redux, Part 1 (Components)

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Bhumin Vadalia

Bhumin Vadalia

Bhumin is a tech enthusiast. As an occasional blogger, He loves to share knowledge regarding technological advancements in the domains of web & mobile app.

More from Medium

Top 5 React JS Framework Every Developer Should Know in 2022

How to fix “RNCSafeAreaProvider” was not found in the UIManager Error

Fetching Data from Firestore and save it inside the Context

Why You Should Use React for Building Chat App