Software Development Insights | Daffodil Software

React VS React Native: How do these App Development Technologies Compare?

Written by Archna Oberoi | Aug 22, 2018 12:50:28 PM

There are hundreds of javascript libraries out there, empowering developers to do more with less lines of code. And in this uber-competitive space of libraries and frameworks, React has managed to come out on top. In the React VS React Native tilt, list below are the key fundamental differences between the both.

  • According to StackOverflow Survey 2018, 69.4% developers voted React as one of the preferred JS libraries for app development.
  • React is one of the most popular JS libraries on Github with 109,313 stars and 1,227 contributors by August 2018.

React is a javascript library for building interactive user interfaces. It was developed at Facebook in 2011 so that javascript can manipulate a website's DOM faster using the virtual DOM model.

Today, React is one of the most popular open-source JS libraries for developing web UI. Three of the prominent elements that are giving an edge to React over its competitive libraries are:

1. Reusable Components: A component in React is a piece of UI. When building an app with React, a number of independent, isolated, and reusable components are developed, which are then composed to build a complex, comprehensive user interface.

Every React application has at least a root component, which further contains other components, making a tree like hierarchy. In an application like Twitter, the navbar, profile, trends, and feed are its components. Feed can further have Tweet component, which can be used in other pages, or in different pages. The concept of reusable components differentiate React from other frontend development libraries.

2. Virtual DOM: Each component in React have some state and render method. While the State is the data that is to be displayed when a component is rendered, the render method is used to describe how the UI should look. The output of the render method is a React element, which is a JS object that maps to the DOM element.

class ABC {
  state = {};
  render() {
     // Return a React element
  } }

React keeps a lightweight representation of DOM in memory, which is called the virtual DOM. Whenever state of a component changes, a new react element is created. React then compares this element to figure out the changes and updates the real DOM to keep everything in sync.

3. Declarative Programming: React has declarative programming style wherein developers don't get bogged down in the implementation details of representing the state. Being able to describe the state reduces the surface area for bugs dramatically.

Suppose a UI component- “Like” button has be to be built. When a user taps it, it turns blue, if it was previously grey and vice versa.

Imperative:

if( user.likes() ) {
   if( hasBlue() ) {
       removeBlue();
       addGrey();
   } else {
       removeGrey();
       addBlue();
   }
}

If the UI component is programmed imperatively, it will check what is already there on the screen and then handle changes necessary to redraw it from current state. While this programming style might work for simple UI components, for complex UI components, this may invite errors.

Declarative:

if( this.state.liked ) {
   return <blueLike />;
} else {
   return <greyLike />;
}

If the UI component is programmed declaratively, it only needs to handle how the UI should look in a specific state, which makes it a relevant approach for complex component development.

React VS React Native: Key Differentiators  

React Native is just a consequence of React, which enables building native apps using JavaScript. By using the same design as React, it allows building rich mobile UI from declarative components. It uses JavaScript and XML-esque markup, known as JSX to develop mobile app interface.

With React Native, it is possible to build native mobile apps for Android and iOS (similar to those built using Java, Objective-C, or Swift). With this React framework, it is possible to mimic the behaviour of a native app using Javascript and get platform specific code as the output. Some of the prominent benefits of React Native for mobile app development includes:

Single Environment for Multiple Platform: React Native facilitates cross-platform native app development, i.e. the code written for one platform can be used on another platform. Without compromising with the look and feel, React Native empower businesses to build cost effective mobile apps and enable developers to bring down the burden of creating new logics, integrating different APIs for two different platforms.

Combine React Components with Native Code: Developers can optimize efficiency of an app by combining components of Objective-C, Java, or Swift with React Native code. It’s easy to build a part of app components in React Native and a part of it using native code and then merge them together.

Google Play Store and Apple Store have a number of apps built using React Native, which affirms its efficiency to build scalable, complex mobile applications.

React VS React Native:  Which Technology to Choose?

React is UI library for the view of your web app using javascript and JSX while React native is an extra library on the top of React, to make native app for iOS and Android devices.

If your requirement revolves around building interactive web interfaces, go for ReactJS, and if it is around building cross-platform native apps, then React Native is the right choice.