
React
react.dev- Category
- Developer Tools
- Rank
- No. 224Tools index
- Pricing
- Open Source
- Type
- TOOL
- Builder
- react
- GitHub
- 250.5k stars
- Latest release
- v19.3.0
- Date
About
Library for building user interfaces. The most widely used UI library. Component-based architecture with hooks. Foundation for Next.js, Remix, Expo, and most modern web apps.
What it does
You write functions that return markup describing what the screen should look like for a given piece of state, using an HTML-like syntax embedded directly in JavaScript. A separate engine compares each new description against the last one and patches only the parts of the page that actually changed. That diffing engine ships as its own package, so other renderers, a mobile target or a server-side one, can reuse the same programming model with a different backend underneath.
Why it's ranked here
This sits underneath tools that route through it rather than replace it: server frameworks and mobile toolchains build their rendering on top of this model. The codebase backs that role structurally. Rendering, DOM binding, scheduling and server rendering ship as distinct, independently buildable packages under a single permissive license, with separate automated checks guarding the core engine and the newer compiler add-on.
What's good
Splitting the renderer, the DOM binding, the scheduler and the server-rendering engine into separate packages means a project only pulls in what it runs, a test renderer with no browser, or a server binding with no DOM. A companion compiler package now inserts the memoization that used to be written by hand, distributed as a build plugin so adopting it does not require touching existing call sites. Automated checks cover the core engine and the compiler separately.
Tradeoffs
The contribution path is heavy: two type systems checked side by side, a custom build pipeline, and a test command that runs through a guard script rather than invoking the test framework directly, all things a casual contributor has to learn before a first change lands. The compiler is also being rewritten in a second language alongside its existing implementation, so touching that part of the project soon means knowing both. Some internals are exported and explicitly marked unsafe to use, so a few boundaries are advisory rather than closed off.
How to use it well
Reach for this as the view layer of an interactive screen where state changes need to redraw only the affected parts, then pair it with a matching renderer package for the target you're on: browser, server or native. Bring in the compiler add-on once manual memoization keeps showing up in review, since it works as a build step and does not require rewriting components. It is not a routing, data-fetching or bundling solution, those still come from something layered on top.
Technical notes+
packages/react/index.js re-exports the public hook and component API from an internal ReactClient module, including two symbols explicitly named as internal-only, __CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE and __COMPILER_RUNTIME. packages/react-dom/index.js exposes the DOM-specific surface, createPortal, flushSync, preload, useFormStatus, plus its own do-not-use internals export. packages/react-reconciler/index.js and packages/react-server/index.js are both written as factory modules: at build time each is wrapped so a caller supplies a HostConfig and gets back the reconciler or Fizz server API respectively, which is how non-DOM renderers plug in. packages/scheduler/index.js is a thin re-export of an internal Scheduler fork. The compiler exists in two parallel implementations: compiler/packages/babel-plugin-react-compiler/src/index.ts exports the Babel plugin, compile and compileProgram entry points, and a CompilerError diagnostic API, while compiler/crates/react_compiler/src/lib.rs re-exports separate Rust crates for HIR, lowering and diagnostics that CLAUDE.md describes as an active port. package.json is a private workspaces root over packages/*, with devDependencies spanning Babel, Flow, TypeScript, ESLint, Rollup and Jest, and a test script routed through a dedicated guard script rather than invoking the test runner directly. LICENSE confirms an MIT grant, MAINTAINERS lists individual handles rather than an organization, and SECURITY.md routes vulnerability reports to an external disclosure program instead of the public issue tracker.
Observed
- License
- MIT
- Packaging
- Distributed as a private Yarn/npm monorepo using workspaces rather than as a single installable package
- Renderer packaging
- The reconciler, the DOM binding, the scheduler and the server-rendering engine ship as separate packages, each consumable on its own
- Compiler implementation
- Ships a JavaScript/TypeScript Babel-plugin compiler alongside a separate, parallel Rust implementation of the same compiler
- Public API surface
- Exports internal symbols from the top-level package explicitly named to warn that they are not for external use
- Vulnerability reporting
- Security issues are directed to an external responsible-disclosure program rather than the public issue tracker
Read from README.md, package.json, packages/react/index.js, packages/react-dom/index.js, packages/react-reconciler/index.js, packages/scheduler/index.js, packages/react-server/index.js, compiler/packages/babel-plugin-react-compiler/src/index.ts, compiler/crates/react_compiler/src/lib.rs, CONTRIBUTING.md, CLAUDE.md, LICENSE, CHANGELOG.md, MAINTAINERS, SECURITY.md.
Intel on React
Tags
Tech Stack
Media

Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.