KEMBAR78
[Fizz] Block on Suspensey Fonts during reveal by sebmarkbage · Pull Request #33342 · facebook/react · GitHub
Skip to content

Conversation

sebmarkbage
Copy link
Collaborator

@sebmarkbage sebmarkbage commented May 22, 2025

This is the same technique we do for the client except we don't check whether this is newly created font loading to keep code small.

Unfortunately, we can't use this technique for Suspensey images. They'll need to block before we call startViewTransition in a separate refactor. This is due to a bug in Chrome where img.decode() doesn't resolve until startViewTransition does.

@sebmarkbage sebmarkbage requested review from eps1lon and gnoff May 22, 2025 19:52
@github-actions github-actions bot added the React Core Team Opened by a member of the React Core Team label May 22, 2025
@react-sizebot
Copy link

Comparing: 8ce15b0...1061fda

Critical size changes

Includes critical production bundles, as well as any change greater than 2%:

Name +/- Base Current +/- gzip Base gzip Current gzip
oss-stable/react-dom/cjs/react-dom.production.js = 6.68 kB 6.68 kB = 1.83 kB 1.83 kB
oss-stable/react-dom/cjs/react-dom-client.production.js = 529.83 kB 529.83 kB = 93.52 kB 93.52 kB
oss-experimental/react-dom/cjs/react-dom.production.js = 6.69 kB 6.69 kB = 1.83 kB 1.83 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js = 651.62 kB 651.62 kB = 114.80 kB 114.80 kB
facebook-www/ReactDOM-prod.classic.js = 675.87 kB 675.87 kB = 118.93 kB 118.93 kB
facebook-www/ReactDOM-prod.modern.js = 666.15 kB 666.15 kB = 117.31 kB 117.31 kB

Significant size changes

Includes any change greater than 0.2%:

Expand to show
Name +/- Base Current +/- gzip Base gzip Current gzip
oss-experimental/react-dom/unstable_server-external-runtime.js +1.81% 15.59 kB 15.87 kB +1.75% 3.65 kB 3.71 kB

Generated by 🚫 dangerJS against 1061fda

@sebmarkbage sebmarkbage merged commit c0464ae into facebook:main May 23, 2025
246 checks passed
github-actions bot pushed a commit that referenced this pull request May 23, 2025
This is the same technique we do for the client except we don't check
whether this is newly created font loading to keep code small.

Unfortunately, we can't use this technique for Suspensey images. They'll
need to block before we call `startViewTransition` in a separate
refactor. This is due to a bug in Chrome where `img.decode()` doesn't
resolve until `startViewTransition` does.

DiffTrain build for [c0464ae](c0464ae)
github-actions bot pushed a commit to code/lib-react that referenced this pull request May 23, 2025
This is the same technique we do for the client except we don't check
whether this is newly created font loading to keep code small.

Unfortunately, we can't use this technique for Suspensey images. They'll
need to block before we call `startViewTransition` in a separate
refactor. This is due to a bug in Chrome where `img.decode()` doesn't
resolve until `startViewTransition` does.

DiffTrain build for [c0464ae](facebook@c0464ae)
github-actions bot pushed a commit to code/lib-react that referenced this pull request May 23, 2025
This is the same technique we do for the client except we don't check
whether this is newly created font loading to keep code small.

Unfortunately, we can't use this technique for Suspensey images. They'll
need to block before we call `startViewTransition` in a separate
refactor. This is due to a bug in Chrome where `img.decode()` doesn't
resolve until `startViewTransition` does.

DiffTrain build for [c0464ae](facebook@c0464ae)
mergify bot added a commit to robfrank/linklift that referenced this pull request Oct 7, 2025
Bumps [react](https://github.com/facebook/react/tree/HEAD/packages/react) from 19.1.1 to 19.2.0.
Release notes

*Sourced from [react's releases](https://github.com/facebook/react/releases).*

> 19.2.0 (Oct 1, 2025)
> --------------------
>
> Below is a list of all new features, APIs, and bug fixes.
>
> Read the [React 19.2 release post](https://react.dev/blog/2025/10/01/react-19-2) for more information.
>
> New React Features
> ------------------
>
> * [`<Activity>`](https://react.dev/reference/react/Activity): A new API to hide and restore the UI and internal state of its children.
> * [`useEffectEvent`](https://react.dev/reference/react/useEffectEvent) is a React Hook that lets you extract non-reactive logic into an [Effect Event](https://react.dev/learn/separating-events-from-effects#declaring-an-effect-event).
> * [`cacheSignal`](https://react.dev/reference/react/cacheSignal) (for RSCs) lets your know when the `cache()` lifetime is over.
> * [React Performance tracks](https://react.dev/reference/developer-tooling/react-performance-tracks) appear on the Performance panel’s timeline in your browser developer tools
>
> New React DOM Features
> ----------------------
>
> * Added resume APIs for partial pre-rendering with Web Streams:
>   + [`resume`](https://react.dev/reference/react-dom/server/resume): to resume a prerender to a stream.
>   + [`resumeAndPrerender`](https://react.dev/reference/react-dom/static/resumeAndPrerender): to resume a prerender to HTML.
> * Added resume APIs for partial pre-rendering with Node Streams:
>   + [`resumeToPipeableStream`](https://react.dev/reference/react-dom/server/resumeToPipeableStream): to resume a prerender to a stream.
>   + [`resumeAndPrerenderToNodeStream`](https://react.dev/reference/react-dom/static/resumeAndPrerenderToNodeStream): to resume a prerender to HTML.
> * Updated [`prerender`](https://react.dev/reference/react-dom/static/prerender) APIs to return a `postponed` state that can be passed to the `resume` APIs.
>
> Notable changes
> ---------------
>
> * React DOM now batches suspense boundary reveals, matching the behavior of client side rendering. This change is especially noticeable when animating the reveal of Suspense boundaries e.g. with the upcoming `<ViewTransition>` Component. React will batch as much reveals as possible before the first paint while trying to hit popular first-contentful paint metrics.
> * Add Node Web Streams (`prerender`, `renderToReadableStream`) to server-side-rendering APIs for Node.js
> * Use underscore instead of `:` IDs generated by useId
>
> All Changes
> -----------
>
> ### React
>
> * `<Activity />` was developed over many years, starting before `ClassComponent.setState` ([`@​acdlite`](https://github.com/acdlite) [`@​sebmarkbage`](https://github.com/sebmarkbage) and many others)
> * Stringify context as "SomeContext" instead of "SomeContext.Provider" ([`@​kassens`](https://github.com/kassens) [#33507](https://redirect.github.com/facebook/react/pull/33507))
> * Include stack of cause of React instrumentation errors with `%o` placeholder ([`@​eps1lon`](https://github.com/eps1lon) [#34198](https://redirect.github.com/facebook/react/pull/34198))
> * Fix infinite `useDeferredValue` loop in popstate event ([`@​acdlite`](https://github.com/acdlite) [#32821](https://redirect.github.com/facebook/react/pull/32821))
> * Fix a bug when an initial value was passed to `useDeferredValue` ([`@​acdlite`](https://github.com/acdlite) [#34376](https://redirect.github.com/facebook/react/pull/34376))
> * Fix a crash when submitting forms with Client Actions ([`@​sebmarkbage`](https://github.com/sebmarkbage) [#33055](https://redirect.github.com/facebook/react/pull/33055))
> * Hide/unhide the content of dehydrated suspense boundaries if they resuspend ([`@​sebmarkbage`](https://github.com/sebmarkbage) [#32900](https://redirect.github.com/facebook/react/pull/32900))
> * Avoid stack overflow on wide trees during Hot Reload ([`@​sophiebits`](https://github.com/sophiebits) [#34145](https://redirect.github.com/facebook/react/pull/34145))
> * Improve Owner and Component stacks in various places ([`@​sebmarkbage`](https://github.com/sebmarkbage), [`@​eps1lon`](https://github.com/eps1lon): [#33629](https://redirect.github.com/facebook/react/pull/33629), [#33724](https://redirect.github.com/facebook/react/pull/33724), [#32735](https://redirect.github.com/facebook/react/pull/32735), [#33723](https://redirect.github.com/facebook/react/pull/33723))
> * Add `cacheSignal` ([`@​sebmarkbage`](https://github.com/sebmarkbage) [#33557](https://redirect.github.com/facebook/react/pull/33557))
>
> ### React DOM
>
> * Block on Suspensey Fonts during reveal of server-side-rendered content ([`@​sebmarkbage`](https://github.com/sebmarkbage) [#33342](https://redirect.github.com/facebook/react/pull/33342))
> * Use underscore instead of `:` for IDs generated by `useId` ([`@​sebmarkbage`](https://github.com/sebmarkbage), [`@​eps1lon`](https://github.com/eps1lon): [#32001](https://redirect.github.com/facebook/react/pull/32001), [facebook/react#33342](https://redirect.github.com/facebook/react/pull/33342)[#33099](https://redirect.github.com/facebook/react/pull/33099), [#33422](https://redirect.github.com/facebook/react/pull/33422))
> * Stop warning when ARIA 1.3 attributes are used ([`@​Abdul-Omira`](https://github.com/Abdul-Omira) [#34264](https://redirect.github.com/facebook/react/pull/34264))
> * Allow `nonce` to be used on hoistable styles ([`@​Andarist`](https://github.com/Andarist) [#32461](https://redirect.github.com/facebook/react/pull/32461))
> * Warn for using a React owned node as a Container if it also has text content ([`@​sebmarkbage`](https://github.com/sebmarkbage) [#32774](https://redirect.github.com/facebook/react/pull/32774))

... (truncated)


Changelog

*Sourced from [react's changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md).*

> 19.2.0 (October 1st, 2025)
> --------------------------
>
> Below is a list of all new features, APIs, and bug fixes.
>
> Read the [React 19.2 release post](https://react.dev/blog/2025/10/01/react-19-2) for more information.
>
> ### New React Features
>
> * [`<Activity>`](https://react.dev/reference/react/Activity): A new API to hide and restore the UI and internal state of its children.
> * [`useEffectEvent`](https://react.dev/reference/react/useEffectEvent) is a React Hook that lets you extract non-reactive logic into an [Effect Event](https://react.dev/learn/separating-events-from-effects#declaring-an-effect-event).
> * [`cacheSignal`](https://react.dev/reference/react/cacheSignal) (for RSCs) lets your know when the `cache()` lifetime is over.
> * [React Performance tracks](https://react.dev/reference/developer-tooling/react-performance-tracks) appear on the Performance panel’s timeline in your browser developer tools
>
> ### New React DOM Features
>
> * Added resume APIs for partial pre-rendering with Web Streams:
>   + [`resume`](https://react.dev/reference/react-dom/server/resume): to resume a prerender to a stream.
>   + [`resumeAndPrerender`](https://react.dev/reference/react-dom/static/resumeAndPrerender): to resume a prerender to HTML.
> * Added resume APIs for partial pre-rendering with Node Streams:
>   + [`resumeToPipeableStream`](https://react.dev/reference/react-dom/server/resumeToPipeableStream): to resume a prerender to a stream.
>   + [`resumeAndPrerenderToNodeStream`](https://react.dev/reference/react-dom/static/resumeAndPrerenderToNodeStream): to resume a prerender to HTML.
> * Updated [`prerender`](https://react.dev/reference/react-dom/static/prerender) APIs to return a `postponed` state that can be passed to the `resume` APIs.
>
> ### Notable changes
>
> * React DOM now batches suspense boundary reveals, matching the behavior of client side rendering. This change is especially noticeable when animating the reveal of Suspense boundaries e.g. with the upcoming `<ViewTransition>` Component. React will batch as much reveals as possible before the first paint while trying to hit popular first-contentful paint metrics.
> * Add Node Web Streams (`prerender`, `renderToReadableStream`) to server-side-rendering APIs for Node.js
> * Use underscore instead of `:` IDs generated by useId
>
> ### All Changes
>
> #### React
>
> * `<Activity />` was developed over many years, starting before `ClassComponent.setState` ([`@​acdlite`](https://github.com/acdlite) [`@​sebmarkbage`](https://github.com/sebmarkbage) and many others)
> * Stringify context as "SomeContext" instead of "SomeContext.Provider" ([`@​kassens`](https://github.com/kassens) [#33507](https://redirect.github.com/facebook/react/pull/33507))
> * Include stack of cause of React instrumentation errors with `%o` placeholder ([`@​eps1lon`](https://github.com/eps1lon) [#34198](https://redirect.github.com/facebook/react/pull/34198))
> * Fix infinite `useDeferredValue` loop in popstate event ([`@​acdlite`](https://github.com/acdlite) [#32821](https://redirect.github.com/facebook/react/pull/32821))
> * Fix a bug when an initial value was passed to `useDeferredValue` ([`@​acdlite`](https://github.com/acdlite) [#34376](https://redirect.github.com/facebook/react/pull/34376))
> * Fix a crash when submitting forms with Client Actions ([`@​sebmarkbage`](https://github.com/sebmarkbage) [#33055](https://redirect.github.com/facebook/react/pull/33055))
> * Hide/unhide the content of dehydrated suspense boundaries if they resuspend ([`@​sebmarkbage`](https://github.com/sebmarkbage) [#32900](https://redirect.github.com/facebook/react/pull/32900))
> * Avoid stack overflow on wide trees during Hot Reload ([`@​sophiebits`](https://github.com/sophiebits) [#34145](https://redirect.github.com/facebook/react/pull/34145))
> * Improve Owner and Component stacks in various places ([`@​sebmarkbage`](https://github.com/sebmarkbage), [`@​eps1lon`](https://github.com/eps1lon): [#33629](https://redirect.github.com/facebook/react/pull/33629), [#33724](https://redirect.github.com/facebook/react/pull/33724), [#32735](https://redirect.github.com/facebook/react/pull/32735), [#33723](https://redirect.github.com/facebook/react/pull/33723))
> * Add `cacheSignal` ([`@​sebmarkbage`](https://github.com/sebmarkbage) [#33557](https://redirect.github.com/facebook/react/pull/33557))
>
> #### React DOM
>
> * Block on Suspensey Fonts during reveal of server-side-rendered content ([`@​sebmarkbage`](https://github.com/sebmarkbage) [#33342](https://redirect.github.com/facebook/react/pull/33342))
> * Use underscore instead of `:` for IDs generated by `useId` ([`@​sebmarkbage`](https://github.com/sebmarkbage), [`@​eps1lon`](https://github.com/eps1lon): [#32001](https://redirect.github.com/facebook/react/pull/32001), [facebook/react#33342](https://redirect.github.com/facebook/react/pull/33342)[#33099](https://redirect.github.com/facebook/react/pull/33099), [#33422](https://redirect.github.com/facebook/react/pull/33422))
> * Stop warning when ARIA 1.3 attributes are used ([`@​Abdul-Omira`](https://github.com/Abdul-Omira) [#34264](https://redirect.github.com/facebook/react/pull/34264))
> * Allow `nonce` to be used on hoistable styles ([`@​Andarist`](https://github.com/Andarist) [#32461](https://redirect.github.com/facebook/react/pull/32461))

... (truncated)


Commits

* [`5667a41`](facebook/react@5667a41) Bump next prerelease version numbers ([#34639](https://github.com/facebook/react/tree/HEAD/packages/react/issues/34639))
* [`8bb7241`](facebook/react@8bb7241) Bump useEffectEvent to Canary ([#34610](https://github.com/facebook/react/tree/HEAD/packages/react/issues/34610))
* [`e3c9656`](facebook/react@e3c9656) Ensure Performance Track are Clamped and Don't overlap ([#34509](https://github.com/facebook/react/tree/HEAD/packages/react/issues/34509))
* [`68f00c9`](facebook/react@68f00c9) Release Activity in Canary ([#34374](https://github.com/facebook/react/tree/HEAD/packages/react/issues/34374))
* [`0e10ee9`](facebook/react@0e10ee9) [Reconciler] Set ProfileMode for Host Root Fiber by default in dev ([#34432](https://github.com/facebook/react/tree/HEAD/packages/react/issues/34432))
* [`3bf8ab4`](facebook/react@3bf8ab4) Add missing Activity export to development mode ([#34439](https://github.com/facebook/react/tree/HEAD/packages/react/issues/34439))
* [`1549bda`](facebook/react@1549bda) [Flight] Only assign `_store` in dev mode when creating lazy types ([#34354](https://github.com/facebook/react/tree/HEAD/packages/react/issues/34354))
* [`bb6f0c8`](facebook/react@bb6f0c8) [Flight] Fix wrong missing key warning when static child is blocked ([#34350](https://github.com/facebook/react/tree/HEAD/packages/react/issues/34350))
* [`05addfc`](facebook/react@05addfc) Update Flow to 0.266 ([#34271](https://github.com/facebook/react/tree/HEAD/packages/react/issues/34271))
* [`ec5dd0a`](facebook/react@ec5dd0a) Update Flow to 0.257 ([#34253](https://github.com/facebook/react/tree/HEAD/packages/react/issues/34253))
* Additional commits viewable in [compare view](https://github.com/facebook/react/commits/v19.2.0/packages/react)
  
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility\_score?dependency-name=react&package-manager=npm\_and\_yarn&previous-version=19.1.1&new-version=19.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
  
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show  ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
mergify bot added a commit to robfrank/linklift that referenced this pull request Oct 7, 2025
Bumps [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) from 19.1.1 to 19.2.0.
Release notes

*Sourced from [react-dom's releases](https://github.com/facebook/react/releases).*

> 19.2.0 (Oct 1, 2025)
> --------------------
>
> Below is a list of all new features, APIs, and bug fixes.
>
> Read the [React 19.2 release post](https://react.dev/blog/2025/10/01/react-19-2) for more information.
>
> New React Features
> ------------------
>
> * [`<Activity>`](https://react.dev/reference/react/Activity): A new API to hide and restore the UI and internal state of its children.
> * [`useEffectEvent`](https://react.dev/reference/react/useEffectEvent) is a React Hook that lets you extract non-reactive logic into an [Effect Event](https://react.dev/learn/separating-events-from-effects#declaring-an-effect-event).
> * [`cacheSignal`](https://react.dev/reference/react/cacheSignal) (for RSCs) lets your know when the `cache()` lifetime is over.
> * [React Performance tracks](https://react.dev/reference/developer-tooling/react-performance-tracks) appear on the Performance panel’s timeline in your browser developer tools
>
> New React DOM Features
> ----------------------
>
> * Added resume APIs for partial pre-rendering with Web Streams:
>   + [`resume`](https://react.dev/reference/react-dom/server/resume): to resume a prerender to a stream.
>   + [`resumeAndPrerender`](https://react.dev/reference/react-dom/static/resumeAndPrerender): to resume a prerender to HTML.
> * Added resume APIs for partial pre-rendering with Node Streams:
>   + [`resumeToPipeableStream`](https://react.dev/reference/react-dom/server/resumeToPipeableStream): to resume a prerender to a stream.
>   + [`resumeAndPrerenderToNodeStream`](https://react.dev/reference/react-dom/static/resumeAndPrerenderToNodeStream): to resume a prerender to HTML.
> * Updated [`prerender`](https://react.dev/reference/react-dom/static/prerender) APIs to return a `postponed` state that can be passed to the `resume` APIs.
>
> Notable changes
> ---------------
>
> * React DOM now batches suspense boundary reveals, matching the behavior of client side rendering. This change is especially noticeable when animating the reveal of Suspense boundaries e.g. with the upcoming `<ViewTransition>` Component. React will batch as much reveals as possible before the first paint while trying to hit popular first-contentful paint metrics.
> * Add Node Web Streams (`prerender`, `renderToReadableStream`) to server-side-rendering APIs for Node.js
> * Use underscore instead of `:` IDs generated by useId
>
> All Changes
> -----------
>
> ### React
>
> * `<Activity />` was developed over many years, starting before `ClassComponent.setState` ([`@​acdlite`](https://github.com/acdlite) [`@​sebmarkbage`](https://github.com/sebmarkbage) and many others)
> * Stringify context as "SomeContext" instead of "SomeContext.Provider" ([`@​kassens`](https://github.com/kassens) [#33507](https://redirect.github.com/facebook/react/pull/33507))
> * Include stack of cause of React instrumentation errors with `%o` placeholder ([`@​eps1lon`](https://github.com/eps1lon) [#34198](https://redirect.github.com/facebook/react/pull/34198))
> * Fix infinite `useDeferredValue` loop in popstate event ([`@​acdlite`](https://github.com/acdlite) [#32821](https://redirect.github.com/facebook/react/pull/32821))
> * Fix a bug when an initial value was passed to `useDeferredValue` ([`@​acdlite`](https://github.com/acdlite) [#34376](https://redirect.github.com/facebook/react/pull/34376))
> * Fix a crash when submitting forms with Client Actions ([`@​sebmarkbage`](https://github.com/sebmarkbage) [#33055](https://redirect.github.com/facebook/react/pull/33055))
> * Hide/unhide the content of dehydrated suspense boundaries if they resuspend ([`@​sebmarkbage`](https://github.com/sebmarkbage) [#32900](https://redirect.github.com/facebook/react/pull/32900))
> * Avoid stack overflow on wide trees during Hot Reload ([`@​sophiebits`](https://github.com/sophiebits) [#34145](https://redirect.github.com/facebook/react/pull/34145))
> * Improve Owner and Component stacks in various places ([`@​sebmarkbage`](https://github.com/sebmarkbage), [`@​eps1lon`](https://github.com/eps1lon): [#33629](https://redirect.github.com/facebook/react/pull/33629), [#33724](https://redirect.github.com/facebook/react/pull/33724), [#32735](https://redirect.github.com/facebook/react/pull/32735), [#33723](https://redirect.github.com/facebook/react/pull/33723))
> * Add `cacheSignal` ([`@​sebmarkbage`](https://github.com/sebmarkbage) [#33557](https://redirect.github.com/facebook/react/pull/33557))
>
> ### React DOM
>
> * Block on Suspensey Fonts during reveal of server-side-rendered content ([`@​sebmarkbage`](https://github.com/sebmarkbage) [#33342](https://redirect.github.com/facebook/react/pull/33342))
> * Use underscore instead of `:` for IDs generated by `useId` ([`@​sebmarkbage`](https://github.com/sebmarkbage), [`@​eps1lon`](https://github.com/eps1lon): [#32001](https://redirect.github.com/facebook/react/pull/32001), [facebook/react#33342](https://redirect.github.com/facebook/react/pull/33342)[#33099](https://redirect.github.com/facebook/react/pull/33099), [#33422](https://redirect.github.com/facebook/react/pull/33422))
> * Stop warning when ARIA 1.3 attributes are used ([`@​Abdul-Omira`](https://github.com/Abdul-Omira) [#34264](https://redirect.github.com/facebook/react/pull/34264))
> * Allow `nonce` to be used on hoistable styles ([`@​Andarist`](https://github.com/Andarist) [#32461](https://redirect.github.com/facebook/react/pull/32461))
> * Warn for using a React owned node as a Container if it also has text content ([`@​sebmarkbage`](https://github.com/sebmarkbage) [#32774](https://redirect.github.com/facebook/react/pull/32774))

... (truncated)


Changelog

*Sourced from [react-dom's changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md).*

> 19.2.0 (October 1st, 2025)
> --------------------------
>
> Below is a list of all new features, APIs, and bug fixes.
>
> Read the [React 19.2 release post](https://react.dev/blog/2025/10/01/react-19-2) for more information.
>
> ### New React Features
>
> * [`<Activity>`](https://react.dev/reference/react/Activity): A new API to hide and restore the UI and internal state of its children.
> * [`useEffectEvent`](https://react.dev/reference/react/useEffectEvent) is a React Hook that lets you extract non-reactive logic into an [Effect Event](https://react.dev/learn/separating-events-from-effects#declaring-an-effect-event).
> * [`cacheSignal`](https://react.dev/reference/react/cacheSignal) (for RSCs) lets your know when the `cache()` lifetime is over.
> * [React Performance tracks](https://react.dev/reference/developer-tooling/react-performance-tracks) appear on the Performance panel’s timeline in your browser developer tools
>
> ### New React DOM Features
>
> * Added resume APIs for partial pre-rendering with Web Streams:
>   + [`resume`](https://react.dev/reference/react-dom/server/resume): to resume a prerender to a stream.
>   + [`resumeAndPrerender`](https://react.dev/reference/react-dom/static/resumeAndPrerender): to resume a prerender to HTML.
> * Added resume APIs for partial pre-rendering with Node Streams:
>   + [`resumeToPipeableStream`](https://react.dev/reference/react-dom/server/resumeToPipeableStream): to resume a prerender to a stream.
>   + [`resumeAndPrerenderToNodeStream`](https://react.dev/reference/react-dom/static/resumeAndPrerenderToNodeStream): to resume a prerender to HTML.
> * Updated [`prerender`](https://react.dev/reference/react-dom/static/prerender) APIs to return a `postponed` state that can be passed to the `resume` APIs.
>
> ### Notable changes
>
> * React DOM now batches suspense boundary reveals, matching the behavior of client side rendering. This change is especially noticeable when animating the reveal of Suspense boundaries e.g. with the upcoming `<ViewTransition>` Component. React will batch as much reveals as possible before the first paint while trying to hit popular first-contentful paint metrics.
> * Add Node Web Streams (`prerender`, `renderToReadableStream`) to server-side-rendering APIs for Node.js
> * Use underscore instead of `:` IDs generated by useId
>
> ### All Changes
>
> #### React
>
> * `<Activity />` was developed over many years, starting before `ClassComponent.setState` ([`@​acdlite`](https://github.com/acdlite) [`@​sebmarkbage`](https://github.com/sebmarkbage) and many others)
> * Stringify context as "SomeContext" instead of "SomeContext.Provider" ([`@​kassens`](https://github.com/kassens) [#33507](https://redirect.github.com/facebook/react/pull/33507))
> * Include stack of cause of React instrumentation errors with `%o` placeholder ([`@​eps1lon`](https://github.com/eps1lon) [#34198](https://redirect.github.com/facebook/react/pull/34198))
> * Fix infinite `useDeferredValue` loop in popstate event ([`@​acdlite`](https://github.com/acdlite) [#32821](https://redirect.github.com/facebook/react/pull/32821))
> * Fix a bug when an initial value was passed to `useDeferredValue` ([`@​acdlite`](https://github.com/acdlite) [#34376](https://redirect.github.com/facebook/react/pull/34376))
> * Fix a crash when submitting forms with Client Actions ([`@​sebmarkbage`](https://github.com/sebmarkbage) [#33055](https://redirect.github.com/facebook/react/pull/33055))
> * Hide/unhide the content of dehydrated suspense boundaries if they resuspend ([`@​sebmarkbage`](https://github.com/sebmarkbage) [#32900](https://redirect.github.com/facebook/react/pull/32900))
> * Avoid stack overflow on wide trees during Hot Reload ([`@​sophiebits`](https://github.com/sophiebits) [#34145](https://redirect.github.com/facebook/react/pull/34145))
> * Improve Owner and Component stacks in various places ([`@​sebmarkbage`](https://github.com/sebmarkbage), [`@​eps1lon`](https://github.com/eps1lon): [#33629](https://redirect.github.com/facebook/react/pull/33629), [#33724](https://redirect.github.com/facebook/react/pull/33724), [#32735](https://redirect.github.com/facebook/react/pull/32735), [#33723](https://redirect.github.com/facebook/react/pull/33723))
> * Add `cacheSignal` ([`@​sebmarkbage`](https://github.com/sebmarkbage) [#33557](https://redirect.github.com/facebook/react/pull/33557))
>
> #### React DOM
>
> * Block on Suspensey Fonts during reveal of server-side-rendered content ([`@​sebmarkbage`](https://github.com/sebmarkbage) [#33342](https://redirect.github.com/facebook/react/pull/33342))
> * Use underscore instead of `:` for IDs generated by `useId` ([`@​sebmarkbage`](https://github.com/sebmarkbage), [`@​eps1lon`](https://github.com/eps1lon): [#32001](https://redirect.github.com/facebook/react/pull/32001), [facebook/react#33342](https://redirect.github.com/facebook/react/pull/33342)[#33099](https://redirect.github.com/facebook/react/pull/33099), [#33422](https://redirect.github.com/facebook/react/pull/33422))
> * Stop warning when ARIA 1.3 attributes are used ([`@​Abdul-Omira`](https://github.com/Abdul-Omira) [#34264](https://redirect.github.com/facebook/react/pull/34264))
> * Allow `nonce` to be used on hoistable styles ([`@​Andarist`](https://github.com/Andarist) [#32461](https://redirect.github.com/facebook/react/pull/32461))

... (truncated)


Commits

* [`8618113`](facebook/react@8618113) Bump scheduler version ([#34671](https://github.com/facebook/react/tree/HEAD/packages/react-dom/issues/34671))
* [`1bd1f01`](facebook/react@1bd1f01) Ship partial-prerendering APIs to Canary ([#34633](https://github.com/facebook/react/tree/HEAD/packages/react-dom/issues/34633))
* [`2f0649a`](facebook/react@2f0649a) [Fizz] Remove `nonce` option from resume-and-prerender APIs ([#34664](https://github.com/facebook/react/tree/HEAD/packages/react-dom/issues/34664))
* [`5667a41`](facebook/react@5667a41) Bump next prerelease version numbers ([#34639](https://github.com/facebook/react/tree/HEAD/packages/react-dom/issues/34639))
* [`e08f53b`](facebook/react@e08f53b) Match `react-dom/static` test entrypoints and published entrypoints ([#34599](https://github.com/facebook/react/tree/HEAD/packages/react-dom/issues/34599))
* [`8bb7241`](facebook/react@8bb7241) Bump useEffectEvent to Canary ([#34610](https://github.com/facebook/react/tree/HEAD/packages/react-dom/issues/34610))
* [`83c88ad`](facebook/react@83c88ad) Handle fabric root level fragment with compareDocumentPosition ([#34533](https://github.com/facebook/react/tree/HEAD/packages/react-dom/issues/34533))
* [`68f00c9`](facebook/react@68f00c9) Release Activity in Canary ([#34374](https://github.com/facebook/react/tree/HEAD/packages/react-dom/issues/34374))
* [`3168e08`](facebook/react@3168e08) [flags] enable opt-in for enableDefaultTransitionIndicator ([#34373](https://github.com/facebook/react/tree/HEAD/packages/react-dom/issues/34373))
* [`3434ff4`](facebook/react@3434ff4) Add scrollIntoView to fragment instances ([#32814](https://github.com/facebook/react/tree/HEAD/packages/react-dom/issues/32814))
* Additional commits viewable in [compare view](https://github.com/facebook/react/commits/v19.2.0/packages/react-dom)
  
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility\_score?dependency-name=react-dom&package-manager=npm\_and\_yarn&previous-version=19.1.1&new-version=19.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
  
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show  ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed React Core Team Opened by a member of the React Core Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants