React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.

React Native, which enables native Android, iOS, and UWP development with React, was announced at Facebook's React.js Conf in February 2015 and open-sourced in March 2015.

On April 18, 2017, Facebook announced React Fiber, a new core algorithm of React framework library for building user interfaces.[8] React Fiber will become the foundation of any future improvements and feature development of the React framework.


React is a JavaScript framework for building reusable UI components. These can easily have their state and properties managed and kept in sync with other components that share the same data. This data binding and state management is very conducive to building dynamic applications.

React can be used in the development of single-page applications and mobile applications. It aims primarily to provide speed, simplicity, and scalability. As a user interface library, React is often used in conjunction with other libraries such as Redux.

Notable Features

  • One-way data binding with props
  • Properties (commonly, props) are passed to a component from the parent component. Components receive props as a single set of immutable values(a JavaScript object). Whenever any prop value changes, the component's render function is called allowing the component to display the change.

  • Stateful components
  • States hold values throughout the component and can be passed to child components through props.

  • Virtual DOM
  • Another notable feature is the use of a "virtual Document Object Model", or "virtual DOM". React creates an in-memory data structure cache, computes the resulting differences, and then updates the browser's displayed DOM efficiently.This allows the programmer to write code as if the entire page is rendered on each change, while the React libraries only render sub components that actually change.

  • Lifecycle methods
  • Lifecycle methods are hooks which allow execution of code at set points during the component's lifetime.

    shouldComponentUpdate allows the developer to prevent unnecessary re-rendering of a component by returning false if a render is not required.

    componentDidMount is called once the component has 'mounted' (the component has been created in the user interface, often by associating it with a DOM node). This is commonly used to trigger data loading from a remote source via an API.

    render is the most important lifecycle method and the only required one in any component. It is usually called every time the component's data is updated, reflecting changes in the user interface.

  • JSX
  • JavaScript XML (JSX) is an extension to the JavaScript language syntax. Similar in appearance to HTML, JSX provides a way to structure component rendering using syntax familiar to many developers. React components are typically written using JSX, although they do not have to be (components may also be written in pure JavaScript). JSX is similar to another extension syntax created by Facebook for PHP, XHP.

  • Architecture beyond HTML
  • The basic architecture of React applies beyond rendering HTML in the browser. For example, Facebook has dynamic charts that render to tags,and Netflix and PayPal use isomorphic loading to render identical HTML on both the server and client.