React represents the view layer of an application, i.e. the simple but extremely performant rendering of elements. It’s an agnostic library that doesn’t bring any other services or methods and thus is no full-fledged framework, requiring other components to deliver a full application. This distinction is important as React doesn’t define defaults for that rest of the application.
It works in a component-based manner by facilitating encapsulated, modular, and interactive components that can be composed and (re-)used arbitrarily. The JSX syntax extends the comfort of React and is the de facto standard when using React, but isn’t mandatory.
One reason why even complex web applications render particularly well with React is the concept of unidirectional data flow and the Virtual DOM.
Using server-side rendering, React templates can be precompiled on the server, speeding up initial rendering and facilitating optimization for search engines. The resulting server-side HTML then gets hydrated on the client-side.
Besides React, there is also »React Native«. Due to the similar name and development approach, there is often confusion here.