Current release: 19.0.8, released 21 July 2026.
What it is
React is a JavaScript library for building user interfaces, especially interactive web applications. It models an interface as a tree of components that receive inputs and produce UI descriptions. React updates the browser DOM in response to state changes, using reconciliation to determine the necessary changes. Modern React development commonly uses function components, hooks for state and side effects, JSX syntax, and a surrounding toolchain for routing, data fetching, testing, styling, and builds. React itself is deliberately focused on rendering rather than prescribing a complete application architecture, so production applications often depend on a framework or a collection of companion libraries.
History
React originated at Facebook, now Meta, from work on making complex, frequently updated interfaces easier to reason about. It introduced a component-oriented, declarative approach that contrasted with the direct DOM manipulation and template-driven patterns common at the time. Early adoption was helped by its one-way data flow, reusable components, and JSX, though JSX was initially unfamiliar to teams accustomed to keeping markup and JavaScript separate. The ecosystem expanded quickly around browser rendering, routing, state management, server rendering, and native mobile development. Later React development emphasized function components and hooks, reducing reliance on class components and lifecycle methods. More recent work has expanded server-oriented rendering, streaming, asynchronous UI coordination, and framework integrations, while retaining the core component model.
Migration notes
Migration complexity depends heavily on the source or destination architecture. Moving from imperative DOM code, older jQuery-style applications, or server-rendered pages usually requires defining component boundaries, relocating DOM manipulation into React-compatible patterns, and deciding how React will coexist with existing page ownership. Incremental adoption is often possible by mounting React within selected areas, but ownership of DOM nodes, shared events, styles, navigation, and state must be explicit. Moving from another component framework may involve translating templates, dependency injection or service patterns, reactivity semantics, routing, forms, and test approaches rather than merely rewriting UI syntax. Within React, older class-based components can coexist with function components, but lifecycle behavior, state update assumptions, refs, context usage, and third-party library compatibility may need revision. Applications may also need changes for modern server rendering or framework-based deployments, particularly where code assumes browser-only globals, performs side effects during rendering, or relies on client-only data fetching. Migrating away from React requires replacing its component and state model as well as its ecosystem dependencies; routing, state management, form handling, CSS strategy, design-system components, test utilities, build configuration, and server-rendering integration can be more costly than replacing React itself.
