Presentation

React is an open-source JavaScript library for building user interfaces.

It is based on an architecture made of small reusable elements called components. Each component describes part of the interface and can receive data, manage its own state and be combined with other components.

React is mainly used for Web applications with React DOM, but its component model can also be used to build native interfaces through projects such as React Native.

Unlike Angular, React does not provide a complete framework by itself with built-in routing, data access or backend architecture. Its ecosystem fills these needs through specialized frameworks and libraries.

Since February 2026, React, React Native and JSX have belonged to the React Foundation, an independent foundation hosted by the Linux Foundation. Meta remains a contributor to the project but no longer owns it.

As of October 3, 2026, React 19.3.0 is the current stable version.

Features

Components

A React application is built from components.

A component is generally a JavaScript function that receives data and returns a description of the interface to display.

Components can be nested and reused to progressively build a complex interface.

React continues to support older class-based components, but functional components are recommended for new code.

JSX

React commonly uses JSX, a syntax that allows developers to write a structure similar to HTML directly inside JavaScript code.

JSX makes it easier to describe the interface and insert JavaScript values or expressions into the rendered output.

It is not technically required to use React, but it is the standard approach in most projects.

Build tools then transform JSX into JavaScript instructions understood by React.

Props and state

Props allow data to be passed from one component to another.

State represents internal information that can change while the interface is being used.

When state changes, React recalculates the relevant components and updates the necessary rendered output.

This declarative approach makes it possible to describe what the interface should display for a given state instead of manually manipulating every DOM change.

Hooks

Hooks allow functional components to use different React capabilities.

useState manages local state, useEffect synchronizes a component with an external system and useContext reads a shared value.

Other Hooks cover references, performance, transitions and integration with external stores.

React imposes certain rules on Hook usage so that their order remains predictable between renders.

Context

Context makes information available to several components without manually passing it through every level of the component tree.

It can be suitable for shared data such as themes, languages or certain session information.

Context is not necessarily a complete replacement for a dedicated state-management system in applications with more complex requirements.

Suspense and transitions

React includes several mechanisms for coordinating interface updates.

Suspense can display fallback content while a resource or part of the interface is waiting to become ready.

Transitions make it possible to distinguish urgent updates from those that can be processed in the background without blocking certain interactions.

These features are particularly useful with modern frameworks coordinating server rendering, data loading and navigation.

React DOM

React DOM provides APIs specific to Web applications.

react-dom/client can render and hydrate an application in the browser.

Server APIs can produce HTML from React components, including as streams.

React also provides static APIs for generating HTML ahead of time.

These functions form the foundation on which React frameworks build their CSR, SSR and static-generation strategies.

Server Components

React Server Components allow certain components to run before reaching the browser.

A Server Component can notably access server-side data or files directly and then pass the result to interactive components.

Because its code is not sent to the browser, it cannot directly use interactive features such as useState.

Server Components and Client Components can be combined within the same tree by compatible frameworks.

Server Components are stable in React 19, but their complete integration still depends heavily on the framework and build system being used.

Server Functions

Server Functions allow client components to trigger asynchronous functions executed on the server.

The "use server" directive allows compatible frameworks to identify these functions and generate the necessary communication between browser and server.

When a Server Function is used as an action, it can notably process form submissions or mutations.

These functions form part of React's modern full-stack architecture but require framework-level integration.

React Compiler

React Compiler is an optimization tool that runs during compilation.

It analyzes components and Hooks to automatically memoize certain values or calculations that would previously have required more manual useMemo, useCallback or related optimizations.

The compiler is now stable and remains optional.

It is mainly designed for React 19 but can also work with React 17 and 18 through a compatibility runtime.

Its integration is available with several build environments, including Babel, Vite, Metro and Rsbuild.

View Transitions

React 19.3 stabilizes the <ViewTransition> component.

It makes it possible to coordinate animations when an element appears, disappears, changes position or changes content by relying on browser View Transitions.

This feature can be combined with Suspense and React transitions to create smoother interface changes.

In React 19.3, this capability currently applies to React DOM.

Fragment Refs

React 19.3 also stabilizes Fragment Refs.

A reference can now target a Fragment in order to perform certain operations across several DOM elements grouped logically without introducing an extra HTML element.

This capability simplifies needs related to measurements, events, focus or observations when multiple elements belong to the same interface section.

React frameworks

The official documentation now recommends starting a new React application with a framework when the project goes beyond a simple isolated interface.

Recommended solutions notably include Next.js with App Router and React Router in framework mode for the Web, as well as Expo for native applications.

These frameworks add routing, data fetching, rendering strategies and infrastructure required by complete applications.

For projects with specific requirements, React can still be installed directly with tools such as Vite, Parcel or Rsbuild.

Create React App

Create React App is deprecated and is no longer recommended for new projects.

New projects should use a recommended framework or a modern setup built with an appropriate build tool.

Existing applications using Create React App can continue to run, but migration may become relevant as the project evolves.

React and TypeScript

React is developed around JavaScript but works very well with TypeScript.

Props, state, events and components can be typed to improve autocompletion and error detection.

TypeScript is not required, however, and is not part of the React runtime itself.

Its use depends on the project and selected toolchain.

Use cases

Build an interactive Web interface

React is well suited to interfaces containing dynamic components, forms, search, dashboards and frequent interactions.

State and Hooks make it possible to synchronize the display with user actions.

Develop a SPA

Combined with a router and build tool, React can serve as the foundation of a single-page application.

Only the necessary parts of the interface are updated during navigation.

Create a full-stack application

A React framework can add server rendering, Server Components, data access, routing and server actions.

React then acts as the interface layer within an architecture spanning both browser and server.

Build a design system

The reusable component model is particularly well suited to interface libraries.

Buttons, forms, modals, cards and other components can be centralized and then reused across several applications.

Develop for multiple platforms

React concepts and programming patterns can also be used with React Native.

A team can therefore preserve part of its knowledge and component architecture between Web and native applications, even though rendering and some APIs differ.

Conclusion

React provides an approach centered on declarative and reusable components for building interfaces.

Hooks, Context, Suspense and transitions cover the main requirements related to state and interactive rendering, while React DOM connects these components to the Web.

Server Components and Server Functions now extend its architecture toward the server, while React Compiler automates some optimizations that previously required more manual work.

React nevertheless remains deliberately less prescriptive than a framework such as Angular. Routing, data strategy and complete application architecture often depend on a framework or complementary libraries.

This flexibility is both a strength and a challenge: the ecosystem offers many possibilities but requires more technical choices.

For building modern Web interfaces, design systems or complete applications with a React framework, the library remains one of the major foundations of frontend development.

Points to consider

  • React 19.3.0 is the current stable version as of October 3, 2026.

  • React now belongs to the React Foundation, an independent foundation hosted by the Linux Foundation. Meta remains a contributor and founding member but no longer owns the project.

  • React is free and open source under the MIT license, including for commercial use.

  • React is a library, not a complete Web framework. Routing, data fetching and application architecture generally require a framework or additional libraries.

  • The official documentation now recommends using a framework to start most new React applications.

  • Create React App is deprecated and should no longer be used as the default choice for new projects.

  • React Server Components are stable in React 19, but the APIs used by framework and bundler authors to implement them do not yet fully follow Semantic Versioning across React 19 minor releases.

  • Server Components require a compatible architecture. They do not become automatically available simply by installing the React package in a traditional frontend application.

  • React Compiler is stable but optional. A React application can continue to work without using it.

  • Class-based components remain supported, but React recommends functional components for new code.

  • JSX is not mandatory, even though it is the syntax used in most React projects.

  • React does not replace React Native. The two projects share React's programming model but use different rendering systems for the Web and native platforms.

  • Third-party libraries have their own release schedules and licenses. Their compatibility with new React versions should be checked before a major upgrade.