CodeVetter · Repo Unpack · Feature catalog
facebook/react
User-facing surface is API surface, not screens. `packages/react/src/ReactClient.js` is the canonical export list for the isomorphic package; `react-dom` fans out to client, server (Node/Edge/Browser/Bun), static prerender and test-utils entrypoints; `react-server-dom-{webpack,turbopack,parcel,esm,unbundled,fb}` each ship a bundler-specific Flight client+server pair. Tooling packages are first-class features too: `eslint-plugin-react-hooks` (now also re-exporting compiler-derived rules), `react-refresh` (Fast Refresh Babel plugin + runtime), DevTools in five packaging flavours, and two MCP servers. Behaviour is further gated by ~67 `enable*` flags in `packages/shared/ReactFeatureFlags.js`, inspectable via `yarn flags`.
- The isomorphic `react` package exports the full modern surface including `use`, `cache`, `cacheSignal`, `Activity`, `ViewTransition`, `addTransitionType`, `unstable_SuspenseList`, `unstable_TracingMarker`, and `__COMPILER_RUNTIME` — enumerated in `packages/react/index.js` and implemented in `ReactClient.js`.
- Hooks are exported from `packages/react/src/ReactHooks.js` and include the newer `useOptimistic`, `useActionState`, `useEffectEvent`, `useSyncExternalStore`, `useDeferredValue`, `useCacheRefresh` and `use`.
- `react-dom` ships eleven distinct entrypoints — `client.js`, `server.js`/`server.node.js`/`server.edge.js`/`server.browser.js`/`server.bun.js`, `static.js`/`static.node.js`/`static.edge.js`/`static.browser.js`, `profiling.js`, `test-utils.js`, `unstable_testing.js` and `unstable_server-external-runtime.js`.
- Streaming SSR is `renderToPipeableStream` in `packages/react-dom/src/server/ReactDOMFizzServerNode.js`, which builds a request via `createRequestImpl` → `createRequest`, kicks off `startWork(request)`, and exposes `pipe(destination)` that calls `startFlowing(request, destination)`.
- Server Actions are a shipped feature: `decodeAction(body, serverManifest)` scans FormData for `$ACTION_REF_*` / `$ACTION_ID_*` keys, resolves the reference through `loadServerReference`, and returns the action pre-bound to the remaining FormData; `decodeFormState` handles `$ACTION_KEY` for `useActionState`.
- Flight (RSC) supports multiple request body shapes on the server: `decodeReply`, `decodeReplyFromBusboy` (multipart uploads) and `decodeReplyFromAsyncIterable`, all exported from `ReactFlightDOMServerNode.js`.
- Taint APIs `taintUniqueValue` and `taintObjectReference` guard against leaking server secrets to the client, backed by `TaintRegistryObjects` (WeakMap), `TaintRegistryValues` (refcounted Map) and a `FinalizationRegistry` cleanup hook; gated by `enableTaint = __EXPERIMENTAL__`.
- `eslint-plugin-react-hooks` v7 ships `rules-of-hooks` and `exhaustive-deps` plus a set of compiler-derived rules merged in from `shared/ReactCompiler`, with `recommended` and `recommendedLatest` flat-config presets and a deprecated-rule shim for `component-hook-factories`.
- Fast Refresh is two artifacts: `ReactFreshBabelPlugin.js` (build-time instrumentation) and `ReactFreshRuntime.js` (runtime registry / signature checking), published as `react-refresh@0.19.0`.
- DevTools ships in five packaging flavours — `react-devtools` (standalone), `-core`, `-extensions` (browser extension), `-inline`, `-fusebox` (React Native / Chrome DevTools frontend) — all sharing `react-devtools-shared`, plus `react-devtools-shell` for local development.
- `react-devtools-cdt-mcp` is a browser library that registers React inspection and profiling tools with `chrome-devtools-mcp`, published from its own workflow.
- A second MCP server lives in the compiler: `compiler/packages/react-mcp-server` registers tools including `query-react-dev-docs` (Algolia-backed react.dev search) and a runtime-performance tool driven by headless Puppeteer.
- The compiler playground is a real deployed Next.js 15.5.9 + Tailwind + Monaco app with a `dev` script that concurrently watches the compiler, the runtime and Next, and a Playwright `test` script.
- CLI-style developer commands are exposed as npm scripts: `yarn test` (channel-aware), `yarn flow`, `yarn lint`/`yarn linc`, `yarn flags`, `yarn extract-errors`, `yarn download-build`, `yarn generate-changelog`, `yarn build-for-devtools`.
- Behaviour is switchable at build time through ~67 `enable*` constants in `packages/shared/ReactFeatureFlags.js` (e.g. `enableViewTransition`, `enableGestureTransition`, `enableDefaultTransitionIndicator`, `enableFizzBlockingRender`, `enableOptimisticKey`), many tied to `__EXPERIMENTAL__`.