## react/react — v19.2.8…v19.3.0

_709+ commits._

### Features
- **DevTools npm publishing workflow added** — Added a new manual workflow in GitHub Actions that publishes the react-devtools-cdt-mcp package to npm independently from the main React release. The workflow supports dry-run mode and dist-tag selection (latest or canary), uses secure OIDC trusted publishing, and notifies Discord of publish events. (2728bd3)
- **Add nonce support to import maps** — Import maps rendered on the server now include the nonce attribute for Content Security Policy compatibility, matching the behavior of other server-managed scripts. (f4e439e)
- **Add Rust compiler crate publishing workflows (#37465)** (fba2306)
- **[DOM] Update HTML parser rules for new select parser (#34804)** (ff7445e)
- **Add lazy reasons to browser() (#37241)** (807d21f)
- **Add onBrowserBailout Fizz option** — Introduces a new `onBrowserBailout` callback option for server-side rendering that lets developers observe when the server intentionally defers work to the browser (via `ReactDOM.browser()` and similar APIs). This callback receives the original error and component information, runs only when recovery succeeds, and helps distinguish recoverable browser-only errors from fatal server errors. (2042572)
- **Add weak thenables to Flight protocol** — Introduced a new experimental 'pending_weak' thenable status in React's Flight protocol that allows promises to stay unresolved without errors if the stream closes before they settle. This enables frameworks to encode metadata about Flight responses—like whether a page accesses search parameters—as promises that resolve only if certain conditions are met during rendering. (9b5b4d5)
- **Add browser-only rendering API** — Introduces a new `browser()` API in React DOM that allows components to suspend during server-side rendering but render normally in the browser. This enables developers to cleanly express browser-only components without error suppression hacks by using it with the `use()` hook inside a Suspense boundary. (15f7cd6)
- **[Bench] Add JSON output and declare missing dependency (#37127)** (dcd4ec2)
- **Support merged chunk format in Turbopack** — React Server DOM now handles Turbopack's new experimental array format for merged chunks, which combines multiple component chunks into a single file for better performance. Server-side renders will correctly use the merged chunk filename instead of trying to load individual array representations. (32b1fba)
- **[Fizz] Support nested enter/exit ViewTransition animations (#36917)** (8384090)
- **[react-devtools-cdt-mcp] Add explicit register entry (#36972)** (f598ec1)
- **Fix TanStack Virtual window virtualizer** — Added `useWindowVirtualizer` from TanStack Virtual to the list of incompatible libraries in React Compiler, preventing unsafe memoization that was causing virtualized lists to freeze. Both `useVirtualizer` and `useWindowVirtualizer` wrap the same internal instance with mutating methods, so both require the same compatibility flag. (08725f2)
- **Add parent stack tool to DevTools** — 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. (3508aee)
- **Add nested transition animations support** — 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. (ec0fca3)
- **Add end-to-end testing suite** — 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. (7df975a)
- **Add DOM element component lookup** — 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. (2c8b735)
- **Add host instance component lookup** — 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. (e273131)
- **Make hook inspection optional** — 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. (d4e4454)

### Fixes
- **Fix crash on non-ASCII source code** — Fixed a bug in the React Compiler validation where non-ASCII characters in source code would cause the validator to panic and lose all diagnostics for a file. The issue was that character position offsets were being incorrectly converted from UTF-16 (used by JavaScript) to UTF-8 (used by Rust), causing the validator to read the wrong code spans or crash when landing inside a multi-byte character. The fix adds proper UTF-16 to UTF-8 offset conversion logic shared across validation modules. (78c2d37)
- **Update repository URL for trusted publishing** — Fixed the repository URL in the React DevTools package configuration from facebook/react to react/react to enable trusted publishing workflows. (4558a16)
- **Fix large number bitwise operations** — Corrected how the compiler converts large floating-point numbers to 32-bit integers during bitwise operations. Previously, values like 1e21 | 0 would produce incorrect results (e.g., -1); now they match JavaScript's behavior exactly (e.g., -559939584). This ensures constant propagation for bitwise operations on large numbers works as expected. (503efb4)
- **[Flight] Fix RangeError from exponential debug info growth (#37481)** (8f00437)
- **[DevTools] Fix reconciliation of content with fallback Fiber (#37475)** (0209ef8)
- **[DOM] Fix Fragment dispatchEvent when the container is a Document (#37165)** (305feb9)
- **[DOM] Fix Fragment compareDocumentPosition for documentElement and empty portals (#37163)** (809280d)
- **[DOM] Fix Fragment removeEventListener dropping tracked listeners (#37160)** (3cba19c)
- **[Fiber] Fix hang when updating a dehydrated boundary inside a hidden tree (#37135)** (9a81195)
- **[Fiber] Fix false-positive hydration mismatch on `nonce` attributes (#37030)** (58a6360)
- **[test] Add Flight regression test for async debug info surviving Promise GC (#37037)** (71ecaf8)
- **Fix error stack handling in Node.js 21+** — Fixed an issue where error stack traces were not being properly set in test environments on Node.js 21+ due to V8's Proxy behavior. This resolves test failures when running `yarn test --prod` on newer Node versions. (e3e813d)
- **Fix benchmark memory leak detection** — Fixed a false memory leak in the Flight server-side rendering benchmark by draining pending `setImmediate` callbacks between iterations. The benchmark loop was preventing the event loop from running immediates, causing them to accumulate and falsely appear as memory leaks. The fix also now reports actual heap retained after each benchmark run settles. (994ebf9)
- **Fix JSX component tag detection logic** — Corrected how the compiler identifies React components in JSX—it now properly recognizes tags that don't start with lowercase letters as components, fixing a logic error in the tag classification. (12a4bae)
- **Fix JSX component detection logic** — Corrected the compiler's JSX tag classification to properly recognize components starting with underscores or dollar signs (like `<_Bar />` or `<$Foo />`) as component references rather than host elements. This ensures the compiler applies proper memoization and optimization to these components. (fc08d76)
- **Update Flow type syntax** — Updated a type cast in the React DevTools Components view to use modern Flow syntax, changing from colon notation to the newer `as` keyword format. (23def8f)
- **Fix DevTools activity slice logging** — Fixed a bug in the DevTools diagnostic printer that was reading the wrong array index and failing to advance the loop counter when processing activity slice change operations. This caused the printer to crash with an "Unsupported Bridge operation" error when dumping debug information for certain operations. (4b5d1c9)
- **Fix Rust compiler test case** — 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. (7a7e893)
- **Fix incomplete tree recovery error** — 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. (c3555f0)
- **Document missing patch releases** — 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. (92f4fda)

### UI
- **Fix HOC name extraction for nested components** — Fixed a bug in React DevTools where deeply nested higher-order components (HOCs) weren't being fully unwrapped. Component names like `Forget(Memo(Button))` will now correctly display all HOC layers instead of stopping after the first one. (ec61f18)
- **Add component search to Profiler** — You can now search for specific components within a selected commit in the Profiler using Cmd/Ctrl+F, with a floating search box that shows match counts and lets you navigate through results with arrow buttons or Enter/Shift+Enter. Matches highlight in the Flamegraph and Ranked charts and sync to the sidebar. (11eddec)
- **Remove Timeline profiler tab** — The Timeline profiler tab has been removed from DevTools. Users debugging React 19.2+ will now see a suggestion to record performance traces in the browser's Performance panel instead, while those on earlier React versions will see a prompt to upgrade. (c7cab66)
- **Profiler empty states redesigned** — The Profiler's empty state screens now feature prominent action buttons ("Start recording" and "Stop recording") instead of requiring users to find the record button elsewhere. The design includes clearer messaging about what profiling does and improved visual hierarchy with better typography and spacing. (0011363)
- **DevTools panels now always created** — React DevTools extension panels (Components, Profiler, Elements Inspector, etc.) are now created immediately when the extension loads, rather than waiting for React detection. If React isn't found on the page, panels display a stub message instead of not appearing at all. This fixes an issue where users wouldn't see DevTools panels at all on non-React pages. (7acf005)
- **Keep WhatChanged visible while scrolling** — Fixed the Profiler sidebar so that component render information and "What Changed" details now stay visible at the top while you scroll through render timestamps. The section is collapsible to save space, and the render list scrolls independently below it. (91cd812)
- **Jump to search results directly** — Component search results in DevTools are now directly navigable by typing a number in the result counter, letting you instantly jump to a specific match instead of stepping through them one at a time. The search also now advances to the next match when you retype the same query, fixing the issue where re-searching would snap back to the previously selected result. (5afc23a)
- **Fix console format specifiers handling** — React DevTools now correctly displays unmatched console format specifiers (like `%s`, `%d`) as literal text instead of replacing them with `undefined` or `NaN`, matching how browsers handle console output. This fixes cases where messages like `console.warn('value: %s')` with missing arguments now show `value: %s` instead of `value: undefined`. (aa43b0f)
- **Skip typed array enumeration** — Performance 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. (e71a639)
- **Restore code frames in linter errors** — ESLint integration now displays source code frames and file:line:column locations for React Compiler errors, restoring detail that was accidentally removed during a compiler rewrite. The fix handles both the new Rust compiler format and legacy TypeScript format transparently. (9c1f097)

### Backend
- **Refactor React Native globals to imports** — Moved React Native feature flags and UI manager from global variables to proper module imports from the React Native private interface. This improves code maintainability by using explicit imports instead of relying on globally-injected values, while maintaining the same functionality. (1d34f91)
- **DevTools build runs on npm publish** — Updated the npm publish script to automatically build the react-devtools-cdt-mcp package before publishing, ensuring the latest compiled code is included in releases. (fa8375c)
- **React DevTools upgraded to 8.0.0** — React DevTools bumped from version 7.0.1 to 8.0.0 across all packages and browser extensions (Chrome, Edge, Firefox). The changelog has been updated with features and bugfixes from the latest release. (e92bda7)
- **Release react-devtools-cdt-mcp 0.1.0** — Updated the react-devtools-cdt-mcp package version from 0.0.0 to 0.1.0 and refined its description to clarify it as a browser library for registering React inspection and profiling tools with chrome-devtools-mcp. (ec17316)
- **Fix element initialization with unresolved refe…** — Fixed a bug where elements were being initialized with incomplete props when referenced rows were still resolving, causing errors in development mode. Elements now stay pending until all their prop references are fully resolved, ensuring they're only displayed with complete data. (6c0e104)
- **Document react-devtools-cdt-mcp for npm** — Updated the package README to clarify that react-devtools-cdt-mcp is a browser-side library (not an MCP server), documented the requirement for chrome-devtools-mcp 1.3.0+ with the experimental third-party flag, and corrected the documentation for the DOM element tool to no longer mention hooks in its output. (9b7a0d4)
- **Fix ref access error locations** — Fixed the React compiler to show accurate line numbers and source locations when reporting errors about accessing ref values during render. Previously, error messages would point to the wrong location in the code when mixing ref types in conditional expressions. (f1f7ed2)
- **Upgrade DevTools testing framework** — Updated the chrome-devtools-mcp testing dependency from version 1.3.0 to 1.8.0, which requires passing page IDs to CLI commands and using UUID-format session identifiers. The end-to-end test suite for React DevTools was updated to support these new requirements. (8425b69)
- **Remove hooks from DOM element tool** — Updated the React DevTools description for the DOM element lookup tool to clarify it returns host nodes (like buttons or divs) rather than function components, and removed the misleading mention of hooks which are never actually returned by this tool. (d9f4e76)
- **Added javache to maintainers** — javache has been added to the maintainers list for the project. (18df76f)
- **Fix error handling in block lowering** — The compiler now properly propagates errors encountered during block lowering instead of silently continuing with incomplete code. This prevents partial output when unsupported syntax is found, such as nested TypeScript `this` parameters, and fixes the order of error reporting for FBT bindings by resolving local bindings before checking module imports. (0bbf024)
- **Enable use() conditional warnings** — React now shows warnings in Canary builds when the `use()` hook is called conditionally based on promise status. This helps developers avoid improper usage patterns and follows React's recommended approach of letting `use()` handle promise state directly. (0d69e20)
- **[DevTools] Use one commit for extension release inputs (#37307)** (33b4555)
- **[DevTools] Remove build dates from extension manifests (#37306)** (e059aa3)
- **[DevTools] Use deterministic extension commit hashes (#37305)** (a7ef01a)
- **[ci] Compare size against merge base (#37355)** (084f5f2)
- **React Compiler: move compiled function bodies into AST instead of cloning (#37376)** (d04798f)
- **React Compiler: Store aliasing values in an inline set (#37366)** (469c4ec)
- **[DOM] Clean up Fragment listeners on signal abort (#37457)** (21c89c9)
- **[DOM] Unobserve fragment IntersectionObserver targets after exit (#37408)** (065bc84)
- **[test] Bump Jest to 30.4 (#37382)** (2dc7da7)
- **[DOM] Copy `source` onto the synthetic toggle event (#37389)** (29d9d31)
- **[test] Remove the custom `toThrow` override for legacy V8 error messages (#37384)** (269bd40)
- **[DOM] Treat omitted Fragment Event listener options same as `capture: false` (#37251)** (a112448)
- **[test] Stop leaking mocked performance clocks into later test files (#37379)** (3c397fe)
- **[ci] Pin build shard weights per run to keep worker assignments identical (#37373)** (373d35e)
- **[ci] Run Java setup in the background during build job setup (#37351)** (f789f20)
- **[ci] Download build artifacts in the background during job setup (#37350)** (5d0ccf2)
- **Revert "[rust-compiler] Bail out on nested TypeScript `this` parameters (#37232)" (#37363)** (6c3bd60)
- **[rust-compiler] Bail out on nested TypeScript `this` parameters (#37232)** (35e64cf)
- **[Fizz] Construct the render lifetime controller only when it is needed (#37357)** (3d05080)
- **React Compiler: avoid deep ast clone and quadratic-time codegen (#37206)** (b939280)
- **React Compiler: Avoid unnecessary clone in effect inference (#37207)** (8c94e0e)
- **React Compiler: Make AbstractValue Copy to reduce heap allocation (#37225)** (05769e0)
- **[ci] Shard build workers by measured bundle build times (#37353)** (bd6ea41)
- **[Flight] Outline and dedupe repeated strings (#37147)** (dc631ef)
- **[ci] Rebuild sizebot on the GitHub Actions token (#37322)** (675a29c)
- **[Flight] Abort the cache signal when debug objects are retained (#37342)** (055705c)
- **[Flight/Fizz] Stop the caller's signal from retaining a finished render (#37315)** (77ed3f5)
- **[Fiber] Detach Fragment refs during the mutation phase (#37326)** (eafeac0)
- **[flags] Enable enableParallelTransitions (#37290)** (eb8feb7)
- **[DOM] Scope Fragment once listeners to the fragment, not each child (#37169)** (beef6d6)
- **[Fiber] Run Fragment deletion effects for HostText children (#37168)** (9880384)
- **[Fiber] Extract Fragment instance commit helpers into their own module (#37167)** (22e4f99)
- **[DOM] Apply Fragment listeners to children inserted into portals later (#37166)** (fdaa617)
- **[DOM] Attach Fragment event listeners to committed text children (#37164)** (18c30e7)
- **[DOM] Find host siblings for nested empty Fragments (#37162)** (db4ee65)
- **[DOM] Blur portaled Fragment focus targets (#37161)** (278d318)
- **[Fiber] Prevent metadata hoisting in hidden `<Activity>` trees (#34983)** (bfb7a76)
- **[DOM] Drop empty Fragment scrollIntoView no-op warning (#37171)** (3718011)
- **[Flight] Transfer key validation of lazy nodes when they are unwrapped (#37258)** (8366f33)
- **Enable conditional use warning experimentally** — Activated the conditional use warning flag for experimental release builds to allow testing and feedback. This change enables developers in the experimental channel to detect potential issues with conditional hook usage. (1d4758e)
- **Remove Timeline profiler feature** — Deleted the entire Timeline profiler tab and all related code from React DevTools, including the profiling hooks backend, UI components, and test suites. This removes unused code that was no longer accessible after the Timeline tab was already removed from the interface. (7dfc7cc)
- **Stop duplicating error reports** — Error reporting in React DevTools has been refactored to prevent the same error from being reported multiple times. Store errors are now captured once at the source instead of being duplicated by every error boundary wrapper, reducing noise in error logs. (35a0622)
- **Fix Fragment refs in Host Singletons** — Improved how React handles Fragment references when they contain Host Singleton elements like `<html>` or `<body>`. Fragment methods like `dispatchEvent()`, `addEventListener()`, and `getClientRects()` now correctly target the singleton children instead of their contents, with proper event bubbling and listener attachment. (3a717e4)
- **Warn for conditional use() calls** — Added a new warning system to detect when the `use()` hook is conditionally called based on cached data, which can lead to bugs. The warning is gated behind a feature flag (disabled by default) and includes comprehensive test coverage to measure how frequently this warning triggers in production. (cbb046a)
- **Fix DevTools backend during browser navigation** — React DevTools now properly resets its backend when pages enter the browser's back-forward cache, preventing errors that occurred when the extension port died but the JavaScript heap remained alive. The extension will cleanly shut down messaging and allow the backend to reinitialize when the page is restored. (0f42eac)
- **Fixed DevTools extension type errors** — Removed type-checking suppressions and properly typed objects in the DevTools extension lifecycle code to catch real-world type errors that were previously hidden. (c56a449)
- **[Flight] Port ReplyServer traversal guards to FlightClient (#37144)** (6cb4322)
- **[DOM] Blur focused descendants in Fragment refs (#37125)** (1724e9c)
- **[RN] Update ReactPrivate and InitializeCore imports (0.87 Strict API) (#36986)** (96fcba9)
- **[Flight] Define Flight chunk `.then` with `Object.defineProperty` (#37109)** (9ceb1e7)
- **[Fiber] Don't reaquire HostSingletons during dev effect validation (#37113)** (756fdd4)
- **Fix singleton property cleanup logic** — Improved how React releases singleton elements (html, head, body) by only removing properties that React actually set, rather than removing all attributes which could interfere with third-party scripts. The update now tracks the last committed props for each singleton and clears only those specific properties during cleanup. (b685b40)
- **Buffer messages during extension reconnects** — React DevTools now buffers messages when the extension port reconnects, ensuring no data is lost if Chrome closes the extension port during a long user session. A readiness handshake ensures messages are flushed in the correct order when the connection is re-established. (28cd4bb)
- **Validate Store operation invariants** — DevTools now validates Store operations before mutation to catch data corruption early. Invalid operations like removing non-existent child nodes, missing elements, and inconsistent parent-child relationships now throw explicit errors instead of silently corrupting state. (d87711f)
- **Strengthen DevTools Bridge type safety** — DevTools Bridge and Wall now use stricter type validation instead of `any` types, with explicit runtime checks that throw errors on invalid messages or post-shutdown operations. Shutdown now reliably flushes queued messages even if cleanup fails. (fc08438)
- **DevTools Bridge shutdown on socket close** — Fixed the standalone DevTools Bridge to properly shut down when its WebSocket connection closes, with protection against re-entrance issues. Added tests to verify the Bridge shuts down cleanly on socket closure. (218efce)
- **Improved EventEmitter error handling** — Fixed the EventEmitter to preserve the first thrown error while properly reporting subsequent errors instead of silently swallowing them. Added test coverage for this error handling behavior and improved type safety of listener functions. (8d30cc9)
- **Limit JSX stack trace frames to 10** — React now caps the number of stack frames captured when creating fake JSX call sites to 10, improving performance when errors are created. The stack trace limit is properly restored after use to avoid affecting other error handling in the application. (711c445)
- **Faster Flight reply decoding** — Optimized performance when decoding server responses by improving how error handlers are processed. This release includes security patches included in version 19.2.8. (81e442e)
- **Fix Fragment blur handling for Documents** — Fixed a bug where calling blur() on a Fragment rendered directly into a Document container would fail. The code now properly handles cases where the parent container is a Document by using a helper function to get the owner document, allowing blur to correctly clear focus. (862e275)
- **Fix external store mutation detection** — Fixed a bug where React's useSyncExternalStore hook could miss store mutations when a component tree was hidden and then revealed. The fix ensures that subscription effects are always reconnected when a hidden Activity subtree becomes visible again, even if the component doesn't re-render, so it can detect any changes that occurred while it was hidden. (2860e00)
- **[DOM] Handle scrolling of empty Fragments below containers (#37061)** (fa5212c)
- **[DOM] Scroll to text siblings of empty Fragments instead of the parent (#37060)** (2ba07c6)
- **[Fizz] Extend stack overflow recovery to retries (#36977)** (689a4fa)
- **[react-devtools-cdt-mcp] Make it esm-only package (#36973)** (172742b)
- **[react-devtools-cdt-mcp] Make registration idempotent (#36971)** (1135438)
- **[react-devtools-cdt-mcp] Throw on import from unsupported environment (#36975)** (95f4603)
- **Enable enableEffectEventMutationPhase everywhere (#37039)** (cec5a9b)
- **[devtools] Document that Store consistency throws must not be worked around (#37035)** (0e516d3)
- **Remove microtask feature flag** — Cleaned up an unused feature flag for microtasks in React Native since microtasks are now enabled by default. The flag and its related configuration declarations have been removed from the codebase. (b740af2)
- **Fix DevTools reconnect during prerendering** — Updated the React DevTools extension to avoid repeatedly reconnecting its proxy port while a page is prerendering, which was causing an endless connect/disconnect cycle. The extension now waits for the page to finish prerendering before attempting to reconnect. (7023f50)
- **Fix number input default values** — React now properly updates the default value for number inputs even when they're focused, removing outdated workarounds for browser bugs that were fixed years ago in Chrome and Safari. This prevents issues where number inputs wouldn't sync correctly during user input. (c0c39a6)
- **Fix hot reload for lazy components** — Fixed two bugs in Fast Refresh where type changes inside lazy-loaded components (like adding memo) were missed, and SimpleMemoComponent remounts were incorrectly handled. The fix simplifies remount logic to consistently use the outermost component identity and properly detects changes within lazy wrappers. (5123b06)
- **Fix memo comparison function hot reload** — Editing a memo's comparison function now takes effect immediately during development. Adding or removing a comparison function remounts the component (since it changes the internal component type), while editing just the comparison function logic updates in place with state preserved. (4400d6c)
- **Fix fiber tag during hot refresh** — When a component type changes during development (e.g., a function wrapped in memo), React now correctly derives the fiber tag from the resolved type rather than the original type. This prevents errors when mounting elements created before the type change. (3b9b59f)
- **Simplify hot reload type resolution** — Unified three separate hot-reloading functions (for classes, functions, and forward refs) into a single `resolveTypeForHotReloading` function, and moved forward ref hot-reload logic into the update path to match how memo and lazy components work. This reduces code duplication while maintaining the same behavior during development. (df4bd1b)
- **Support Node 22+ Promise debug frames** — Updated React Flight Server's debug info tracking to recognize how newer Node.js versions (22+) name Promise static method stack frames. The code now matches both old names like `Function.all` and new names like `Promise.all` for better async debugging across Node versions. (3039f5d)
- **Handle using declarations properly** — The compiler now detects and reports errors when code uses `using` and `await using` declarations (explicit resource management) instead of silently dropping the resource cleanup logic. Functions containing these declarations are skipped with a diagnostic message, while sibling functions in the same file still compile normally. (5a90a5a)
- **Fix Fast Refresh remounting for component kind…** — Fixed a crash that occurred when editing a component between different wrapper types (like converting a plain function to memo or forwardRef). The fix ensures that when a component's kind changes, React properly remounts it instead of trying to preserve state, and correctly tracks these changes through the component's outer type identity. (eb343c7)
- **Fix StrictMode effect re-runs on reordered chil…** — React was incorrectly re-running effects when existing child components were reordered in the DOM. This fix prevents StrictMode from treating moved children as remounted, so their effects only run once during initial mount rather than re-running when their position changes. (129154c)
- **Skip redundant HTML updates** — React now avoids re-setting a DOM element's innerHTML when the HTML content hasn't changed, preventing unnecessary destruction and recreation of child nodes that could break ongoing user interactions like text selection or in-flight clicks. (b8f50c9)
- **Fix console format specifiers** — Fixed a bug where `%i` (integer) and `%f` (float) console format specifiers weren't being processed in React DevTools, causing them to appear literally in warning/error messages and misaligning subsequent arguments. The fix enables these standard console substitutions to work correctly alongside existing `%s`, `%d`, and `%j` specifiers. (00bacde)
- **Guard shell error callbacks instead of nulling** — 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. (7ce677d)
- **Add E2E tests to CI pipeline** — 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. (6ca51ab)
- **Prevent onAllReady after shell error** — 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. (a1a6bc8)
- **Add Chrome DevTools MCP integration** — 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. (d0d623d)
- **Fix compiler linking in builds** — 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. (3a620bb)
- **Refactor async test patterns** — 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. (82043d7)

### Docs
- **Remove outdated documentation parameter** — Cleaned up a stale JSDoc comment that referenced a function parameter that was removed in a previous update. The `parentType` parameter no longer exists in the `validateChildKeys` function, so its documentation has been removed to prevent confusion. (4f93894)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/react/react?utm_source=github-action)._