Skip to content

Conversation

unstubbable
Copy link
Collaborator

Alternative to #34638, covering not only hanging promises, but also unresolved I/O.

@meta-cla meta-cla bot added the CLA Signed label Oct 6, 2025
@unstubbable unstubbable changed the title [Flight] Improve owner and components stacks when aborting [Flight] Improve owner and components stack when aborting Oct 6, 2025
@github-actions github-actions bot added the React Core Team Opened by a member of the React Core Team label Oct 6, 2025
@unstubbable unstubbable changed the title [Flight] Improve owner and components stack when aborting [Flight] Improve owner and component stacks when aborting Oct 6, 2025
@unstubbable unstubbable force-pushed the improve-aborted-promise-stacks branch 2 times, most recently from 5e89b83 to b174161 Compare October 6, 2025 16:18
@react-sizebot
Copy link

react-sizebot commented Oct 6, 2025

Comparing: b65e6fc...3e5782f

Critical size changes

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

Name +/- Base Current +/- gzip Base gzip Current gzip
oss-stable/react-dom/cjs/react-dom.production.js = 6.68 kB 6.68 kB +0.11% 1.83 kB 1.83 kB
oss-stable/react-dom/cjs/react-dom-client.production.js = 536.14 kB 536.14 kB = 94.81 kB 94.81 kB
oss-experimental/react-dom/cjs/react-dom.production.js = 6.69 kB 6.69 kB +0.11% 1.83 kB 1.83 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js = 663.96 kB 663.96 kB = 117.04 kB 117.04 kB
facebook-www/ReactDOM-prod.classic.js = 687.83 kB 687.83 kB = 121.08 kB 121.08 kB
facebook-www/ReactDOM-prod.modern.js = 678.26 kB 678.26 kB = 119.44 kB 119.44 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-esm/cjs/react-server-dom-esm-server.node.development.js +0.56% 209.67 kB 210.84 kB +0.75% 38.23 kB 38.52 kB
oss-stable/react-server-dom-esm/cjs/react-server-dom-esm-server.node.development.js +0.56% 209.67 kB 210.84 kB +0.75% 38.23 kB 38.52 kB
oss-experimental/react-server-dom-esm/cjs/react-server-dom-esm-server.node.development.js +0.55% 214.18 kB 215.36 kB +0.68% 39.08 kB 39.34 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.development.js +0.54% 216.18 kB 217.35 kB +0.69% 38.93 kB 39.19 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.development.js +0.54% 216.18 kB 217.35 kB +0.69% 38.93 kB 39.19 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.development.js +0.53% 220.70 kB 221.87 kB +0.64% 39.76 kB 40.02 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.development.js +0.53% 222.89 kB 224.06 kB +0.68% 40.00 kB 40.27 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.development.js +0.53% 222.89 kB 224.06 kB +0.68% 40.00 kB 40.27 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js +0.52% 224.10 kB 225.27 kB +0.65% 40.30 kB 40.56 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js +0.52% 224.10 kB 225.27 kB +0.65% 40.30 kB 40.56 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js +0.52% 224.15 kB 225.32 kB +0.66% 40.30 kB 40.56 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js +0.52% 224.15 kB 225.32 kB +0.66% 40.30 kB 40.56 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.development.js +0.52% 227.41 kB 228.58 kB +0.64% 40.84 kB 41.11 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js +0.51% 228.62 kB 229.79 kB +0.64% 41.14 kB 41.40 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js +0.51% 228.67 kB 229.84 kB +0.64% 41.14 kB 41.40 kB

Generated by 🚫 dangerJS against 3e5782f

// Promise that was aborted. This won't necessarily have I/O associated with it but
// it's a point of interest.
// However, if the Promise and IO node have the same owner, it likely means a sync component
// created both the Promise and initiated the I/O. Prefer the IO node for more specific info.
Copy link
Collaborator

Choose a reason for hiding this comment

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

This part doesn't make sense to me. Why would this be an indicator that it's better?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Whoops, that's a leftover I forgot to remove. We actually don't need this condition.

@unstubbable unstubbable force-pushed the improve-aborted-promise-stacks branch from b174161 to f5a07a5 Compare October 6, 2025 16:36
when scheduling prerendering and aborting in successive tasks using setImmediate
  ✕ includes deeper location for hanging promises
  ✓ includes deeper location for hanging promises in ignore-listed components
  ! includes deeper location for unresolved I/O (this one is flaky!)
when scheduling prerendering and aborting in successive tasks using setTimeout
  ✓ includes deeper location for hanging promises
  ✕ includes deeper location for hanging promises in ignore-listed components
  ✕ includes deeper location for unresolved I/O
@unstubbable unstubbable force-pushed the improve-aborted-promise-stacks branch from d30af01 to 3e5782f Compare October 6, 2025 18:57
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.

3 participants