facebook/reactMITd083ec1Report / request removal

React Overview

React is a JavaScript library for building user interfaces. It lets developers describe interactive views, compose stateful components, and update only the relevant parts when data changes.

This repository exists to evolve React core and support the packages, renderers, build targets, tests, and compiler tooling that surround that library. The root workspace includes every package under packages/*, while the compiler has its own workspace and Rust workspace.

Sources: README.md:3-7, README.md:60-62, package.json:1-5, compiler/package.json:1-7, compiler/Cargo.toml:1-6

Core concepts

Declarative UI

A declarative UI describes what the interface should look like for each application state; React then updates and renders the appropriate components when data changes.

Sources: README.md:3-6

Component

A component is an encapsulated unit of JavaScript logic that can manage its own state and compose with other components to form a larger interface.

Sources: README.md:5-7

Renderer

A renderer is the environment-specific part that turns React work into output; react-dom targets the DOM, while react-reconciler is the package for creating custom renderers.

Sources: packages/react-dom/package.json:1-5, packages/react-reconciler/package.json:1-4

JSX

JSX is an optional HTML-like syntax that makes React code more readable; it is syntax used in application code rather than a requirement of React itself.

Sources: README.md:48-58

Monorepo package

A package is an independently described workspace unit with its own name, version, exports, dependencies, or peer dependencies; the root workspace collects the packages under packages/*.

Sources: package.json:1-5

What the library ships

The public react package contains the core React JavaScript library and exposes its default entry point plus JSX runtimes, a compiler runtime, and a server-oriented entry point.

The react-dom package provides the DOM-facing package and publishes client, server, static, profiling, test-utils, and unstable-testing entry points.

The react-reconciler package is the reusable package for creating custom renderers, and it shares the react peer dependency and scheduler dependency used by the runtime packages.

PackagePlain-language roleRelationship shown in its manifest
reactCore JavaScript library and JSX/runtime entry pointsPublishes the default, JSX, compiler-runtime, and server-related paths
react-domReact package for working with the DOMDepends on scheduler and expects react as a peer
react-reconcilerFoundation for creating custom renderersDepends on scheduler and expects react as a peer

These manifests show that react supplies the core package surface, while react-dom and react-reconciler provide environment or renderer-facing layers around it.

Runtime package architecture — How do the core package, DOM package, reconciler, and scheduler relate?

Evidence

The diagram makes the package boundary explicit: the manifests show dependency relationships, but they do not by themselves describe every internal runtime call.

Sources: packages/react/package.json:2-3, packages/react/package.json:23-42, packages/react-dom/package.json:1-5, packages/react-dom/package.json:51-120, packages/react-reconciler/package.json:1-4, packages/react-reconciler/package.json:25-33, packages/react-dom/package.json:19-24

How the monorepo is organized

The root package is private and defines packages/* as workspaces, so the runtime repository is organized around many package-level units rather than one published package.

The compiler is a parallel area with its own JavaScript workspaces and Rust workspace members, including the Rust compiler native package. The compiler packages cover the Babel plugin, ESLint integration, compiler runtime, health checks, and supporting tools; the shown manifests identify those roles directly.

The root scripts also show that building is coordinated centrally: build invokes the Rollup release-channel build, while prebuild links the compiler first.

The repository contains additional runtime-adjacent packages, including react-dom-bindings, react-native-renderer, react-noop-renderer, server-component bindings, DevTools packages, and testing packages. Their manifests describe whether they are public, private, renderer-facing, server-facing, or test-oriented.

Sources: package.json:1-5, compiler/package.json:1-7, compiler/Cargo.toml:1-6, compiler/packages/babel-plugin-react-compiler/package.json:1-8, compiler/packages/eslint-plugin-react-compiler/package.json:1-8, compiler/packages/react-compiler-runtime/package.json:1-8, compiler/packages/react-compiler-healthcheck/package.json:1-8, package.json:123-131, packages/react-dom-bindings/package.json:1-8, packages/react-native-renderer/package.json:1-8, packages/react-noop-renderer/package.json:1-8, packages/react-server-dom-webpack/package.json:1-8, packages/react-devtools-core/package.json:1-8

Where to start tracing an update

Start with the small example in README.md: it imports createRoot from react-dom/client, creates a root for a DOM container, and calls root.render with a component written using JSX.

The example establishes the readable entry path, not the complete internal implementation: application code supplies the component and JSX, react-dom/client supplies root creation, and root.render starts rendering into the container.

Readable update entry path — Where should a reader begin when tracing application code toward the screen?

Evidence

From there, read the react JSX implementation, then the react-dom client entry points, and then the reconciler and host bindings; this ordering follows the package roles and the visible example, while the detailed internal call path belongs to the specialized pages below.

Sources: README.md:45-54, packages/react-dom/package.json:51-69, packages/react-reconciler/package.json:1-4

How it connects

For the package-by-package inventory, continue to Repository Map.

For the build, release-channel, and feature-flag machinery that produces these package artifacts, see Build, Test, and Feature Flags and Rollup Bundles & Module Forks.

For the element created from JSX, read Element Types & Components. For the fiber structure and update machinery, continue with Fiber Architecture, Work Loop & Scheduling, and Render Phase.

For the DOM-specific hand-off, read ReactDOM Host Config and Commit Phase. For server output, use Server Rendering (Fizz).

Sources: package.json:1-5, README.md:48-58, packages/react-reconciler/package.json:1-4

Key takeaways

  • React is a declarative, component-based JavaScript library for building user interfaces.
  • react is the core package; react-dom targets the DOM; react-reconciler supports custom renderers.
  • The root workspace covers packages/*, while the compiler has separate JavaScript and Rust workspace structure.
  • The clearest update-reading entry point is createRoot followed by root.render in README.md.

Sources: README.md:3-7, packages/react/package.json:2-3, packages/react-dom/package.json:1-5, packages/react-reconciler/package.json:1-4, package.json:1-5, compiler/package.json:1-7, compiler/Cargo.toml:1-6, README.md:45-56

Want this for your repos?

Try Angada AI Wiki