Skip to content

Conversation

@sebmarkbage
Copy link
Collaborator

FlightReplyServer are for client->server and ReactFlightClient is for server->client. They're not 100% symmetrical.

We did a number of refactors to ReactFlightClient in PRs like #29823 and #33664 to change the structure of the resolution. This PR brings those changes to synchronize the two approaches. Which addresses deep resolution of cycles and deferred error handling.

This also fixes a critical security vulnerability.

FlightReplyServer are for client->server and ReactFlightClient is for server->client. They're not 100% symmetrical.

We did a number of refactors to ReactFlightClient in PRs like facebook#29823 and facebook#33664 to change the structure of the resolution.
This PR brings those changes to synchronize the two approaches. Which addresses
deep resolution of cycles and deferred error handling.

This also fixes a critical security vulnerability.
@github-actions github-actions bot added the React Core Team Opened by a member of the React Core Team label Dec 3, 2025
@sebmarkbage sebmarkbage merged commit 7dc903c into facebook:main Dec 3, 2025
238 of 243 checks passed
@react-sizebot
Copy link

Comparing: 36df5e8...e2fd5dc

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.84 kB 6.84 kB = 1.88 kB 1.88 kB
oss-stable/react-dom/cjs/react-dom-client.production.js = 608.36 kB 608.36 kB = 107.68 kB 107.68 kB
oss-experimental/react-dom/cjs/react-dom.production.js = 6.84 kB 6.84 kB = 1.88 kB 1.88 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js = 667.47 kB 667.47 kB = 117.57 kB 117.57 kB
facebook-www/ReactDOM-prod.classic.js = 693.67 kB 693.67 kB = 122.06 kB 122.06 kB
facebook-www/ReactDOM-prod.modern.js = 684.10 kB 684.10 kB = 120.45 kB 120.45 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-server.browser.production.js +8.76% 94.85 kB 103.16 kB +7.05% 19.44 kB 20.81 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-server.browser.production.js +8.76% 94.85 kB 103.16 kB +7.05% 19.44 kB 20.81 kB
oss-stable-semver/react-server-dom-esm/cjs/react-server-dom-esm-server.node.production.js +8.72% 98.46 kB 107.04 kB +6.91% 20.20 kB 21.59 kB
oss-stable/react-server-dom-esm/cjs/react-server-dom-esm-server.node.production.js +8.72% 98.46 kB 107.04 kB +6.91% 20.20 kB 21.59 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-server.edge.production.js +8.68% 95.99 kB 104.32 kB +6.96% 19.70 kB 21.07 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-server.edge.production.js +8.68% 95.99 kB 104.32 kB +6.96% 19.70 kB 21.07 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.browser.production.js +8.60% 96.70 kB 105.01 kB +6.90% 19.81 kB 21.18 kB
oss-experimental/react-server-dom-esm/cjs/react-server-dom-esm-server.node.production.js +8.56% 100.31 kB 108.90 kB +6.80% 20.57 kB 21.97 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.edge.production.js +8.52% 97.84 kB 106.17 kB +6.80% 20.10 kB 21.46 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.production.js +8.48% 102.29 kB 110.97 kB +6.92% 20.73 kB 22.16 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.production.js +8.48% 102.29 kB 110.97 kB +6.92% 20.73 kB 22.16 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.production.js +8.33% 104.15 kB 112.82 kB +6.78% 21.09 kB 22.52 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.production.js +8.11% 101.91 kB 110.18 kB +6.52% 20.57 kB 21.91 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.production.js +8.11% 101.91 kB 110.18 kB +6.52% 20.57 kB 21.91 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.production.js +8.08% 102.26 kB 110.53 kB +6.43% 20.67 kB 22.00 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.production.js +8.08% 102.26 kB 110.53 kB +6.43% 20.67 kB 22.00 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.js +8.04% 103.07 kB 111.35 kB +6.42% 20.87 kB 22.21 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.js +8.04% 103.07 kB 111.35 kB +6.42% 20.87 kB 22.21 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.production.js +8.04% 103.07 kB 111.36 kB +6.41% 20.87 kB 22.21 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.production.js +8.04% 103.07 kB 111.36 kB +6.41% 20.87 kB 22.21 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.production.js +7.98% 108.37 kB 117.01 kB +6.47% 21.67 kB 23.07 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.production.js +7.98% 108.37 kB 117.01 kB +6.47% 21.67 kB 23.07 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.production.js +7.97% 103.76 kB 112.03 kB +6.13% 21.01 kB 22.30 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.production.js +7.94% 104.12 kB 112.38 kB +6.11% 21.11 kB 22.40 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.js +7.90% 104.92 kB 113.21 kB +6.01% 21.31 kB 22.59 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.production.js +7.90% 104.92 kB 113.21 kB +6.00% 21.31 kB 22.59 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.production.js +7.89% 109.42 kB 118.05 kB +6.29% 21.92 kB 23.30 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.production.js +7.89% 109.42 kB 118.05 kB +6.29% 21.92 kB 23.30 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.production.js +7.89% 109.44 kB 118.07 kB +6.27% 21.92 kB 23.30 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.production.js +7.89% 109.44 kB 118.07 kB +6.27% 21.92 kB 23.30 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.production.js +7.84% 110.22 kB 118.87 kB +6.35% 22.05 kB 23.45 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.production.js +7.76% 111.27 kB 119.91 kB +5.97% 22.34 kB 23.68 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.production.js +7.76% 111.29 kB 119.92 kB +5.95% 22.35 kB 23.68 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-server.browser.development.js +4.93% 187.27 kB 196.50 kB +4.18% 34.00 kB 35.42 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-server.browser.development.js +4.93% 187.27 kB 196.50 kB +4.18% 34.00 kB 35.42 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.browser.development.js +4.87% 189.37 kB 198.60 kB +4.05% 34.46 kB 35.85 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-server.edge.development.js +4.85% 190.94 kB 200.19 kB +4.10% 34.50 kB 35.92 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-server.edge.development.js +4.85% 190.94 kB 200.19 kB +4.10% 34.50 kB 35.92 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.edge.development.js +4.79% 193.03 kB 202.28 kB +3.97% 34.96 kB 36.35 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.development.js +4.70% 195.12 kB 204.28 kB +3.84% 35.38 kB 36.74 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.development.js +4.70% 195.12 kB 204.28 kB +3.84% 35.38 kB 36.74 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.development.js +4.69% 195.59 kB 204.76 kB +3.86% 35.48 kB 36.85 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.development.js +4.69% 195.59 kB 204.76 kB +3.86% 35.48 kB 36.85 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.development.js +4.65% 197.22 kB 206.39 kB +3.78% 35.81 kB 37.17 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.development.js +4.64% 197.69 kB 206.86 kB +3.82% 35.91 kB 37.28 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js +4.62% 198.82 kB 208.01 kB +3.81% 35.87 kB 37.23 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js +4.62% 198.82 kB 208.01 kB +3.81% 35.87 kB 37.23 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.development.js +4.62% 198.82 kB 208.01 kB +3.79% 35.87 kB 37.23 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.development.js +4.62% 198.82 kB 208.01 kB +3.79% 35.87 kB 37.23 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js +4.57% 200.91 kB 210.10 kB +3.77% 36.30 kB 37.67 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.development.js +4.57% 200.91 kB 210.10 kB +3.76% 36.30 kB 37.67 kB
oss-stable-semver/react-server-dom-esm/cjs/react-server-dom-esm-server.node.development.js +4.45% 213.53 kB 223.03 kB +3.57% 38.89 kB 40.28 kB
oss-stable/react-server-dom-esm/cjs/react-server-dom-esm-server.node.development.js +4.45% 213.53 kB 223.03 kB +3.57% 38.89 kB 40.28 kB
oss-experimental/react-server-dom-esm/cjs/react-server-dom-esm-server.node.development.js +4.41% 215.62 kB 225.12 kB +3.51% 39.35 kB 40.73 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.development.js +4.37% 219.95 kB 229.55 kB +3.30% 39.56 kB 40.87 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.development.js +4.37% 219.95 kB 229.55 kB +3.30% 39.56 kB 40.87 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.development.js +4.33% 222.04 kB 231.64 kB +3.27% 40.02 kB 41.33 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.development.js +4.22% 226.66 kB 236.22 kB +3.15% 40.64 kB 41.92 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.development.js +4.22% 226.66 kB 236.22 kB +3.15% 40.64 kB 41.92 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js +4.19% 227.87 kB 237.41 kB +3.12% 40.94 kB 42.22 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js +4.19% 227.87 kB 237.41 kB +3.12% 40.94 kB 42.22 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js +4.19% 227.92 kB 237.46 kB +3.10% 40.94 kB 42.20 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js +4.19% 227.92 kB 237.46 kB +3.10% 40.94 kB 42.20 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.development.js +4.18% 228.75 kB 238.31 kB +3.11% 41.10 kB 42.38 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js +4.15% 229.96 kB 239.50 kB +3.09% 41.40 kB 42.67 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js +4.15% 230.01 kB 239.55 kB +3.07% 41.39 kB 42.66 kB

Significant size changes

Includes any change greater than 0.2%:

Expand to show
Name +/- Base Current +/- gzip Base gzip Current gzip
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-server.browser.production.js +8.76% 94.85 kB 103.16 kB +7.05% 19.44 kB 20.81 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-server.browser.production.js +8.76% 94.85 kB 103.16 kB +7.05% 19.44 kB 20.81 kB
oss-stable-semver/react-server-dom-esm/cjs/react-server-dom-esm-server.node.production.js +8.72% 98.46 kB 107.04 kB +6.91% 20.20 kB 21.59 kB
oss-stable/react-server-dom-esm/cjs/react-server-dom-esm-server.node.production.js +8.72% 98.46 kB 107.04 kB +6.91% 20.20 kB 21.59 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-server.edge.production.js +8.68% 95.99 kB 104.32 kB +6.96% 19.70 kB 21.07 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-server.edge.production.js +8.68% 95.99 kB 104.32 kB +6.96% 19.70 kB 21.07 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.browser.production.js +8.60% 96.70 kB 105.01 kB +6.90% 19.81 kB 21.18 kB
oss-experimental/react-server-dom-esm/cjs/react-server-dom-esm-server.node.production.js +8.56% 100.31 kB 108.90 kB +6.80% 20.57 kB 21.97 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.edge.production.js +8.52% 97.84 kB 106.17 kB +6.80% 20.10 kB 21.46 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.production.js +8.48% 102.29 kB 110.97 kB +6.92% 20.73 kB 22.16 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.production.js +8.48% 102.29 kB 110.97 kB +6.92% 20.73 kB 22.16 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.production.js +8.33% 104.15 kB 112.82 kB +6.78% 21.09 kB 22.52 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.production.js +8.11% 101.91 kB 110.18 kB +6.52% 20.57 kB 21.91 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.production.js +8.11% 101.91 kB 110.18 kB +6.52% 20.57 kB 21.91 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.production.js +8.08% 102.26 kB 110.53 kB +6.43% 20.67 kB 22.00 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.production.js +8.08% 102.26 kB 110.53 kB +6.43% 20.67 kB 22.00 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.js +8.04% 103.07 kB 111.35 kB +6.42% 20.87 kB 22.21 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.js +8.04% 103.07 kB 111.35 kB +6.42% 20.87 kB 22.21 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.production.js +8.04% 103.07 kB 111.36 kB +6.41% 20.87 kB 22.21 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.production.js +8.04% 103.07 kB 111.36 kB +6.41% 20.87 kB 22.21 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.production.js +7.98% 108.37 kB 117.01 kB +6.47% 21.67 kB 23.07 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.production.js +7.98% 108.37 kB 117.01 kB +6.47% 21.67 kB 23.07 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.production.js +7.97% 103.76 kB 112.03 kB +6.13% 21.01 kB 22.30 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.production.js +7.94% 104.12 kB 112.38 kB +6.11% 21.11 kB 22.40 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.js +7.90% 104.92 kB 113.21 kB +6.01% 21.31 kB 22.59 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.production.js +7.90% 104.92 kB 113.21 kB +6.00% 21.31 kB 22.59 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.production.js +7.89% 109.42 kB 118.05 kB +6.29% 21.92 kB 23.30 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.production.js +7.89% 109.42 kB 118.05 kB +6.29% 21.92 kB 23.30 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.production.js +7.89% 109.44 kB 118.07 kB +6.27% 21.92 kB 23.30 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.production.js +7.89% 109.44 kB 118.07 kB +6.27% 21.92 kB 23.30 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.production.js +7.84% 110.22 kB 118.87 kB +6.35% 22.05 kB 23.45 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.production.js +7.76% 111.27 kB 119.91 kB +5.97% 22.34 kB 23.68 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.production.js +7.76% 111.29 kB 119.92 kB +5.95% 22.35 kB 23.68 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-server.browser.development.js +4.93% 187.27 kB 196.50 kB +4.18% 34.00 kB 35.42 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-server.browser.development.js +4.93% 187.27 kB 196.50 kB +4.18% 34.00 kB 35.42 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.browser.development.js +4.87% 189.37 kB 198.60 kB +4.05% 34.46 kB 35.85 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-server.edge.development.js +4.85% 190.94 kB 200.19 kB +4.10% 34.50 kB 35.92 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-server.edge.development.js +4.85% 190.94 kB 200.19 kB +4.10% 34.50 kB 35.92 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.edge.development.js +4.79% 193.03 kB 202.28 kB +3.97% 34.96 kB 36.35 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.development.js +4.70% 195.12 kB 204.28 kB +3.84% 35.38 kB 36.74 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.development.js +4.70% 195.12 kB 204.28 kB +3.84% 35.38 kB 36.74 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.development.js +4.69% 195.59 kB 204.76 kB +3.86% 35.48 kB 36.85 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.development.js +4.69% 195.59 kB 204.76 kB +3.86% 35.48 kB 36.85 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.development.js +4.65% 197.22 kB 206.39 kB +3.78% 35.81 kB 37.17 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.development.js +4.64% 197.69 kB 206.86 kB +3.82% 35.91 kB 37.28 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js +4.62% 198.82 kB 208.01 kB +3.81% 35.87 kB 37.23 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js +4.62% 198.82 kB 208.01 kB +3.81% 35.87 kB 37.23 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.development.js +4.62% 198.82 kB 208.01 kB +3.79% 35.87 kB 37.23 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.development.js +4.62% 198.82 kB 208.01 kB +3.79% 35.87 kB 37.23 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js +4.57% 200.91 kB 210.10 kB +3.77% 36.30 kB 37.67 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.development.js +4.57% 200.91 kB 210.10 kB +3.76% 36.30 kB 37.67 kB
oss-stable-semver/react-server-dom-esm/cjs/react-server-dom-esm-server.node.development.js +4.45% 213.53 kB 223.03 kB +3.57% 38.89 kB 40.28 kB
oss-stable/react-server-dom-esm/cjs/react-server-dom-esm-server.node.development.js +4.45% 213.53 kB 223.03 kB +3.57% 38.89 kB 40.28 kB
oss-experimental/react-server-dom-esm/cjs/react-server-dom-esm-server.node.development.js +4.41% 215.62 kB 225.12 kB +3.51% 39.35 kB 40.73 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.development.js +4.37% 219.95 kB 229.55 kB +3.30% 39.56 kB 40.87 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.development.js +4.37% 219.95 kB 229.55 kB +3.30% 39.56 kB 40.87 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.development.js +4.33% 222.04 kB 231.64 kB +3.27% 40.02 kB 41.33 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.development.js +4.22% 226.66 kB 236.22 kB +3.15% 40.64 kB 41.92 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.development.js +4.22% 226.66 kB 236.22 kB +3.15% 40.64 kB 41.92 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js +4.19% 227.87 kB 237.41 kB +3.12% 40.94 kB 42.22 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js +4.19% 227.87 kB 237.41 kB +3.12% 40.94 kB 42.22 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js +4.19% 227.92 kB 237.46 kB +3.10% 40.94 kB 42.20 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js +4.19% 227.92 kB 237.46 kB +3.10% 40.94 kB 42.20 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.development.js +4.18% 228.75 kB 238.31 kB +3.11% 41.10 kB 42.38 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js +4.15% 229.96 kB 239.50 kB +3.09% 41.40 kB 42.67 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js +4.15% 230.01 kB 239.55 kB +3.07% 41.39 kB 42.66 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-client.browser.production.js +0.29% 58.58 kB 58.75 kB +0.47% 11.50 kB 11.55 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-client.browser.production.js +0.29% 58.58 kB 58.75 kB +0.47% 11.50 kB 11.55 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-client.browser.production.js +0.29% 58.58 kB 58.75 kB +0.47% 11.50 kB 11.55 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-client.edge.production.js +0.26% 64.11 kB 64.28 kB +0.42% 12.71 kB 12.76 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-client.edge.production.js +0.26% 64.11 kB 64.28 kB +0.42% 12.71 kB 12.76 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-client.edge.production.js +0.26% 64.11 kB 64.28 kB +0.42% 12.71 kB 12.76 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-client.node.production.js +0.25% 68.44 kB 68.61 kB +0.37% 13.34 kB 13.39 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-client.node.production.js +0.25% 68.44 kB 68.61 kB +0.37% 13.34 kB 13.39 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-client.node.production.js +0.25% 68.44 kB 68.61 kB +0.37% 13.34 kB 13.39 kB

Generated by 🚫 dangerJS against e2fd5dc

@sebmarkbage
Copy link
Collaborator Author

TL;DR: If you are using React Server Components you really must upgrade.

More information in Critical Security Vulnerability in React Server Components.

This vulnerability was disclosed as CVE-2025-55182 and is rated CVSS 10.0.

@jschauma
Copy link

jschauma commented Dec 3, 2025

We did a number of refactors ...
This also fixes a critical security vulnerability.

With this combined commit, people now have to go through a >1500 line patch to try to understand the security relevant changes.

Going forward, it would be preferable if code changes for a critical security vulnerability could be committed separately from other changes. :-)

@sebmarkbage
Copy link
Collaborator Author

Further details of the vulnerability will be provided after the rollout of the fix is complete.

Doridian pushed a commit to foxCaves/foxCaves that referenced this pull request Dec 3, 2025
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [react](https://react.dev/) ([source](https://github.com/facebook/react/tree/HEAD/packages/react)) | [`19.2.0` -> `19.2.1`](https://renovatebot.com/diffs/npm/react/19.2.0/19.2.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/react/19.2.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react/19.2.0/19.2.1?slim=true) |
| [react-dom](https://react.dev/) ([source](https://github.com/facebook/react/tree/HEAD/packages/react-dom)) | [`19.2.0` -> `19.2.1`](https://renovatebot.com/diffs/npm/react-dom/19.2.0/19.2.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/react-dom/19.2.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-dom/19.2.0/19.2.1?slim=true) |

---

### Release Notes

<details>
<summary>facebook/react (react)</summary>

### [`v19.2.1`](https://github.com/facebook/react/blob/HEAD/CHANGELOG.md#1921-Dec-3-2025)

[Compare Source](facebook/react@v19.2.0...v19.2.1)

##### React Server Components

- Bring React Server Component fixes to Server Actions ([@&#8203;sebmarkbage](https://github.com/sebmarkbage) [#&#8203;35277](facebook/react#35277))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi4yNy4xIiwidXBkYXRlZEluVmVyIjoiNDIuMjcuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Reviewed-on: https://git.foxden.network/foxCaves/foxCaves/pulls/16
Co-authored-by: Renovate <renovate@foxden.network>
Co-committed-by: Renovate <renovate@foxden.network>
@justinrest
Copy link

the meta

@szybnev

This comment was marked as outdated.

@rickhanlonii
Copy link
Member

@szybnev that PoC is not valid, the server in that PoC is faked to respond.

@matija2209
Copy link

We did a number of refactors ...
This also fixes a critical security vulnerability.

With this combined commit, people now have to go through a >1500 line patch to try to understand the security relevant changes.

Going forward, it would be preferable if code changes for a critical security vulnerability could be committed separately from other changes. :-)

Probably with a reason. You do not want to make it easier to reverse engineer. What we see, they see.

@macropin
Copy link

macropin commented Dec 4, 2025

Will the fix be backported to older major versions, or are they not vulnerable?

@eps1lon
Copy link
Collaborator

eps1lon commented Dec 4, 2025

There are no react-server-dom-* packages before 19.0 at all. The affected packages and versions are included in GHSA-fv66-9v8q-g76r.

Neither react nor react-dom packages are vulnerable.

}
}
const name = path[i];
if (typeof value === 'object' && hasOwnProperty.call(value, name)) {
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These hasOwnProperty checks were the ones that were missing. This is the critical fix. Without it, you can drill into objects not created by the parser itself.

The rest is mainly protecting against other gadgets and to slow down reverse engineering just a bit (which seems to have been somewhat effective especially with llms).

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could this have also been solved by re-creating an object's own properties on a new object with a null prototype? If I'm not missing something, I imagine that would avoid the "shotgun surgery" of ensuring .hasOwnProperty guards anywhere which the object's properties are traversed.

}
}
const name = path[i];
if (typeof value === 'object' && hasOwnProperty.call(value, name)) {
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the other one.

The ones on the module is not that critical but good to have.

@AlexDev404
Copy link

We did a number of refactors ...
This also fixes a critical security vulnerability.

With this combined commit, people now have to go through a >1500 line patch to try to understand the security relevant changes.

Going forward, it would be preferable if code changes for a critical security vulnerability could be committed separately from other changes. :-)

It was disclosed to the React team since November 29, 2025--so it's something I'd say quite a few people have reviewed already--we're just seeing it now, because they most likely already coordinated what they're going to do.

@jschauma
Copy link

jschauma commented Dec 6, 2025

It was disclosed to the React team since November 29, 2025--so it's something I'd say quite a few people have reviewed already--we're just seeing it now, because they most likely already coordinated what they're going to do.

That's not the point, though.

The issue here is that sliding in a security fix with a refactor makes it difficult for anybody to whom it has not yet been disclosed to understand the vulnerability, to develop their defenses, and for the historical record to be obscured. It is not uncommon for a vulnerability fix to be incomplete and later require additional follow-up, or for a future reference to a given code fix. This is all made more difficult here.

If the concern is disclosure, then the vulnerability could be kept under embargo and patching be done with coordination (as was and still is being done, and which I appreciate), but lifting an embargo and then trying to keep the actual vulnerability obscured only leads to wasted cycles on the defenders' side (see also the large number of AI slopped "PoC"s and poorly understand speculation).

Vulnerability disclosure can be done in multiple stages, but when actual public disclosure is done, it's best to be specific and clear at that point.

@AlexDev404
Copy link

AlexDev404 commented Dec 6, 2025

It was disclosed to the React team since November 29, 2025--so it's something I'd say quite a few people have reviewed already--we're just seeing it now, because they most likely already coordinated what they're going to do.

That's not the point, though.

The issue here is that sliding in a security fix with a refactor makes it difficult for anybody to whom it has not yet been disclosed to understand the vulnerability, to develop their defenses, and for the historical record to be obscured. It is not uncommon for a vulnerability fix to be incomplete and later require additional follow-up, or for a future reference to a given code fix. This is all made more difficult here.

There was no "sliding" of any security fix. The person went through all of the steps of responsibly disclosing the vulnerability and it was released just as any other critical vulnerability. Haven't you been keeping yourself updated with the news? If not, I can for sure see why you'd say something like this.

If the concern is disclosure, then the vulnerability could be kept under embargo and patching be done with coordination (as was and still is being done, and which I appreciate), but lifting an embargo and then trying to keep the actual vulnerability obscured only leads to wasted cycles on the defenders' side (see also the large number of AI slopped "PoC"s and poorly understand speculation).

It's a CVE--the point of it is to go public. I don't think you understand. React is an open-source project, not proprietary. So secretly pushing in a patch and then telling everyone after would defeat the entire purpose of it being an open source project. Also how would you "propose" they do so with React being an NPM package and not a piece of software you can just update? To disclose or not disclose would be irrelevant, as anyone bright enough could easily find out what the changes were.

Vulnerability disclosure can be done in multiple stages, but when actual public disclosure is done, it's best to be specific and clear at that point.

The changes are very clean, and very minimal. IMO only someone who doesn't have a clue about how React works would say something like this. They've been very active in telling everyone essential about what's going on. So just because they didn't tell you to update your hobby project, doesn't give you the right to just come here and think you can get all like this.

@DogRespector93
Copy link

It was disclosed to the React team since November 29, 2025--so it's something I'd say quite a few people have reviewed already--we're just seeing it now, because they most likely already coordinated what they're going to do.

That's not the point, though.
The issue here is that sliding in a security fix with a refactor makes it difficult for anybody to whom it has not yet been disclosed to understand the vulnerability, to develop their defenses, and for the historical record to be obscured. It is not uncommon for a vulnerability fix to be incomplete and later require additional follow-up, or for a future reference to a given code fix. This is all made more difficult here.

There was no "sliding" of any security fix. The person went through all of the steps of responsibly disclosing the vulnerability and it was released just as any other critical vulnerability. Haven't you been keeping yourself updated with the news? If not, I can for sure see why you'd say something like this.

If the concern is disclosure, then the vulnerability could be kept under embargo and patching be done with coordination (as was and still is being done, and which I appreciate), but lifting an embargo and then trying to keep the actual vulnerability obscured only leads to wasted cycles on the defenders' side (see also the large number of AI slopped "PoC"s and poorly understand speculation).

It's a CVE--the point of it is to go public. I don't think you understand. React is an open-source project, not proprietary. So secretly pushing in a patch and then telling everyone after would defeat the entire purpose of it being an open source project. Also how would you "propose" they do so with React being an NPM package and not a piece of software you can just update? To disclose or not disclose would be irrelevant, as anyone bright enough could easily find out what the changes were.

Vulnerability disclosure can be done in multiple stages, but when actual public disclosure is done, it's best to be specific and clear at that point.

The changes are very clean, and very minimal. IMO only someone who doesn't have a clue about how React works would say something like this. They've been very active in telling everyone essential about what's going on. So just because they didn't tell you to update your hobby project, doesn't give you the right to just come here and think you can get all like this.

Hey, for real, you do not have to be rude to someone asking polite, critical-thinking-oriented questions about how and why developers make certain choices in their project. It is not a status symbol to bully other coders doing "hobby projects" because you think it'll impress other devs. Your attitude makes the actual hardworking React teams look bad, not good. Your projects are easily just as "hobby" as theirs, and that's fine! You aren't managing some enterprise project- you're exploring - and anyone with experience doing it professionally knows attitudes like yours are caustic to progress.

They asked legitimate questions. You can say, "This isn't really the forum for these kinds of questions, and I don't actually know the answer, but here's a good place to ask: ", and no one will think any less of you.

@AlexDev404
Copy link

AlexDev404 commented Dec 9, 2025

It was disclosed to the React team since November 29, 2025--so it's something I'd say quite a few people have reviewed already--we're just seeing it now, because they most likely already coordinated what they're going to do.

That's not the point, though.
The issue here is that sliding in a security fix with a refactor makes it difficult for anybody to whom it has not yet been disclosed to understand the vulnerability, to develop their defenses, and for the historical record to be obscured. It is not uncommon for a vulnerability fix to be incomplete and later require additional follow-up, or for a future reference to a given code fix. This is all made more difficult here.

There was no "sliding" of any security fix. The person went through all of the steps of responsibly disclosing the vulnerability and it was released just as any other critical vulnerability. Haven't you been keeping yourself updated with the news? If not, I can for sure see why you'd say something like this.

If the concern is disclosure, then the vulnerability could be kept under embargo and patching be done with coordination (as was and still is being done, and which I appreciate), but lifting an embargo and then trying to keep the actual vulnerability obscured only leads to wasted cycles on the defenders' side (see also the large number of AI slopped "PoC"s and poorly understand speculation).

It's a CVE--the point of it is to go public. I don't think you understand. React is an open-source project, not proprietary. So secretly pushing in a patch and then telling everyone after would defeat the entire purpose of it being an open source project. Also how would you "propose" they do so with React being an NPM package and not a piece of software you can just update? To disclose or not disclose would be irrelevant, as anyone bright enough could easily find out what the changes were.

Vulnerability disclosure can be done in multiple stages, but when actual public disclosure is done, it's best to be specific and clear at that point.

The changes are very clean, and very minimal. IMO only someone who doesn't have a clue about how React works would say something like this. They've been very active in telling everyone essential about what's going on. So just because they didn't tell you to update your hobby project, doesn't give you the right to just come here and think you can get all like this.

Hey, for real, you do not have to be rude to someone asking polite, critical-thinking-oriented questions about how and why developers make certain choices in their project. It is not a status symbol to bully other coders doing "hobby projects" because you think it'll impress other devs. Your attitude makes the actual hardworking React teams look bad, not good. Your projects are easily just as "hobby" as theirs, and that's fine! You aren't managing some enterprise project- you're exploring - and anyone with experience doing it professionally knows attitudes like yours are caustic to progress.

I think you're misunderstanding, because I never said hobby project as if it was something bad. I assumed that that person created something using React for their own personal usage, and was upset by the fact that they never got notified about the issue. And so I think you're heavily inferring on something that wasn't the case.

They asked legitimate questions. You can say, "This isn't really the forum for these kinds of questions, and I don't actually know the answer, but here's a good place to ask: ", and no one will think any less of you.

They never asked any questions, and instead made targeted jabs as to what was happening. If they just made questions, this probably never would've happened.

See the attached thread for further context on their messages

Copy link

@galqbineva27-collab galqbineva27-collab left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mattdanielbrown added a commit to mattdanielbrown/netlify-faunadb-example-todo-app that referenced this pull request Jan 14, 2026
![snyk-top-banner](https://res.cloudinary.com/snyk/image/upload/r-d/scm-platform/snyk-pull-requests/pr-banner-default.svg)


<h3>Snyk has created this PR to upgrade react from 16.14.0 to
19.2.3.</h3>

:information_source: Keep your dependencies up-to-date. This makes it
easier to fix existing vulnerabilities and to more quickly identify and
fix newly disclosed vulnerabilities when they affect your project.

<hr/>


- The recommended version is **1059 versions** ahead of your current
version.

- The recommended version was released **a month ago**.



<details>
<summary><b>Release notes</b></summary>
<br/>
  <details>
    <summary>Package name: <b>react</b></summary>
    <ul>
      <li>
<b>19.2.3</b> - <a
href="https://redirect.github.com/facebook/react/releases/tag/v19.2.3">2025-12-11</a></br><h2>React
Server Components</h2>
<ul>
<li>Add extra loop protection to React Server Functions (<a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/sebmarkbage/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/sebmarkbage">@ sebmarkbage</a> <a
href="https://redirect.github.com/facebook/react/pull/35351"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/35351/hovercard">#35351</a>)</li>
</ul>
      </li>
      <li>
<b>19.2.2</b> - <a
href="https://redirect.github.com/facebook/react/releases/tag/v19.2.2">2025-12-11</a></br><h2>React
Server Components</h2>
<ul>
<li>Move <code>react-server-dom-webpack/*.unbundled</code> to private
<code>react-server-dom-unbundled</code> (<a class="user-mention
notranslate" data-hovercard-type="user"
data-hovercard-url="/users/eps1lon/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/eps1lon">@ eps1lon</a> <a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="3697023033" data-permission-text="Title is private"
data-url="https://github.com/facebook/react/issues/35290"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/35290/hovercard"
href="https://redirect.github.com/facebook/react/pull/35290">#35290</a>)</li>
<li>Patch Promise cycles and toString on Server Functions (<a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/sebmarkbage/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/sebmarkbage">@ sebmarkbage</a>, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/unstubbable/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/unstubbable">@ unstubbable</a> <a
href="https://redirect.github.com/facebook/react/pull/35289"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/35289/hovercard">#35289</a>, <a
href="https://redirect.github.com/facebook/react/pull/35345"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/35345/hovercard">#35345</a>)</li>
</ul>
      </li>
      <li>
<b>19.2.1</b> - <a
href="https://redirect.github.com/facebook/react/releases/tag/v19.2.1">2025-12-03</a></br><h2>React
Server Components</h2>
<ul>
<li>Bring React Server Component fixes to Server Actions (<a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/sebmarkbage/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/sebmarkbage">@ sebmarkbage</a> <a
href="https://redirect.github.com/facebook/react/pull/35277"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/35277/hovercard">#35277</a>)</li>
</ul>
      </li>
      <li>
<b>19.2.0</b> - <a
href="https://redirect.github.com/facebook/react/releases/tag/v19.2.0">2025-10-01</a></br><p>Below
is a list of all new features, APIs, and bug fixes.</p>
<p>Read the <a href="https://react.dev/blog/2025/10/01/react-19-2"
rel="nofollow">React 19.2 release post</a> for more information.</p>
<h2>New React Features</h2>
<ul>
<li><a href="https://react.dev/reference/react/Activity"
rel="nofollow"><code>&lt;Activity&gt;</code></a>: A new API to hide and
restore the UI and internal state of its children.</li>
<li><a href="https://react.dev/reference/react/useEffectEvent"
rel="nofollow"><code>useEffectEvent</code></a> is a React Hook that lets
you extract non-reactive logic into an <a
href="https://react.dev/learn/separating-events-from-effects#declaring-an-effect-event"
rel="nofollow">Effect Event</a>.</li>
<li><a href="https://react.dev/reference/react/cacheSignal"
rel="nofollow"><code>cacheSignal</code></a> (for RSCs) lets your know
when the <code>cache()</code> lifetime is over.</li>
<li><a
href="https://react.dev/reference/developer-tooling/react-performance-tracks"
rel="nofollow">React Performance tracks</a> appear on the Performance
panel’s timeline in your browser developer tools</li>
</ul>
<h2>New React DOM Features</h2>
<ul>
<li>Added resume APIs for partial pre-rendering with Web Streams:
<ul>
<li><a href="https://react.dev/reference/react-dom/server/resume"
rel="nofollow"><code>resume</code></a>: to resume a prerender to a
stream.</li>
<li><a
href="https://react.dev/reference/react-dom/static/resumeAndPrerender"
rel="nofollow"><code>resumeAndPrerender</code></a>: to resume a
prerender to HTML.</li>
</ul>
</li>
<li>Added resume APIs for partial pre-rendering with Node Streams:
<ul>
<li><a
href="https://react.dev/reference/react-dom/server/resumeToPipeableStream"
rel="nofollow"><code>resumeToPipeableStream</code></a>: to resume a
prerender to a stream.</li>
<li><a
href="https://react.dev/reference/react-dom/static/resumeAndPrerenderToNodeStream"
rel="nofollow"><code>resumeAndPrerenderToNodeStream</code></a>: to
resume a prerender to HTML.</li>
</ul>
</li>
<li>Updated <a
href="https://react.dev/reference/react-dom/static/prerender"
rel="nofollow"><code>prerender</code></a> APIs to return a
<code>postponed</code> state that can be passed to the
<code>resume</code> APIs.</li>
</ul>
<h2>Notable changes</h2>
<ul>
<li>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
<code>&lt;ViewTransition&gt;</code> Component. React will batch as much
reveals as possible before the first paint while trying to hit popular
first-contentful paint metrics.</li>
<li>Add Node Web Streams (<code>prerender</code>,
<code>renderToReadableStream</code>) to server-side-rendering APIs for
Node.js</li>
<li>Use underscore instead of <code>:</code> IDs generated by useId</li>
</ul>
<h2>All Changes</h2>
<h3>React</h3>
<ul>
<li><code>&lt;Activity /&gt;</code> was developed over many years,
starting before <code>ClassComponent.setState</code> (<a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/acdlite/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/acdlite">@ acdlite</a> <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/sebmarkbage/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/sebmarkbage">@ sebmarkbage</a> and
many others)</li>
<li>Stringify context as "SomeContext" instead of "SomeContext.Provider"
(<a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/kassens/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/kassens">@ kassens</a> <a
href="https://redirect.github.com/facebook/react/pull/33507"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/33507/hovercard">#33507</a>)</li>
<li>Include stack of cause of React instrumentation errors with
<code>%o</code> placeholder (<a class="user-mention notranslate"
data-hovercard-type="user" data-hovercard-url="/users/eps1lon/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/eps1lon">@ eps1lon</a> <a
href="https://redirect.github.com/facebook/react/pull/34198"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/34198/hovercard">#34198</a>)</li>
<li>Fix infinite <code>useDeferredValue</code> loop in popstate event
(<a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/acdlite/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/acdlite">@ acdlite</a> <a
href="https://redirect.github.com/facebook/react/pull/32821"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/32821/hovercard">#32821</a>)</li>
<li>Fix a bug when an initial value was passed to
<code>useDeferredValue</code> (<a class="user-mention notranslate"
data-hovercard-type="user" data-hovercard-url="/users/acdlite/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/acdlite">@ acdlite</a> <a
href="https://redirect.github.com/facebook/react/pull/34376"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/34376/hovercard">#34376</a>)</li>
<li>Fix a crash when submitting forms with Client Actions (<a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/sebmarkbage/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/sebmarkbage">@ sebmarkbage</a> <a
href="https://redirect.github.com/facebook/react/pull/33055"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/33055/hovercard">#33055</a>)</li>
<li>Hide/unhide the content of dehydrated suspense boundaries if they
resuspend (<a class="user-mention notranslate"
data-hovercard-type="user"
data-hovercard-url="/users/sebmarkbage/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/sebmarkbage">@ sebmarkbage</a> <a
href="https://redirect.github.com/facebook/react/pull/32900"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/32900/hovercard">#32900</a>)</li>
<li>Avoid stack overflow on wide trees during Hot Reload (<a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/sophiebits/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/sophiebits">@ sophiebits</a> <a
href="https://redirect.github.com/facebook/react/pull/34145"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/34145/hovercard">#34145</a>)</li>
<li>Improve Owner and Component stacks in various places (<a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/sebmarkbage/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/sebmarkbage">@ sebmarkbage</a>, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/eps1lon/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/eps1lon">@ eps1lon</a>: <a
href="https://redirect.github.com/facebook/react/pull/33629"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/33629/hovercard">#33629</a>, <a
href="https://redirect.github.com/facebook/react/pull/33724"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/33724/hovercard">#33724</a>, <a
href="https://redirect.github.com/facebook/react/pull/32735"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/32735/hovercard">#32735</a>, <a
href="https://redirect.github.com/facebook/react/pull/33723"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/33723/hovercard">#33723</a>)</li>
<li>Add <code>cacheSignal</code> (<a class="user-mention notranslate"
data-hovercard-type="user"
data-hovercard-url="/users/sebmarkbage/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/sebmarkbage">@ sebmarkbage</a> <a
href="https://redirect.github.com/facebook/react/pull/33557"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/33557/hovercard">#33557</a>)</li>
</ul>
<h3>React DOM</h3>
<ul>
<li>Block on Suspensey Fonts during reveal of server-side-rendered
content (<a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/sebmarkbage/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/sebmarkbage">@ sebmarkbage</a> <a
href="https://redirect.github.com/facebook/react/pull/33342"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/33342/hovercard">#33342</a>)</li>
<li>Use underscore instead of <code>:</code> for IDs generated by
<code>useId</code> (<a class="user-mention notranslate"
data-hovercard-type="user"
data-hovercard-url="/users/sebmarkbage/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/sebmarkbage">@ sebmarkbage</a>, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/eps1lon/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/eps1lon">@ eps1lon</a>: <a
href="https://redirect.github.com/facebook/react/pull/32001"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/32001/hovercard">#32001</a>, <a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="3084407166" data-permission-text="Title is private"
data-url="https://github.com/facebook/react/issues/33342"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/33342/hovercard"
href="https://redirect.github.com/facebook/react/pull/33342">#33342</a><a
href="https://redirect.github.com/facebook/react/pull/33099"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/33099/hovercard">#33099</a>, <a
href="https://redirect.github.com/facebook/react/pull/33422"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/33422/hovercard">#33422</a>)</li>
<li>Stop warning when ARIA 1.3 attributes are used (<a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/Abdul-Omira/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/Abdul-Omira">@ Abdul-Omira</a> <a
href="https://redirect.github.com/facebook/react/pull/34264"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/34264/hovercard">#34264</a>)</li>
<li>Allow <code>nonce</code> to be used on hoistable styles (<a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/Andarist/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/Andarist">@ Andarist</a> <a
href="https://redirect.github.com/facebook/react/pull/32461"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/32461/hovercard">#32461</a>)</li>
<li>Warn for using a React owned node as a Container if it also has text
content (<a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/sebmarkbage/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/sebmarkbage">@ sebmarkbage</a> <a
href="https://redirect.github.com/facebook/react/pull/32774"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/32774/hovercard">#32774</a>)</li>
<li>s/HTML/text for for error messages if text hydration mismatches (<a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/rickhanlonii/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/rickhanlonii">@ rickhanlonii</a> <a
href="https://redirect.github.com/facebook/react/pull/32763"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/32763/hovercard">#32763</a>)</li>
<li>Fix a bug with <code>React.use</code> inside
<code>React.lazy</code>-ed Component (<a class="user-mention
notranslate" data-hovercard-type="user"
data-hovercard-url="/users/hi-ogawa/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/hi-ogawa">@ hi-ogawa</a> <a
href="https://redirect.github.com/facebook/react/pull/33941"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/33941/hovercard">#33941</a>)</li>
<li>Enable the <code>progressiveChunkSize</code> option for
server-side-rendering APIs (<a class="user-mention notranslate"
data-hovercard-type="user"
data-hovercard-url="/users/sebmarkbage/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/sebmarkbage">@ sebmarkbage</a> <a
href="https://redirect.github.com/facebook/react/pull/33027"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/33027/hovercard">#33027</a>)</li>
<li>Fix a bug with deeply nested Suspense inside Suspense fallback when
server-side-rendering (<a class="user-mention notranslate"
data-hovercard-type="user" data-hovercard-url="/users/gnoff/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/gnoff">@ gnoff</a> <a
href="https://redirect.github.com/facebook/react/pull/33467"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/33467/hovercard">#33467</a>)</li>
<li>Avoid hanging when suspending after aborting while rendering (<a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/gnoff/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/gnoff">@ gnoff</a> <a
href="https://redirect.github.com/facebook/react/pull/34192"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/34192/hovercard">#34192</a>)</li>
<li>Add Node Web Streams to server-side-rendering APIs for Node.js (<a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/sebmarkbage/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/sebmarkbage">@ sebmarkbage</a> <a
href="https://redirect.github.com/facebook/react/pull/33475"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/33475/hovercard">#33475</a>)</li>
</ul>
<h3>React Server Components</h3>
<ul>
<li>Preload <code>&lt;img&gt;</code> and <code>&lt;link&gt;</code> using
hints before they're rendered (<a class="user-mention notranslate"
data-hovercard-type="user"
data-hovercard-url="/users/sebmarkbage/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/sebmarkbage">@ sebmarkbage</a> <a
href="https://redirect.github.com/facebook/react/pull/34604"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/34604/hovercard">#34604</a>)</li>
<li>Log error if production elements are rendered during development (<a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/eps1lon/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/eps1lon">@ eps1lon</a> <a
href="https://redirect.github.com/facebook/react/pull/34189"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/34189/hovercard">#34189</a>)</li>
<li>Fix a bug when returning a Temporary reference (e.g. a Client
Reference) from Server Functions (<a class="user-mention notranslate"
data-hovercard-type="user"
data-hovercard-url="/users/sebmarkbage/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/sebmarkbage">@ sebmarkbage</a> <a
href="https://redirect.github.com/facebook/react/pull/34084"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/34084/hovercard">#34084</a>, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/denk0403/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/denk0403">@ denk0403</a> <a
href="https://redirect.github.com/facebook/react/pull/33761"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/33761/hovercard">#33761</a>)</li>
<li>Pass line/column to <code>filterStackFrame</code> (<a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/eps1lon/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/eps1lon">@ eps1lon</a> <a
href="https://redirect.github.com/facebook/react/pull/33707"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/33707/hovercard">#33707</a>)</li>
<li>Support Async Modules in Turbopack Server References (<a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/lubieowoce/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/lubieowoce">@ lubieowoce</a> <a
href="https://redirect.github.com/facebook/react/pull/34531"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/34531/hovercard">#34531</a>)</li>
<li>Add support for .mjs file extension in Webpack (<a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/jennyscript/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/jennyscript">@ jennyscript</a> <a
href="https://redirect.github.com/facebook/react/pull/33028"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/33028/hovercard">#33028</a>)</li>
<li>Fix a wrong missing key warning (<a class="user-mention notranslate"
data-hovercard-type="user"
data-hovercard-url="/users/unstubbable/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/unstubbable">@ unstubbable</a> <a
href="https://redirect.github.com/facebook/react/pull/34350"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/34350/hovercard">#34350</a>)</li>
<li>Make console log resolve in predictable order (<a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/sebmarkbage/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/sebmarkbage">@ sebmarkbage</a> <a
href="https://redirect.github.com/facebook/react/pull/33665"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/33665/hovercard">#33665</a>)</li>
</ul>
<h3>React Reconciler</h3>
<ul>
<li><a
href="https://redirect.github.com/facebook/react/blob/v19.2.0/packages/react-reconciler/src/ReactFiberReconciler.js#L255-L261">createContainer</a>
and <a
href="https://redirect.github.com/facebook/react/blob/v19.2.0/packages/react-reconciler/src/ReactFiberReconciler.js#L305-L312">createHydrationContainer</a>
had their parameter order adjusted after <code>on*</code> handlers to
account for upcoming experimental APIs</li>
</ul>
<h2>eslint-plugin-react-hooks@6.1.0</h2>
<p><strong>Note:</strong> Version 6.0.0 was mistakenly released and
immediately deprecated and untagged on npm. This is the first official
6.x major release and includes breaking changes.</p>
<ul>
<li><strong>Breaking:</strong> Require Node.js 18 or newer. (<a
href="https://redirect.github.com/michaelfaith">@ michaelfaith</a> in <a
href="https://redirect.github.com/facebook/react/pull/32458"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/32458/hovercard">#32458</a>)</li>
<li><strong>Breaking:</strong> Flat config is now the default
<code>recommended</code> preset. Legacy config moved to
<code>recommended-legacy</code>. (<a
href="https://redirect.github.com/michaelfaith">@ michaelfaith</a> in <a
href="https://redirect.github.com/facebook/react/pull/32457"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/32457/hovercard">#32457</a>)</li>
<li><strong>New Violations:</strong> Disallow calling <code>use</code>
within try/catch blocks. (<a href="https://redirect.github.com/poteto">@
poteto</a> in <a
href="https://redirect.github.com/facebook/react/pull/34040"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/34040/hovercard">#34040</a>)</li>
<li><strong>New Violations:</strong> Disallow calling
<code>useEffectEvent</code> functions in arbitrary closures. (<a
href="https://redirect.github.com/jbrown215">@ jbrown215</a> in <a
href="https://redirect.github.com/facebook/react/pull/33544"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/33544/hovercard">#33544</a>)</li>
<li>Handle <code>React.useEffect</code> in addition to
<code>useEffect</code> in rules-of-hooks. (<a
href="https://redirect.github.com/Ayc0">@ Ayc0</a> in <a
href="https://redirect.github.com/facebook/react/pull/34076"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/34076/hovercard">#34076</a>)</li>
<li>Added <code>react-hooks</code> settings config option that to accept
<code>additionalEffectHooks</code> that are used across exhaustive-deps
and rules-of-hooks rules. (<a
href="https://redirect.github.com/jbrown215">@ jbrown215</a>) in <a
href="https://redirect.github.com/facebook/react/pull/34497"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/34497/hovercard">#34497</a></li>
</ul>
      </li>
      <li>
        <b>19.2.0-canary-fa3feba6-20250623</b> - 2025-06-23
      </li>
      <li>
        <b>19.2.0-canary-f9ae0a4c-20250527</b> - 2025-05-27
      </li>
      <li>
        <b>19.2.0-canary-f7396427-20250501</b> - 2025-05-02
      </li>
      <li>
        <b>19.2.0-canary-f508edc8-20250818</b> - 2025-08-18
      </li>
      <li>
        <b>19.2.0-canary-f3a80361-20250911</b> - 2025-09-11
      </li>
      <li>
        <b>19.2.0-canary-f1e70b5e-20250811</b> - 2025-08-11
      </li>
      <li>
        <b>19.2.0-canary-f1222f76-20250812</b> - 2025-08-13
      </li>
      <li>
        <b>19.2.0-canary-ef8b6fa2-20250702</b> - 2025-07-03
      </li>
      <li>
        <b>19.2.0-canary-ef889445-20250930</b> - 2025-09-30
      </li>
      <li>
        <b>19.2.0-canary-edac0dde-20250723</b> - 2025-07-23
      </li>
      <li>
        <b>19.2.0-canary-eaee5308-20250728</b> - 2025-07-28
      </li>
      <li>
        <b>19.2.0-canary-ea05b750-20250408</b> - 2025-04-09
      </li>
      <li>
        <b>19.2.0-canary-e9db3cc2-20250501</b> - 2025-05-01
      </li>
      <li>
        <b>19.2.0-canary-e9638c33-20250721</b> - 2025-07-21
      </li>
      <li>
        <b>19.2.0-canary-e6dc25da-20250709</b> - 2025-07-09
      </li>
      <li>
        <b>19.2.0-canary-e5dd82a7-20250401</b> - 2025-04-01
      </li>
      <li>
        <b>19.2.0-canary-e2332183-20250924</b> - 2025-09-24
      </li>
      <li>
        <b>19.2.0-canary-dffacc7b-20250717</b> - 2025-07-17
      </li>
      <li>
        <b>19.2.0-canary-df38ac9a-20250926</b> - 2025-09-26
      </li>
      <li>
        <b>19.2.0-canary-de5a1b20-20250905</b> - 2025-09-05
      </li>
      <li>
        <b>19.2.0-canary-d92056ef-20250627</b> - 2025-06-27
      </li>
      <li>
        <b>19.2.0-canary-d85f86cf-20250514</b> - 2025-05-14
      </li>
      <li>
        <b>19.2.0-canary-d85ec5f5-20250716</b> - 2025-07-16
      </li>
      <li>
        <b>19.2.0-canary-d415fd3e-20250919</b> - 2025-09-19
      </li>
      <li>
        <b>19.2.0-canary-d15d7fd7-20250929</b> - 2025-09-29
      </li>
      <li>
        <b>19.2.0-canary-cee7939b-20250625</b> - 2025-06-25
      </li>
      <li>
        <b>19.2.0-canary-c498bfce-20250426</b> - 2025-04-28
      </li>
      <li>
        <b>19.2.0-canary-c4676e72-20250520</b> - 2025-05-20
      </li>
      <li>
        <b>19.2.0-canary-c44e4a25-20250409</b> - 2025-04-10
      </li>
      <li>
        <b>19.2.0-canary-c260b38d-20250731</b> - 2025-07-31
      </li>
      <li>
        <b>19.2.0-canary-c129c242-20250505</b> - 2025-05-05
      </li>
      <li>
        <b>19.2.0-canary-c0464aed-20250523</b> - 2025-05-26
      </li>
      <li>
        <b>19.2.0-canary-befc1246-20250708</b> - 2025-07-08
      </li>
      <li>
        <b>19.2.0-canary-be11cb5c-20250804</b> - 2025-08-04
      </li>
      <li>
        <b>19.2.0-canary-bdb4a96f-20250801</b> - 2025-08-01
      </li>
      <li>
        <b>19.2.0-canary-bc6184dd-20250417</b> - 2025-04-18
      </li>
      <li>
        <b>19.2.0-canary-bbc13fa1-20250624</b> - 2025-06-24
      </li>
      <li>
        <b>19.2.0-canary-bb6f0c8d-20250901</b> - 2025-09-01
      </li>
      <li>
        <b>19.2.0-canary-b9cfa0d3-20250505</b> - 2025-05-05
      </li>
      <li>
        <b>19.2.0-canary-b9a04536-20250904</b> - 2025-09-04
      </li>
      <li>
        <b>19.2.0-canary-b94603b9-20250513</b> - 2025-05-13
      </li>
      <li>
        <b>19.2.0-canary-b7e2de63-20250611</b> - 2025-06-11
      </li>
      <li>
        <b>19.2.0-canary-b6c0aa88-20250609</b> - 2025-06-09
      </li>
      <li>
        <b>19.2.0-canary-b4477d38-20250605</b> - 2025-06-05
      </li>
      <li>
        <b>19.2.0-canary-b1b0955f-20250901</b> - 2025-09-01
      </li>
      <li>
        <b>19.2.0-canary-b10cb4c0-20250403</b> - 2025-04-03
      </li>
      <li>
        <b>19.2.0-canary-b0c1dc01-20250925</b> - 2025-09-25
      </li>
      <li>
        <b>19.2.0-canary-b07717d8-20250528</b> - 2025-05-28
      </li>
      <li>
        <b>19.2.0-canary-b04254fd-20250415</b> - 2025-04-16
      </li>
      <li>
        <b>19.2.0-canary-ac7820a9-20250811</b> - 2025-08-11
      </li>
      <li>
        <b>19.2.0-canary-ab859e31-20250606</b> - 2025-06-06
      </li>
      <li>
        <b>19.2.0-canary-aad7c664-20250829</b> - 2025-08-29
      </li>
      <li>
        <b>19.2.0-canary-a96a0f39-20250815</b> - 2025-08-15
      </li>
      <li>
        <b>19.2.0-canary-a7a11657-20250708</b> - 2025-07-08
      </li>
      <li>
        <b>19.2.0-canary-a00ca6f6-20250611</b> - 2025-06-11
      </li>
      <li>
        <b>19.2.0-canary-9be531cd-20250729</b> - 2025-07-29
      </li>
      <li>
        <b>19.2.0-canary-99efc627-20250523</b> - 2025-05-23
      </li>
      <li>
        <b>19.2.0-canary-97cdd5d3-20250710</b> - 2025-07-11
      </li>
      <li>
        <b>19.2.0-canary-9784cb37-20250730</b> - 2025-07-30
      </li>
      <li>
        <b>19.2.0-canary-96c61b7f-20250709</b> - 2025-07-10
      </li>
      <li>
        <b>19.2.0-canary-93d7aa69-20250912</b> - 2025-09-12
      </li>
      <li>
        <b>19.2.0-canary-914319ae-20250423</b> - 2025-04-23
      </li>
      <li>
        <b>19.2.0-canary-8e60cb7e-20250902</b> - 2025-09-02
      </li>
      <li>
        <b>19.2.0-canary-8d7b5e49-20250827</b> - 2025-08-28
      </li>
      <li>
        <b>19.2.0-canary-8ce15b0f-20250522</b> - 2025-05-22
      </li>
      <li>
        <b>19.2.0-canary-8bb7241f-20250926</b> - 2025-09-26
      </li>
      <li>
        <b>19.2.0-canary-8a8e9a7e-20250912</b> - 2025-09-12
      </li>
      <li>
        <b>19.2.0-canary-89a803fc-20250828</b> - 2025-08-28
      </li>
      <li>
        <b>19.2.0-canary-886b3d36-20250910</b> - 2025-09-10
      </li>
      <li>
        <b>19.2.0-canary-873f7112-20250821</b> - 2025-08-21
      </li>
      <li>
        <b>19.2.0-canary-86181134-20251001</b> - 2025-10-01
      </li>
      <li>
        <b>19.2.0-canary-84af9085-20250917</b> - 2025-09-18
      </li>
      <li>
        <b>19.2.0-canary-83c88ad4-20250923</b> - 2025-09-23
      </li>
      <li>
        <b>19.2.0-canary-7deda941-20250804</b> - 2025-08-05
      </li>
      <li>
        <b>19.2.0-canary-7a2c7045-20250506</b> - 2025-05-06
      </li>
      <li>
        <b>19.2.0-canary-79d9aed7-20250620</b> - 2025-06-20
      </li>
      <li>
        <b>19.2.0-canary-7513996f-20250722</b> - 2025-07-22
      </li>
      <li>
        <b>19.2.0-canary-73aa744b-20250702</b> - 2025-07-02
      </li>
      <li>
        <b>19.2.0-canary-7216c0f0-20250630</b> - 2025-07-01
      </li>
      <li>
        <b>19.2.0-canary-72135096-20250421</b> - 2025-04-22
      </li>
      <li>
        <b>19.2.0-canary-6eda5347-20250918</b> - 2025-09-19
      </li>
      <li>
        <b>19.2.0-canary-6de32a5a-20250822</b> - 2025-08-22
      </li>
      <li>
        <b>19.2.0-canary-6b70072c-20250909</b> - 2025-09-09
      </li>
      <li>
        <b>19.2.0-canary-6a7650c7-20250405</b> - 2025-04-05
      </li>
      <li>
        <b>19.2.0-canary-67a44bcd-20250915</b> - 2025-09-15
      </li>
      <li>
        <b>19.2.0-canary-66f09bd0-20250806</b> - 2025-08-06
      </li>
      <li>
        <b>19.2.0-canary-65c4decb-20250630</b> - 2025-06-30
      </li>
      <li>
        <b>19.2.0-canary-63779030-20250328</b> - 2025-03-31
      </li>
      <li>
        <b>19.2.0-canary-60b5271a-20250709</b> - 2025-07-09
      </li>
      <li>
        <b>19.2.0-canary-5e0c951b-20250916</b> - 2025-09-16
      </li>
      <li>
        <b>19.2.0-canary-5dc00d6b-20250428</b> - 2025-04-28
      </li>
      <li>
        <b>19.2.0-canary-5d87cd22-20250704</b> - 2025-07-04
      </li>
      <li>
        <b>19.2.0-canary-56408a5b-20250610</b> - 2025-06-10
      </li>
      <li>
        <b>19.2.0-canary-548235db-20251001</b> - 2025-10-01
      </li>
      <li>
        <b>19.2.0-canary-540cd652-20250403</b> - 2025-04-04
      </li>
      <li>
        <b>19.2.0-canary-534bed5f-20250813</b> - 2025-08-13
      </li>
      <li>
        <b>19.2.0-canary-526dd340-20250602</b> - 2025-06-02
      </li>
      <li>
        <b>19.2.0-canary-4db4b21c-20250626</b> - 2025-06-26
      </li>
      <li>
        <b>19.2.0-canary-4a45ba92-20250515</b> - 2025-05-15
      </li>
      <li>
        <b>19.2.0-canary-4a36d3ea-20250416</b> - 2025-04-17
      </li>
      <li>
        <b>19.2.0-canary-462d08f9-20250517</b> - 2025-05-19
      </li>
      <li>
        <b>19.2.0-canary-4448b187-20250515</b> - 2025-05-16
      </li>
      <li>
        <b>19.2.0-canary-4123f6b7-20250826</b> - 2025-08-26
      </li>
      <li>
        <b>19.2.0-canary-408d055a-20250430</b> - 2025-04-30
      </li>
      <li>
        <b>19.2.0-canary-3fbfb9ba-20250409</b> - 2025-04-09
      </li>
      <li>
        <b>19.2.0-canary-3fb190f7-20250908</b> - 2025-09-08
      </li>
      <li>
        <b>19.2.0-canary-3d14fcf0-20250724</b> - 2025-07-24
      </li>
      <li>
        <b>19.2.0-canary-39cad7af-20250411</b> - 2025-04-14
      </li>
      <li>
        <b>19.2.0-canary-3958d5d8-20250807</b> - 2025-08-07
      </li>
      <li>
        <b>19.2.0-canary-38ef6550-20250508</b> - 2025-05-08
      </li>
      <li>
        <b>19.2.0-canary-3820740a-20250509</b> - 2025-05-12
      </li>
      <li>
        <b>19.2.0-canary-379a083b-20250813</b> - 2025-08-14
      </li>
      <li>
        <b>19.2.0-canary-37054867-20250604</b> - 2025-06-04
      </li>
      <li>
        <b>19.2.0-canary-33a1095d-20250827</b> - 2025-08-27
      </li>
      <li>
        <b>19.2.0-canary-33661467-20250407</b> - 2025-04-07
      </li>
      <li>
        <b>19.2.0-canary-3302d1f7-20250903</b> - 2025-09-03
      </li>
      <li>
        <b>19.2.0-canary-2f0e7e57-20250715</b> - 2025-07-15
      </li>
      <li>
        <b>19.2.0-canary-280ff6fe-20250606</b> - 2025-06-06
      </li>
      <li>
        <b>19.2.0-canary-2805f0ed-20250903</b> - 2025-09-03
      </li>
      <li>
        <b>19.2.0-canary-23884812-20250520</b> - 2025-05-21
      </li>
      <li>
        <b>19.2.0-canary-223f81d8-20250707</b> - 2025-07-07
      </li>
      <li>
        <b>19.2.0-canary-21fdf308-20250508</b> - 2025-05-09
      </li>
      <li>
        <b>19.2.0-canary-1eca9a27-20250922</b> - 2025-09-22
      </li>
      <li>
        <b>19.2.0-canary-1dc3bdea-20250812</b> - 2025-08-12
      </li>
      <li>
        <b>19.2.0-canary-1d6c8168-20250411</b> - 2025-04-11
      </li>
      <li>
        <b>19.2.0-canary-1bd1f01f-20251001</b> - 2025-10-01
      </li>
      <li>
        <b>19.2.0-canary-1ae0a845-20250603</b> - 2025-06-03
      </li>
      <li>
        <b>19.2.0-canary-19baee81-20250725</b> - 2025-07-25
      </li>
      <li>
        <b>19.2.0-canary-197d6a04-20250424</b> - 2025-04-24
      </li>
      <li>
        <b>19.2.0-canary-143d3e1b-20250425</b> - 2025-04-25
      </li>
      <li>
        <b>19.2.0-canary-14094f80-20250529</b> - 2025-05-29
      </li>
      <li>
        <b>19.2.0-canary-12bc60f5-20250613</b> - 2025-06-13
      </li>
      <li>
        <b>19.2.0-canary-128abcfa-20250917</b> - 2025-09-17
      </li>
      <li>
        <b>19.2.0-canary-0ff1d13b-20250507</b> - 2025-05-07
      </li>
      <li>
        <b>19.2.0-canary-0bdb9206-20250818</b> - 2025-08-19
      </li>
      <li>
        <b>19.2.0-canary-06e89951-20250620</b> - 2025-06-20
      </li>
      <li>
        <b>19.2.0-canary-040f8286-20250402</b> - 2025-04-02
      </li>
      <li>
        <b>19.2.0-canary-03fda05d-20250820</b> - 2025-08-20
      </li>
      <li>
        <b>19.2.0-canary-0038c501-20250429</b> - 2025-04-29
      </li>
      <li>
        <b>19.1.4</b> - 2025-12-11
      </li>
      <li>
<b>19.1.3</b> - <a
href="https://redirect.github.com/facebook/react/releases/tag/v19.1.3">2025-12-11</a></br><h2>React
Server Components</h2>
<ul>
<li>Move <code>react-server-dom-webpack/*.unbundled</code> to private
<code>react-server-dom-unbundled</code> (<a class="user-mention
notranslate" data-hovercard-type="user"
data-hovercard-url="/users/eps1lon/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/eps1lon">@ eps1lon</a> <a
href="https://redirect.github.com/facebook/react/pull/35290"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/35290/hovercard">#35290</a>)</li>
<li>Patch Promise cycles and toString on Server Functions (<a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/sebmarkbage/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/sebmarkbage">@ sebmarkbage</a>, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/unstubbable/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/unstubbable">@ unstubbable</a> <a
href="https://redirect.github.com/facebook/react/pull/35289"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/35289/hovercard">#35289</a>, <a
href="https://redirect.github.com/facebook/react/pull/35345"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/35345/hovercard">#35345</a>)</li>
</ul>
      </li>
      <li>
<b>19.1.2</b> - <a
href="https://redirect.github.com/facebook/react/releases/tag/v19.1.2">2025-12-03</a></br><h2>React
Server Components</h2>
<ul>
<li>Bring React Server Component fixes to Server Actions (<a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/sebmarkbage/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/sebmarkbage">@ sebmarkbage</a> <a
href="https://redirect.github.com/facebook/react/pull/35277"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/35277/hovercard">#35277</a>)</li>
</ul>
      </li>
      <li>
<b>19.1.1</b> - <a
href="https://redirect.github.com/facebook/react/releases/tag/v19.1.1">2025-07-28</a></br><h3>React</h3>
<ul>
<li>Fixed Owner Stacks to work with ES2015 function.name semantics (<a
href="https://redirect.github.com/facebook/react/pull/33680"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/33680/hovercard">#33680</a> by
<a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/hoxyq/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/hoxyq">@ hoxyq</a>)</li>
</ul>
      </li>
      <li>
        <b>19.1.0</b> - 2025-03-28
      </li>
      <li>
        <b>19.1.0-canary-ff628334-20250205</b> - 2025-02-06
      </li>
      <li>
        <b>19.1.0-canary-fcb4e0f1-20250219</b> - 2025-02-20
      </li>
      <li>
        <b>19.1.0-canary-fc8a898d-20241226</b> - 2024-12-27
      </li>
      <li>
        <b>19.1.0-canary-fbcda19a-20250317</b> - 2025-03-17
      </li>
      <li>
        <b>19.1.0-canary-f9d78089-20250306</b> - 2025-03-07
      </li>
      <li>
        <b>19.1.0-canary-f83903bf-20250212</b> - 2025-02-12
      </li>
      <li>
        <b>19.1.0-canary-f457d0b4-20250313</b> - 2025-03-13
      </li>
      <li>
        <b>19.1.0-canary-f0edf41e-20250115</b> - 2025-01-14
      </li>
      <li>
        <b>19.1.0-canary-ef979d47-20241218</b> - 2024-12-18
      </li>
      <li>
        <b>19.1.0-canary-ef4bc8b4-20250328</b> - 2025-03-28
      </li>
      <li>
        <b>19.1.0-canary-ebc22ef7-20250225</b> - 2025-02-26
      </li>
      <li>
        <b>19.1.0-canary-e670e72f-20250214</b> - 2025-02-14
      </li>
      <li>
        <b>19.1.0-canary-e1e74071-20250321</b> - 2025-03-21
      </li>
      <li>
        <b>19.1.0-canary-e06c72fc-20241215</b> - 2024-12-16
      </li>
      <li>
        <b>19.1.0-canary-e03ac20f-20250305</b> - 2025-03-05
      </li>
      <li>
        <b>19.1.0-canary-de82912e-20241220</b> - 2024-12-20
      </li>
      <li>
        <b>19.1.0-canary-de1eaa26-20250124</b> - 2025-01-24
      </li>
      <li>
        <b>19.1.0-canary-db7dfe05-20250319</b> - 2025-03-19
      </li>
      <li>
        <b>19.1.0-canary-d85cf3e5-20250205</b> - 2025-02-05
      </li>
      <li>
        <b>19.1.0-canary-d55cc79b-20250228</b> - 2025-02-28
      </li>
      <li>
        <b>19.1.0-canary-d46b04a2-20250117</b> - 2025-01-17
      </li>
      <li>
        <b>19.1.0-canary-d4287258-20241217</b> - 2024-12-17
      </li>
      <li>
        <b>19.1.0-canary-d331ba04-20250307</b> - 2025-03-10
      </li>
      <li>
        <b>19.1.0-canary-cd90a4d8-20250210</b> - 2025-02-11
      </li>
      <li>
        <b>19.1.0-canary-cbbe8666-20250213</b> - 2025-02-13
      </li>
      <li>
        <b>19.1.0-canary-cabd8a0e-20250113</b> - 2025-01-13
      </li>
      <li>
        <b>19.1.0-canary-c69a5fc5-20250318</b> - 2025-03-18
      </li>
      <li>
        <b>19.1.0-canary-c492f975-20250128</b> - 2025-01-29
      </li>
      <li>
        <b>19.1.0-canary-c01b8058-20241229</b> - 2024-12-30
      </li>
      <li>
        <b>19.1.0-canary-bb9a24d9-20250130</b> - 2025-01-30
      </li>
      <li>
        <b>19.1.0-canary-b3a95caf-20250113</b> - 2025-01-14
      </li>
      <li>
        <b>19.1.0-canary-b158439a-20250115</b> - 2025-01-15
      </li>
      <li>
        <b>19.1.0-canary-ae9017ce-20250122</b> - 2025-01-23
      </li>
      <li>
        <b>19.1.0-canary-a84862db-20250218</b> - 2025-02-19
      </li>
      <li>
        <b>19.1.0-canary-a4f9bd58-20250319</b> - 2025-03-20
      </li>
      <li>
        <b>19.1.0-canary-a4b2d0d5-20250203</b> - 2025-02-03
      </li>
      <li>
        <b>19.1.0-canary-9ff42a87-20250130</b> - 2025-01-31
      </li>
      <li>
        <b>19.1.0-canary-9eabb373-20250124</b> - 2025-01-27
      </li>
      <li>
        <b>19.1.0-canary-9b62ee71-20250122</b> - 2025-01-22
      </li>
      <li>
        <b>19.1.0-canary-97d79495-20241223</b> - 2024-12-24
      </li>
      <li>
        <b>19.1.0-canary-9463d51e-20241219</b> - 2024-12-19
      </li>
      <li>
        <b>19.1.0-canary-93b58361-20250209</b> - 2025-02-10
      </li>
      <li>
        <b>19.1.0-canary-8a7b487e-20250218</b> - 2025-02-18
      </li>
      <li>
        <b>19.1.0-canary-8759c5c8-20250207</b> - 2025-02-07
      </li>
      <li>
        <b>19.1.0-canary-7eb8234f-20241218</b> - 2024-12-18
      </li>
      <li>
        <b>19.1.0-canary-7b402084-20250107</b> - 2025-01-07
      </li>
      <li>
        <b>19.1.0-canary-74ea0c73-20250109</b> - 2025-01-09
      </li>
      <li>
        <b>19.1.0-canary-740a4f7a-20250325</b> - 2025-03-25
      </li>
      <li>
        <b>19.1.0-canary-7130d0c6-20241212</b> - 2024-12-12
      </li>
      <li>
        <b>19.1.0-canary-6aa8254b-20250312</b> - 2025-03-12
      </li>
      <li>
        <b>19.1.0-canary-694d3e1a-20241231</b> - 2025-01-01
      </li>
      <li>
        <b>19.1.0-canary-6907aa2a-20241220</b> - 2024-12-23
      </li>
      <li>
        <b>19.1.0-canary-662957cc-20250221</b> - 2025-02-21
      </li>
      <li>
        <b>19.1.0-canary-62208bee-20250102</b> - 2025-01-02
      </li>
      <li>
        <b>19.1.0-canary-5b51a2b9-20250116</b> - 2025-01-16
      </li>
      <li>
        <b>19.1.0-canary-540efebc-20250112</b> - 2025-01-12
      </li>
      <li>
        <b>19.1.0-canary-5398b711-20250314</b> - 2025-03-14
      </li>
      <li>
        <b>19.1.0-canary-518d06d2-20241219</b> - 2024-12-19
      </li>
      <li>
        <b>19.1.0-canary-4dff0e62-20241213</b> - 2024-12-13
      </li>
      <li>
        <b>19.1.0-canary-4632e36a-20250216</b> - 2025-02-17
      </li>
      <li>
        <b>19.1.0-canary-443b7ff2-20250303</b> - 2025-03-04
      </li>
      <li>
        <b>19.1.0-canary-4280563b-20250326</b> - 2025-03-27
      </li>
      <li>
        <b>19.1.0-canary-42687267-20250108</b> - 2025-01-08
      </li>
      <li>
        <b>19.1.0-canary-3ce77d55-20250106</b> - 2025-01-06
      </li>
      <li>
        <b>19.1.0-canary-3b009b4c-20250102</b> - 2025-01-03
      </li>
      <li>
        <b>19.1.0-canary-37906d4d-20250127</b> - 2025-01-28
      </li>
      <li>
        <b>19.1.0-canary-32b0cad8-20250213</b> - 2025-02-13
      </li>
      <li>
        <b>19.1.0-canary-313332d1-20250326</b> - 2025-03-26
      </li>
      <li>
        <b>19.1.0-canary-2980f277-20250301</b> - 2025-03-03
      </li>
      <li>
        <b>19.1.0-canary-25677265-20250224</b> - 2025-02-24
      </li>
      <li>
        <b>19.1.0-canary-22e39ea7-20250225</b> - 2025-02-25
      </li>
      <li>
        <b>19.1.0-canary-18eaf51b-20250118</b> - 2025-01-20
      </li>
      <li>
        <b>19.1.0-canary-130095f7-20241212</b> - 2024-12-12
      </li>
      <li>
        <b>19.1.0-canary-0ca3deeb-20250311</b> - 2025-03-11
      </li>
      <li>
        <b>19.1.0-canary-0a82580b-20250203</b> - 2025-02-04
      </li>
      <li>
        <b>19.1.0-canary-056073de-20250109</b> - 2025-01-10
      </li>
      <li>
        <b>19.1.0-canary-029e8bd6-20250306</b> - 2025-03-06
      </li>
      <li>
<b>19.0.3</b> - <a
href="https://redirect.github.com/facebook/react/releases/tag/v19.0.3">2025-12-11</a></br><h2>React
Server Components</h2>
<ul>
<li>Add extra loop protection to React Server Functions (<a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/sebmarkbage/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/sebmarkbage">@ sebmarkbage</a> <a
href="https://redirect.github.com/facebook/react/pull/35351"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/35351/hovercard">#35351</a>)</li>
</ul>
      </li>
      <li>
<b>19.0.2</b> - <a
href="https://redirect.github.com/facebook/react/releases/tag/v19.0.2">2025-12-11</a></br><h2>React
Server Components</h2>
<ul>
<li>Patch Promise cycles and toString on Server Functions (<a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/sebmarkbage/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/sebmarkbage">@ sebmarkbage</a>, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/unstubbable/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/unstubbable">@ unstubbable</a> <a
href="https://redirect.github.com/facebook/react/pull/35289"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/35289/hovercard">#35289</a>, <a
href="https://redirect.github.com/facebook/react/pull/35345"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/35345/hovercard">#35345</a>)</li>
</ul>
      </li>
      <li>
<b>19.0.1</b> - <a
href="https://redirect.github.com/facebook/react/releases/tag/v19.0.1">2025-12-03</a></br><h2>React
Server Components</h2>
<ul>
<li>Bring React Server Component fixes to Server Actions (<a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/sebmarkbage/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://redirect.github.com/sebmarkbage">@ sebmarkbage</a> <a
href="https://redirect.github.com/facebook/react/pull/35277"
data-hovercard-type="pull_request"
data-hovercard-url="/facebook/react/pull/35277/hovercard">#35277</a>)</li>
</ul>
      </li>
      <li>
        <b>19.0.0</b> - 2024-12-05
      </li>
      <li>
        <b>19.0.0-rc-fb9a90fa48-20240614</b> - 2024-06-14
      </li>
      <li>
        <b>19.0.0-rc-fa6eab58-20240815</b> - 2024-08-16
      </li>
      <li>
        <b>19.0.0-rc-f9ebd85a-20240925</b> - 2024-09-25
      </li>
      <li>
        <b>19.0.0-rc-f994737d14-20240522</b> - 2024-05-22
      </li>
      <li>
        <b>19.0.0-rc-f90a6bcc-20240827</b> - 2024-08-27
      </li>
      <li>
        <b>19.0.0-rc-f6cce072-20240723</b> - 2024-07-23
      </li>
      <li>
        <b>19.0.0-rc-f65ac7bd-20240826</b> - 2024-08-27
      </li>
      <li>
        <b>19.0.0-rc-f3e09d6328-20240612</b> - 2024-06-12
      </li>
      <li>
        <b>19.0.0-rc-f38c22b244-20240704</b> - 2024-07-05
      </li>
      <li>
        <b>19.0.0-rc-f2df5694-20240916</b> - 2024-09-16
      </li>
      <li>
        <b>19.0.0-rc-ee1a403a-20240916</b> - 2024-09-16
      </li>
      <li>
        <b>19.0.0-rc-ed966dac-20241007</b> - 2024-10-08
      </li>
      <li>
        <b>19.0.0-rc-ed15d500-20241110</b> - 2024-11-11
      </li>
      <li>
        <b>19.0.0-rc-eb3ad065-20240822</b> - 2024-08-22
      </li>
      <li>
        <b>19.0.0-rc-eb259b5d3b-20240605</b> - 2024-06-05
      </li>
      <li>
        <b>19.0.0-rc-e948a5ac-20240807</b> - 2024-08-07
      </li>
      <li>
        <b>19.0.0-rc-e740d4b1-20240919</b> - 2024-09-19
      </li>
      <li>
        <b>19.0.0-rc-e684ca66ab-20240619</b> - 2024-06-19
      </li>
      <li>
        <b>19.0.0-rc-e56f4ae3-20240830</b> - 2024-08-30
      </li>
      <li>
        <b>19.0.0-rc-e4953922-20240919</b> - 2024-09-20
      </li>
      <li>
        <b>19.0.0-rc-e210d081-20240909</b> - 2024-09-09
      </li>
      <li>
        <b>19.0.0-rc-e1ef8c95-20241115</b> - 2024-11-15
      </li>
      <li>
        <b>19.0.0-rc-e02baf6c92-20240627</b> - 2024-06-27
      </li>
      <li>
        <b>19.0.0-rc-dfd30974ab-20240613</b> - 2024-06-13
      </li>
      <li>
        <b>19.0.0-rc-df783f9ea1-20240708</b> - 2024-07-08
      </li>
      <li>
        <b>19.0.0-rc-df5f2736-20240712</b> - 2024-07-12
      </li>
      <li>
        <b>19.0.0-rc-de68d2f4-20241204</b> - 2024-12-04
      </li>
      <li>
        <b>19.0.0-rc-d8c90fa4-20241001</b> - 2024-10-01
      </li>
      <li>
        <b>19.0.0-rc-d6cb4e77-20240911</b> - 2024-09-11
      </li>
      <li>
        <b>19.0.0-rc-d5bba18b-20241009</b> - 2024-10-09
      </li>
      <li>
        <b>19.0.0-rc-d49123f7-20241019</b> - 2024-10-20
      </li>
      <li>
        <b>19.0.0-rc-d48603a5-20240813</b> - 2024-08-13
      </li>
      <li>
        <b>19.0.0-rc-d3ce0d3ea9-20240520</b> - 2024-05-20
      </li>
      <li>
        <b>19.0.0-rc-d1afcb43-20240903</b> - 2024-09-04
      </li>
      <li>
        <b>19.0.0-rc-d025ddd3-20240722</b> - 2024-07-22
      </li>
      <li>
        <b>19.0.0-rc-cd22717c-20241013</b> - 2024-10-13
      </li>
      <li>
        <b>19.0.0-rc-cc1ec60d0d-20240607</b> - 2024-06-07
      </li>
      <li>
        <b>19.0.0-rc-cae764ce-20241025</b> - 2024-10-25
      </li>
      <li>
        <b>19.0.0-rc-ca587425-20241211</b> - 2024-12-12
      </li>
      <li>
        <b>19.0.0-rc-c3cdbec0a7-20240708</b> - 2024-07-09
      </li>
      <li>
        <b>19.0.0-rc-c21bcd627b-20240624</b> - 2024-06-24
      </li>
      <li>
        <b>19.0.0-rc-c1e1358b-20241020</b> - 2024-10-20
      </li>
      <li>
        <b>19.0.0-rc-c11c9510-20241120</b> - 2024-11-21
      </li>
      <li>
        <b>19.0.0-rc-bf7e210c-20241017</b> - 2024-10-17
      </li>
      <li>
        <b>19.0.0-rc-bf3a29d097-20240603</b> - 2024-06-04
      </li>
      <li>
        <b>19.0.0-rc-b8ae38f8-20241018</b> - 2024-10-18
      </li>
      <li>
        <b>19.0.0-rc-b7e21579-20241031</b> - 2024-11-01
      </li>
      <li>
        <b>19.0.0-rc-b57d2823-20240822</b> - 2024-08-23
      </li>
      <li>
        <b>19.0.0-rc-b01722d5-20241114</b> - 2024-11-14
      </li>
      <li>
        <b>19.0.0-rc-ab7c1663-20240730</b> - 2024-07-30
      </li>
      <li>
        <b>19.0.0-rc-ab2135c7-20240724</b> - 2024-07-24
      </li>
      <li>
        <b>19.0.0-rc-a99d8e8d-20240916</b> - 2024-09-17
      </li>
      <li>
        <b>19.0.0-rc-a960b92c-20240819</b> - 2024-08-20
      </li>
      <li>
        <b>19.0.0-rc-a7d1240c-20240731</b> - 2024-07-31
      </li>
      <li>
        <b>19.0.0-rc-a532d91d01-20240610</b> - 2024-06-10
      </li>
      <li>
        <b>19.0.0-rc-a26e3f403e-20240611</b> - 2024-06-11
      </li>
      <li>
        <b>19.0.0-rc-a19a8ab4-20240829</b> - 2024-08-29
      </li>
      <li>
        <b>19.0.0-rc-a03254bc-20240905</b> - 2024-09-06
      </li>
      <li>
        <b>19.0.0-rc-9d4fba0788-20240530</b> - 2024-05-30
      </li>
      <li>
        <b>19.0.0-rc-9d2da591-20240808</b> - 2024-08-08
      </li>
      <li>
        <b>19.0.0-rc-9c6806964f-20240703</b> - 2024-07-03
      </li>
      <li>
        <b>19.0.0-rc-99da76f23a-20240606</b> - 2024-06-06
      </li>
      <li>
        <b>19.0.0-rc-9598c41a20-20240603</b> - 2024-06-03
      </li>
      <li>
        <b>19.0.0-rc-94e652d5-20240912</b> - 2024-09-12
      </li>
      <li>
        <b>19.0.0-rc-941e1b4a-20240729</b> - 2024-07-29
      </li>
      <li>
        <b>19.0.0-rc-935180c7e0-20240524</b> - 2024-05-24
      </li>
      <li>
        <b>19.0.0-rc-915b914b3a-20240515</b> - 2024-05-15
      </li>
      <li>
        <b>19.0.0-rc-91061073-20241121</b> - 2024-11-22
      </li>
      <li>
        <b>19.0.0-rc-8f3c0525f9-20240521</b> - 2024-05-21
      </li>
      <li>
        <b>19.0.0-rc-8b08e99e-20240713</b> - 2024-07-15
      </li>
      <li>
        <b>19.0.0-rc-8971381549-20240625</b> - 2024-06-25
      </li>
      <li>
        <b>19.0.0-rc-85acf2d195-20240711</b> - 2024-07-11
      </li>
      <li>
        <b>19.0.0-rc-83825814-20241015</b> - 2024-10-15
      </li>
      <li>
        <b>19.0.0-rc-827cbea417-20240606</b> - 2024-06-07
      </li>
      <li>
        <b>19.0.0-rc-8269d55d-20240802</b> - 2024-08-02
      </li>
      <li>
        <b>19.0.0-rc-81c5ff2e04-20240521</b> - 2024-05-21
      </li>
      <li>
        <b>19.0.0-rc-7c8e5e7a-20241101</b> - 2024-11-01
      </li>
      <li>
        <b>19.0.0-rc-7ac8e612-20241113</b> - 2024-11-13
      </li>
      <li>
        <b>19.0.0-rc-79ddf5b5-20241210</b> - 2024-12-11
      </li>
      <li>
        <b>19.0.0-rc-77f43893-20241010</b> - 2024-10-10
      </li>
      <li>
        <b>19.0.0-rc-77b637d6-20241016</b> - 2024-10-16
      </li>
      <li>
        <b>19.0.0-rc-778e1ed2-20240926</b> - 2024-09-25
      </li>
      <li>
        <b>19.0.0-rc-7771d3a7-20240827</b> - 2024-08-28
      </li>
      <li>
        <b>19.0.0-rc-7670501b-20241124</b> - 2024-11-25
      </li>
      <li>
        <b>19.0.0-rc-76002254-20240724</b> - 2024-07-25
      </li>
      <li>
        <b>19.0.0-rc-7283a213-20241206</b> - 2024-12-06
      </li>
      <li>
        <b>19.0.0-rc-70fb1363-20241010</b> - 2024-10-10
      </li>
      <li>
        <b>19.0.0-rc-6fb39ec9e9-20240621</b> - 2024-06-21
      </li>
      <li>
        <b>19.0.0-rc-6f23540c7d-20240528</b> - 2024-05-28
      </li>
      <li>
        <b>19.0.0-rc-6f0dc294-20241119</b> - 2024-11-19
      </li>
      <li>
        <b>19.0.0-rc-6ebfd5b0-20240818</b> - 2024-08-19
      </li>
      <li>
        <b>19.0.0-rc-6d3110b4d9-20240531</b> - 2024-05-31
      </li>
      <li>
        <b>19.0.0-rc-6cf85185-20241014</b> - 2024-10-14
      </li>
      <li>
        <b>19.0.0-rc-69d4b800-20241021</b> - 2024-10-21
      </li>
      <li>
        <b>19.0.0-rc-68dbd84b-20240812</b> - 2024-08-12
      </li>
      <li>
        <b>19.0.0-rc-67fee58b-20240926</b> - 2024-09-26
      </li>
      <li>
        <b>19.0.0-rc-66855b96-20241106</b> - 2024-11-06
      </li>
      <li>
        <b>19.0.0-rc-65e06cb7-20241218</b> - 2024-12-19
      </li>
      <li>
        <b>19.0.0-rc-65a56d0e-20241020</b> - 2024-10-20
      </li>
      <li>
        <b>19.0.0-rc-65903583-20240805</b> - 2024-08-05
      </li>
      <li>
        <b>19.0.0-rc-64f89510-20241119</b> - 2024-11-20
      </li>
      <li>
        <b>19.0.0-rc-6230622a1a-20240610</b> - 2024-06-10
      </li>
      <li>
        <b>19.0.0-rc-603e6108-20241029</b> - 2024-10-30
      </li>
      <li>
        <b>19.0.0-rc-5dcb0097-20240918</b> - 2024-09-18
      </li>
      <li>
        <b>19.0.0-rc-5d19e1c8-20240923</b> - 2024-09-23
      </li>
      <li>
        <b>19.0.0-rc-5c56b873-20241107</b> - 2024-11-07
      </li>
      <li>
        <b>19.0.0-rc-5b0ef217-20241202</b> - 2024-12-02
      </li>
      <li>
        <b>19.0.0-rc-58af67a8f8-20240628</b> - 2024-06-28
      </li>
      <li>
        <b>19.0.0-rc-57fbe3ba37-20240520</b> - 2024-05-20
      </li>
      <li>
        <b>19.0.0-rc-512b09b2-20240718</b> - 2024-07-18
      </li>
      <li>
        <b>19.0.0-rc-4f604941-20240830</b> - 2024-09-02
      </li>
      <li>
        <b>19.0.0-rc-4d577fd2-20241104</b> - 2024-11-04
      </li>
      <li>
        <b>19.0.0-rc-4c58fce7-20240904</b> - 2024-09-05
      </li>
      <li>
        <b>19.0.0-rc-4c2e457c7c-20240522</b> - 2024-05-23
      </li>
      <li>
        <b>19.0.0-rc-4beb1fd8-20241118</b> - 2024-11-18
      </li>
      <li>
        <b>19.0.0-rc-4b7d4530-20241218</b> - 2024-12-18
      </li>
      <li>
        <b>19.0.0-rc-49496d49-20240814</b> - 2024-08-14
      </li>
      <li>
        <b>19.0.0-rc-47352209-20240912</b> - 2024-09-12
      </li>
      <li>
        <b>19.0.0-rc-459fd418-20241001</b> - 2024-10-02
      </li>
      <li>
        <b>19.0.0-rc-45804af1-20241021</b> - 2024-10-22
      </li>
      <li>
        <b>19.0.0-rc-3f1436cca1-20240516</b> - 2024-05-17
      </li>
      <li>
        <b>19.0.0-rc-3edc000d-20240926</b> - 2024-09-27
      </li>
      <li>
        <b>19.0.0-rc-3dfd5d9e-20240910</b> - 2024-09-10
      </li>
      <li>
        <b>19.0.0-rc-3da26163a3-20240704</b> - 2024-07-04
      </li>
      <li>
        <b>19.0.0-rc-3ac551e855-20240522</b> - 2024-05-22
      </li>
      <li>
        <b>19.0.0-rc-38e3b23483-20240529</b> - 2024-05-29
      </li>
      <li>
        <b>19.0.0-rc-38af456a-20241010</b> - 2024-10-10
      </li>
      <li>
        <b>19.0.0-rc-380f5d67-20241113</b> - 2024-11-14
      </li>
      <li>
        <b>19.0.0-rc-378b305958-20240710</b> - 2024-07-10
      </li>
      <li>
        <b>19.0.0-rc-372ec00c-20241209</b> - 2024-12-10
      </li>
      <li>
        <b>19.0.0-rc-3563387fe3-20240621</b> - 2024-06-21
      </li>
      <li>
        <b>19.0.0-rc-34d0c5e357-20240607</b> - 2024-06-10
      </li>
      <li>
        <b>19.0.0-rc-33c7bd9a-20241104</b> - 2024-11-05
      </li>
      <li>
        <b>19.0.0-rc-3208e73e-20240730</b> - 2024-07-30
      </li>
      <li>
        <b>19.0.0-rc-2ec26bc4-20241111</b> - 2024-11-12
      </li>
      <li>
        <b>19.0.0-rc-2d2cc042-20240809</b> - 2024-08-09
      </li>
      <li>
        <b>19.0.0-rc-2d16326d-20240930</b> - 2024-09-30
      </li>
      <li>
        <b>19.0.0-rc-28668d39-20241023</b> - 2024-10-23
      </li>
      <li>
        <b>19.0.0-rc-20b6f4c0e8-20240607</b> - 2024-06-10
      </li>
      <li>
        <b>19.0.0-rc-206df66e-20240912</b> - 2024-09-13
      </li>
      <li>
        <b>19.0.0-rc-204a551e-20240926</b> - 2024-09-26
      </li>
      <li>
        <b>19.0.0-rc-1eaccd82-20240816</b> - 2024-08-16
      </li>
      <li>
        <b>19.0.0-rc-1df34bdf62-20240605</b> - 2024-06-05
      </li>
      <li>
        <b>19.0.0-rc-1d989965-20240821</b> - 2024-08-21
      </li>
      <li>
        <b>19.0.0-rc-1c9b1387-20241204</b> - 2024-12-05
      </li>
      <li>
        <b>19.0.0-rc-1b1283ad-20241203</b> - 2024-12-03
      </li>
      <li>
        <b>19.0.0-rc-19bd26be-20240815</b> - 2024-08-15
      </li>
      <li>
        <b>19.0.0-rc-187dd6a7-20240806</b> - 2024-08-06
      </li>
      <li>
        <b>19.0.0-rc-16409d05-20241101</b> - 2024-11-01
      </li>
      <li>
        <b>19.0.0-rc-163365a0-20240717</b> - 2024-07-17
      </li>
      <li>
        <b>19.0.0-rc-1631855f-20241023</b> - 2024-10-23
      </li>
      <li>
        <b>19.0.0-rc-14a4699f-20240725</b> - 2024-07-25
      </li>
      <li>
        <b>19.0.0-rc-1460d67c-20241003</b> - 2024-10-04
      </li>
      <li>
        <b>19.0.0-rc-1434af3d22-20240618</b> - 2024-06-18
      </li>
      <li>
        <b>19.0.0-rc-107a2f8c3e-20240617</b> - 2024-06-17
      </li>
      <li>
        <b>19.0.0-rc-100dfd7dab-20240701</b> - 2024-07-01
      </li>
      <li>
        <b>19.0.0-rc-0bc30748-20241028</b> - 2024-10-29
      </li>
      <li>
        <b>19.0.0-rc-09111202-20241011</b> - 2024-10-11
      </li>
      <li>
        <b>19.0.0-rc-0751fac7-20241002</b> - 2024-10-03
      </li>
      <li>
        <b>19.0.0-rc-06d0b89e-20240801</b> - 2024-08-01
      </li>
      <li>
        <b>19.0.0-rc-04bd67a4-20240924</b> - 2024-09-24
      </li>
      <li>
        <b>19.0.0-rc-02c0e824-20241028</b> - 2024-10-28
      </li>
      <li>
        <b>19.0.0-rc-01172397-20240716</b> - 2024-07-16
      </li>
      <li>
        <b>19.0.0-rc.1</b> - 2024-11-14
      </li>
      <li>
        <b>19.0.0-rc.0</b> - 2024-06-03
      </li>
      <li>
        <b>19.0.0-canary-fd0da3eef-20240404</b> - 2024-04-04
      </li>
      <li>
        <b>19.0.0-canary-e3ebcd54b-20240405</b> - 2024-04-05
      </li>
      <li>
        <b>19.0.0-canary-db913d8e17-20240422</b> - 2024-04-22
      </li>
      <li>
        <b>19.0.0-canary-cf5ab8b8b2-20240425</b> - 2024-04-25
      </li>
      <li>
        <b>19.0.0-canary-cb151849e1-20240424</b> - 2024-04-24
      </li>
      <li>
        <b>19.0.0-canary-adb717393-20240411</b> - 2024-04-11
      </li>
      <li>
        <b>19.0.0-canary-a73c3450e-20240329</b> - 2024-03-29
      </li>
      <li>
        <b>19.0.0-canary-96c584661-20240412</b> - 2024-04-12
      </li>
      <li>
        <b>19.0.0-canary-95e6f032c-20240401</b> - 2024-04-01
      </li>
      <li>
        <b>19.0.0-canary-8afa144bd-20240416</b> - 2024-04-16
      </li>
      <li>
        <b>19.0.0-canary-7a2609eed-20240403</b> - 2024-04-03
      </li>
      <li>
        <b>19.0.0-canary-657428a9e-20240416</b> - 2024-04-17
      </li>
      <li>
        <b>19.0.0-canary-4c12339ce-20240408</b> - 2024-04-08
      </li>
      <li>
        <b>19.0.0-canary-48ec17b86-20240402</b> - 2024-04-02
      </li>
      <li>
        <b>19.0.0-canary-36e62c603-20240418</b> - 2024-04-18
      </li>
      <li>
        <b>19.0.0-canary-33a32441e9-20240418</b> - 2024-04-19
      </li>
      <li>
        <b>19.0.0-canary-2b036d3f1-20240327</b> - 2024-03-27
      </li>
      <li>
        <b>19.0.0-canary-05797cceb-20240328</b> - 2024-03-28
      </li>
      <li>
        <b>19.0.0-beta-e7d213dfb0-20240507</b> - 2024-05-07
      </li>
      <li>
        <b>19.0.0-beta-b498834eab-20240506</b> - 2024-05-06
      </li>
      <li>
        <b>19.0.0-beta-9d76c954cf-20240510</b> - 2024-05-13
      </li>
      <li>
        <b>19.0.0-beta-94eed63c49-20240425</b> - 2024-04-25
      </li>
      <li>
        <b>19.0.0-beta-73bcdfbae5-20240502</b> - 2024-05-02
      </li>
      <li>
        <b>19.0.0-beta-6946ebe620-20240508</b> - 2024-05-08
      </li>
      <li>
        <b>19.0.0-beta-5d29478716-20240506</b> - 2024-05-06
      </li>
      <li>
        <b>19.0.0-beta-4508873393-20240430</b> - 2024-04-30
      </li>
      <li>
        <b>19.0.0-beta-26f2496093-20240514</b> - 2024-05-14
      </li>
      <li>
        <b>19.0.0-beta-1beb73de0f-20240503</b> - 2024-05-03
      </li>
      <li>
        <b>19.0.0-beta-04b058868c-20240508</b> - 2024-05-09
      </li>
      <li>
        <b>18.3.1</b> - 2024-04-26
      </li>
      <li>
        <b>18.3.0</b> - 2024-04-25
     ...
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.