The library for web and native user interfaces.
A floor, not a guess: counts only commits whose author, co-author trailer, or message explicitly credits an AI tool (Claude, Copilot, Cursor, aider, Codex…). Based on 30 mainline commits. Unattributed AI code isn't counted here — the full audit estimates that separately.
mainPerformance optimization that prevents React from enumerating individual elements of typed arrays (like Uint8Array, Float32Array) during development, which could freeze the page. Instead, it now displays just the type and length (e.g., "Uint8Array(1000)"), which is more useful and much faster.
Introduces a new `getParentStack` tool that shows where a component is mounted in the rendered component tree, returning the chain of structural parents from immediate parent to root. This complements the existing owner stack tool, which instead shows which components created/rendered the element through JSX.
Refactored error handling to check conditions before invoking shell error callbacks rather than mutating the callbacks themselves. This keeps the original callbacks intact on the request object while preventing `onShellError` from firing after the shell completes and `onAllReady` from firing after fatal errors.
Added a new GitHub Actions workflow job to automatically run end-to-end tests for react-devtools-cdt-mcp in CI, with optimized Playwright browser caching and artifact uploads for debugging.
Fixed how the Rust compiler determines local bindings when scope is extracted from a function rather than a module, and relaxed the test runner to allow debug output differences between Rust and TypeScript compilers as long as they error in the same phase with the same message.
Introduced `parentEnter` and `parentExit` props to `<ViewTransition>` components, allowing nested elements to animate when an ancestor boundary enters or exits the DOM. This enables use cases like sliding individual list items off-screen when a parent container is removed, with animations controlled via `onParentEnter`/`onParentExit` handlers and gated behind the `enableViewTransitionParentEnterExit` feature flag.
Introduced automated end-to-end tests for the Chrome DevTools integration that validates third-party tool discovery, tree navigation, search, profiling, and error handling by spinning up a test fixture and running the chrome-devtools CLI.
Fixed a bug where the onAllReady callback was being fired even after a fatal shell error occurred during server-side rendering. Now when the shell fatally errors, the onAllReady callback is disabled to prevent signaling a successful render to consumers.
React was incorrectly treating incomplete render trees as successfully recovered during error handling, which could cause hook state corruption and "Rendered more hooks than during the previous render" errors. The fix ensures that trees suspended at the shell level are properly identified as incomplete and not committed.
Adds a new `react_get_component_by_dom_element` tool that lets you find React component details by selecting a DOM element in Chrome DevTools. It converts element references to component information like type, name, and props.
Introduces a new `getComponentByHostInstance` tool that takes a host instance (like a DOM element) and returns the corresponding React component information. This enables looking up component details from a platform instance reference by searching through the fiber tree.
Introduced a new `react-devtools-cdt-mcp` package that integrates React DevTools with Chrome DevTools MCP (Model Context Protocol) server. This enables React inspection tools like component tree viewing, profiling, and source code lookup within the Chrome DevTools interface through the MCP protocol.
Updated the compiler linking script to unlink any previously registered global compiler link before registering the current checkout's version, ensuring builds use the correct compiler even when multiple React checkouts exist on the same machine.
Updated test cases to properly await `serverAct` calls when driving the task loop, ensuring async operations complete within the test framework's scope rather than in raw promises. This improves test reliability by keeping side effects like abort and error handling within the React act boundaries.
ESLint integration now displays source code frames and file:line:column locations in compiler error messages, which were lost after the Rust compiler port. The fix reexports the code frame printer and handles both the new details array format and legacy flat location format.
The `getComponentByUid` function now accepts an optional `includeHooks` parameter to control whether React hooks are inspected for components. When hooks inspection is requested and fails, the function returns an error instead of silently omitting the hooks data.
Added changelog entries for patch releases 19.0.2–19.0.7, 19.1.3–19.1.8, and 19.2.2–19.2.7 that were previously missing, documenting bug fixes and security improvements across React Server Components.
Added tests to ensure that stream APIs correctly measure UTF-8 byte length instead of JavaScript string length when making decisions about content outlining and chunking. This prevents multi-byte characters (like emoji) from being incorrectly inlined when they should be streamed as boundaries.
The `ReactDOM.preloadModule()` function now accepts and properly forwards the `nonce` option for security policy compliance. This allows developers to specify a Content Security Policy nonce when preloading JavaScript modules, with support for both server-side rendering and browser preloading.
The VERSION_NATIVE_FB file was being deleted during the experimental build cleanup before artifacts were merged, causing CI failures. The fix moves the file write to the stable build process where the facebook-react-native directory is preserved, ensuring the version file survives to the final merged artifacts.
Added a disclosure control to reveal ignore-listed stack frames in the React DevTools inspector, allowing developers to see filtered stack traces when needed. The feature appears in the Components inspector when examining elements with suspended components.
Renamed two methods in React DevTools to reduce confusion: `getOwnersStack` → `getOwnerStackTrace` (returns error-like stack trace) and `getOwnersBranch` → `getOwnerStack` (returns structured list of owner entities). This change makes the API naming more consistent and intuitive.
Updated the release channel build script to properly rename bundle size files for experimental builds and fixed the artifact deletion command to use the correct Node.js API instead of an invalid shell command.
Corrected the xvfb process spawning on Linux by properly separating the command and arguments, and fixing the stdio configuration for the virtual display server used during benchmarking.
Updated a test to verify that aborted Replies now properly reject Promises when the connection closes, fixing a bug where promises would hang indefinitely instead of throwing an error.
Improved the error message React shows when a Node.js Buffer (which has a `toJSON` method) is serialized through that method instead of as binary data. The new message specifically mentions that Binary data with a toJSON method gets serialized incorrectly, and recommends passing a Uint8Array or ArrayBuffer instead.
Module preloading and preinitializing now support the `fetchPriority` option, allowing developers to specify 'high', 'low', or 'auto' priority for module resources. This gives finer control over how the browser schedules fetching of JavaScript modules.
React DevTools now safely displays server errors using DOM elements instead of HTML strings, eliminating a potential security vulnerability while maintaining the same visual appearance and messaging.
A fully rolled-out feature flag for optimizing memory management in React Native's shadow nodes has been removed from the codebase. The cleanup logic that was guarded by this flag is now always enabled, simplifying the code across multiple feature flag configuration files.
Replaced the standard library's default SipHash with rustc-hash's faster FxHasher across all compiler maps and sets to improve performance on the ID-keyed data structures used throughout compilation passes. The change maintains binary compatibility with existing serialized data while reducing binary size.
A Monday email with what shipped in react, in plain English. No account needed — drop your email and we'll tell you when it's live.
[](https://repowrapped.com/gh/react/react)<a href="https://repowrapped.com/gh/react/react"><img src="https://repowrapped.com/gh/react/react/badge.svg" alt="shipped this week" /></a>