React-Native is very similar to ReactJS, but there are some differences you need to know. In this article, I’m elaborating the main differences I have encountered as a ReactJS web developer who learned to use React-Native and built a few native apps with this technology.
What is React
React is an open-source JavaScript User Interface (UI) library created and maintained by Facebook. It allows you to create advanced UIs from tiny and isolated items of code referred to as ‘components’.” This library is especially useful for creating dynamic web pages that process data in real-time and can display the changes without reloading the webpage– like the Facebook / Instagram feed we all love.
React Native
React Native is an open-source JavaScript framework consisting of native libraries for creating mobile applications, released in 2015 by Facebook, can be used to develop for mobile applications for all platforms.
So, the main difference between both of them is, ReactJS is for web development and React Native for mobile app development.
DOM Styling & Animation
Web applications which are built on ReactJS mainly depends on CSS or other JavaScript libraries for animation while React Native has got this feature inbuilt.
React Native doesn’t use HTML or CSS for rendering the mobile app. You can’t use tags such as ‘div’ and ‘p’ to organize your content. You can’t include .css files.
However, React Native provides alternate ways to do the same things. Components replace tags and you have to write your styles in JavaScript files. For example, ‘text’ replaces ‘p’ and ‘background-color’ becomes ‘backgroundColor’ to follow camel case convention we use in JavaScript.
Because your code doesn’t get rendered in an HTML page, this also means you won’t be able to reuse any libraries you previously used with ReactJS that renders any kind of HTML, SVG or Canvas.
To style your React-Native components, you will have to create stylesheets in Javascript. It looks similar to CSS, but it’s not exactly the same. This can be quite confusing initially, and you might reach a point where you wonder how you can create mixins like you would do with SASS, or how you can override the style of a component you would like to use.
Since there is no CSS, you can bid farewell to CSS animations. You can use React Native’s Animated API for animations.
Though it takes some initial learning, the output of React Native is far better than that of ReactJS.
Navigation
Web pages which are built in ReactJS use React-router for navigation while React Native has an entirely different library named Navigator.
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 components in React Native Mobile App and a part of it using native code and then merge them together.
Code Sharing with ReactJs
We can share code with ReactJs if our project is in react native with the help of react-native-web.
We know that React Native is the perfect choice to build IOS and Android apps with a single code base without impacting the maintenance & quality of code. The major challenge is to maintain a similar thing for a web app that React Native Web is trying to solve.
Advantage: – It saves cross-platform app development time. It helps you to build apps with web technology. If you are already familiar with ReactJs the skills are transferable. Just like in ReactJs all the components are made separately and are then put together to make an application. React on the web and React Native has the same general JavaScript structure with props, state, and all the standard React component lifecycle methods. React Native also uses JSX as the templating language in the component’s render method to define the UI.
React Native Web allows us to run React Native components and APIs on the web using React DOM.
React JS vs. React Native
Basis of comparison | React JS | React Native |
Definition | It is a JavaScript library that is used for developing user interfaces for web applications. | This is a framework used for developing mobile applications and has built-in libraries. |
Navigation | The React router library is used for navigating web pages. | This has a library Navigator for navigating mobile applications. |
Animation | It uses JavaScript libraries and CSS for animations. | It has built-in animation libraries. |