Skip to content

[Fizz] Do not allow abort reentrancy#36574

Open
gnoff wants to merge 1 commit into
facebook:mainfrom
gnoff:jstory/no-reentrant-abort
Open

[Fizz] Do not allow abort reentrancy#36574
gnoff wants to merge 1 commit into
facebook:mainfrom
gnoff:jstory/no-reentrant-abort

Conversation

@gnoff
Copy link
Copy Markdown
Collaborator

@gnoff gnoff commented May 29, 2026

Aborting is a gate you can only pass through once. A request that is already aborting, already completed, or already fataled cannot be aborted a second time. Previously this was generally functionally true but you could contrive sequences where an onError would fire after a render fataled. This change makes it more explicit that this is not semantically correct by bailing out of abort if the request is in a status that cannot be aborted.

@meta-cla meta-cla Bot added the CLA Signed label May 29, 2026
@github-actions github-actions Bot added the React Core Team Opened by a member of the React Core Team label May 29, 2026
Aborting is a gate you can only pass through once. A request that is already aborting, already completed, or already fatalled cannot be aborted a second time. Previously this was generally functionally true but you could contrive sequences where an onError would fire after a render fataled. This change makes it more explicit that this is not semantically correct by bailing out of abort if the request is in a status that cannot be aborted.
@gnoff gnoff force-pushed the jstory/no-reentrant-abort branch from c5e3e36 to 239858a Compare May 29, 2026 23:04
@gnoff gnoff requested a review from unstubbable May 29, 2026 23:06
@react-sizebot
Copy link
Copy Markdown

Comparing: f0dfee3...239858a

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 +0.11% 1.88 kB 1.88 kB
oss-stable/react-dom/cjs/react-dom-client.production.js = 614.26 kB 614.17 kB = 108.57 kB 108.52 kB
oss-experimental/react-dom/cjs/react-dom.production.js = 6.84 kB 6.84 kB +0.11% 1.88 kB 1.88 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js = 680.19 kB 680.11 kB = 119.51 kB 119.48 kB
facebook-www/ReactDOM-prod.classic.js = 700.61 kB 700.53 kB = 123.09 kB 123.05 kB
facebook-www/ReactDOM-prod.modern.js = 690.93 kB 690.84 kB = 121.48 kB 121.44 kB

Significant size changes

Includes any change greater than 0.2%:

Expand to show
Name +/- Base Current +/- gzip Base gzip Current gzip
oss-experimental/react-server/cjs/react-server.development.js = 216.17 kB 215.72 kB = 38.26 kB 38.08 kB
oss-stable-semver/react-server/cjs/react-server.development.js = 211.38 kB 210.93 kB = 37.34 kB 37.17 kB
oss-stable/react-server/cjs/react-server.development.js = 211.38 kB 210.93 kB = 37.34 kB 37.17 kB
oss-experimental/react-server/cjs/react-server.production.js = 150.25 kB 149.88 kB = 26.59 kB 26.42 kB
oss-stable-semver/react-server/cjs/react-server.production.js = 146.77 kB 146.39 kB = 25.81 kB 25.63 kB
oss-stable/react-server/cjs/react-server.production.js = 146.77 kB 146.39 kB = 25.81 kB 25.63 kB
oss-experimental/react-markup/cjs/react-markup.react-server.production.js = 361.78 kB 360.46 kB = 67.31 kB 66.81 kB
oss-experimental/react-markup/cjs/react-markup.react-server.development.js = 685.74 kB 683.21 kB = 121.73 kB 121.16 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.production.js = 116.90 kB 115.96 kB = 22.71 kB 22.48 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.production.js = 116.54 kB 115.61 kB = 22.62 kB 22.38 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.production.js = 115.10 kB 114.17 kB = 22.35 kB 22.11 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.production.js = 115.10 kB 114.17 kB = 22.35 kB 22.11 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.production.js = 114.75 kB 113.81 kB = 22.25 kB 22.02 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.production.js = 114.75 kB 113.81 kB = 22.25 kB 22.02 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.browser.production.js = 111.03 kB 110.09 kB = 21.70 kB 21.46 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-server.browser.production.js = 109.24 kB 108.30 kB = 21.34 kB 21.10 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-server.browser.production.js = 109.24 kB 108.30 kB = 21.34 kB 21.10 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.production.js = 130.43 kB 129.29 kB = 26.04 kB 25.69 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.production.js = 130.42 kB 129.28 kB = 26.05 kB 25.70 kB
oss-experimental/react-server-dom-unbundled/cjs/react-server-dom-unbundled-server.node.production.js = 129.37 kB 128.23 kB = 25.83 kB 25.47 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.production.js = 128.63 kB 127.50 kB = 25.68 kB 25.32 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.production.js = 128.63 kB 127.50 kB = 25.68 kB 25.32 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.production.js = 128.62 kB 127.48 kB = 25.68 kB 25.33 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.production.js = 128.62 kB 127.48 kB = 25.68 kB 25.33 kB
oss-stable-semver/react-server-dom-unbundled/cjs/react-server-dom-unbundled-server.node.production.js = 127.57 kB 126.44 kB = 25.46 kB 25.09 kB
oss-stable/react-server-dom-unbundled/cjs/react-server-dom-unbundled-server.node.production.js = 127.57 kB 126.44 kB = 25.46 kB 25.09 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.production.js = 123.50 kB 122.36 kB = 24.89 kB 24.52 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.production.js = 121.71 kB 120.57 kB = 24.52 kB 24.16 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.production.js = 121.71 kB 120.57 kB = 24.52 kB 24.16 kB
oss-experimental/react-server-dom-esm/cjs/react-server-dom-esm-server.node.production.js = 119.43 kB 118.30 kB = 24.32 kB 23.95 kB
oss-stable-semver/react-server-dom-esm/cjs/react-server-dom-esm-server.node.production.js = 117.64 kB 116.50 kB = 23.94 kB 23.58 kB
oss-stable/react-server-dom-esm/cjs/react-server-dom-esm-server.node.production.js = 117.64 kB 116.50 kB = 23.94 kB 23.58 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.production.js = 122.46 kB 121.21 kB = 24.68 kB 24.33 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.js = 122.46 kB 121.21 kB = 24.69 kB 24.34 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.production.js = 120.66 kB 119.42 kB = 24.32 kB 23.96 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.production.js = 120.66 kB 119.42 kB = 24.32 kB 23.96 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.js = 120.66 kB 119.42 kB = 24.33 kB 23.97 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.js = 120.66 kB 119.42 kB = 24.33 kB 23.97 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.edge.production.js = 115.52 kB 114.28 kB = 23.56 kB 23.19 kB
facebook-www/ReactFlightServer-prod.classic.js = 104.45 kB 103.32 kB = 21.32 kB 20.95 kB
facebook-www/ReactFlightServer-prod.modern.js = 104.45 kB 103.32 kB = 21.32 kB 20.95 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-server.edge.production.js = 113.73 kB 112.48 kB = 23.18 kB 22.80 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-server.edge.production.js = 113.73 kB 112.48 kB = 23.18 kB 22.80 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js = 256.85 kB 253.87 kB = 46.13 kB 45.65 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js = 256.84 kB 253.86 kB = 46.13 kB 45.64 kB
oss-experimental/react-server-dom-unbundled/cjs/react-server-dom-unbundled-server.node.development.js = 255.64 kB 252.66 kB = 45.81 kB 45.33 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js = 254.76 kB 251.78 kB = 45.70 kB 45.22 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js = 254.76 kB 251.78 kB = 45.70 kB 45.22 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js = 254.75 kB 251.77 kB = 45.70 kB 45.21 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js = 254.75 kB 251.77 kB = 45.70 kB 45.21 kB
oss-stable-semver/react-server-dom-unbundled/cjs/react-server-dom-unbundled-server.node.development.js = 253.55 kB 250.57 kB = 45.38 kB 44.90 kB
oss-stable/react-server-dom-unbundled/cjs/react-server-dom-unbundled-server.node.development.js = 253.55 kB 250.57 kB = 45.38 kB 44.90 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.development.js = 249.12 kB 246.14 kB = 44.74 kB 44.25 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.development.js = 247.03 kB 244.05 kB = 44.32 kB 43.82 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.development.js = 247.03 kB 244.05 kB = 44.32 kB 43.82 kB
oss-experimental/react-server-dom-esm/cjs/react-server-dom-esm-server.node.development.js = 242.35 kB 239.37 kB = 44.10 kB 43.61 kB
oss-stable-semver/react-server-dom-esm/cjs/react-server-dom-esm-server.node.development.js = 240.26 kB 237.28 kB = 43.67 kB 43.17 kB
oss-stable/react-server-dom-esm/cjs/react-server-dom-esm-server.node.development.js = 240.26 kB 237.28 kB = 43.67 kB 43.17 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.development.js = 224.98 kB 222.00 kB = 40.51 kB 40.04 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js = 224.98 kB 222.00 kB = 40.52 kB 40.04 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.development.js = 222.89 kB 219.91 kB = 40.09 kB 39.62 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.development.js = 222.89 kB 219.91 kB = 40.09 kB 39.62 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js = 222.89 kB 219.91 kB = 40.09 kB 39.62 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js = 222.89 kB 219.91 kB = 40.09 kB 39.62 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.development.js = 221.34 kB 218.36 kB = 40.03 kB 39.55 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.development.js = 220.86 kB 217.88 kB = 39.92 kB 39.44 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.development.js = 219.23 kB 216.25 kB = 39.61 kB 39.12 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.development.js = 219.23 kB 216.25 kB = 39.61 kB 39.12 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.development.js = 218.76 kB 215.78 kB = 39.51 kB 39.01 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.development.js = 218.76 kB 215.78 kB = 39.51 kB 39.01 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.edge.development.js = 217.26 kB 214.28 kB = 39.21 kB 38.73 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-server.edge.development.js = 215.17 kB 212.19 kB = 38.78 kB 38.32 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-server.edge.development.js = 215.17 kB 212.19 kB = 38.78 kB 38.32 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.browser.development.js = 213.25 kB 210.27 kB = 38.60 kB 38.14 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-server.browser.development.js = 211.15 kB 208.17 kB = 38.19 kB 37.72 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-server.browser.development.js = 211.15 kB 208.17 kB = 38.19 kB 37.72 kB
facebook-www/ReactFlightServer-dev.classic.js = 202.43 kB 199.45 kB = 36.64 kB 36.14 kB
facebook-www/ReactFlightServer-dev.modern.js = 202.43 kB 199.45 kB = 36.64 kB 36.14 kB
oss-experimental/react-server/cjs/react-server-flight.development.js = 150.86 kB 148.48 kB = 27.10 kB 26.69 kB
oss-stable-semver/react-server/cjs/react-server-flight.development.js = 148.77 kB 146.39 kB = 26.64 kB 26.23 kB
oss-stable/react-server/cjs/react-server-flight.development.js = 148.77 kB 146.39 kB = 26.64 kB 26.23 kB
oss-experimental/react-server/cjs/react-server-flight.production.js = 69.20 kB 68.05 kB = 13.86 kB 13.49 kB
oss-stable-semver/react-server/cjs/react-server-flight.production.js = 67.39 kB 66.24 kB = 13.45 kB 13.08 kB
oss-stable/react-server/cjs/react-server-flight.production.js = 67.39 kB 66.24 kB = 13.45 kB 13.08 kB

Generated by 🚫 dangerJS against 239858a

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.

2 participants