8000 [Flight] Emit Partial Debug Info if we have any at the point of aborting a render by sebmarkbage · Pull Request #33632 · facebook/react · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

[Flight] Emit Partial Debug Info if we have any at the point of aborting a render #33632

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’l 8000 l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jun 24, 2025

Conversation

sebmarkbage
Copy link
Collaborator

When we abort a render we don't really have much information about the task that was aborted. Because before a Promise resolves there's no indication about would have resolved it. In particular we don't know which I/O would've ultimately called resolve().

However, we can at least emit any information we do have at the point where we emit it. At the least the stack of the top most Promise.

Currently we synchronously flush at the end of an abort() but we should ideally schedule the flush in a macrotask and emit this debug information right before that. That way we would give an opportunity for any cacheSignal() abort to trigger rejections all the way up and those rejections informs the awaited stack.

@github-actions github-actions bot added the React Core Team Opened by a member of the React Core Team label Jun 24, 2025
@react-sizebot
Copy link
react-sizebot commented Jun 24, 2025

Comparing: 94cf60b...05b41ec

Critical size changes

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

Name +/- Base Current +/- gzip Base gzip Current gzip
oss-stable/react-dom/cjs/react-dom.production.js = 6.68 kB 6.68 kB = 1.83 kB 1.83 kB
oss-stable/react-dom/cjs/react-dom-client.production.js = 530.57 kB 530.57 kB = 93.67 kB 93.67 kB
oss-experimental/react-dom/cjs/react-dom.production.js = 6.69 kB 6.69 kB +0.05% 1.83 kB 1.83 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js = 651.66 kB 651.66 kB = 114.78 kB 114.78 kB
facebook-www/ReactDOM-prod.classic.js = 674.81 kB 674.81 kB = 118.78 kB 118.78 kB
facebook-www/ReactDOM-prod.modern.js = 665.30 kB 665.30 kB = 117.19 kB 117.19 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-dom-esm/cjs/react-server-dom-esm-server.node.development.js +0.99% 184.48 kB 186.30 kB +0.86% 34.26 kB 34.55 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.development.js +0.96% 190.34 kB 192.16 kB +0.86% 34.86 kB 35.16 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.development.js +0.92% 197.17 kB 198.99 kB +0.84% 36.00 kB 36.30 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js +0.92% 198.32 kB 200.14 kB +0.86% 36.29 kB 36.60 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js +0.92% 198.38 kB 200.20 kB +0.86% 36.30 kB 36.61 kB
oss-experimental/react-server/cjs/react-server-flight.development.js +0.61% 126.70 kB 127.48 kB +0.44% 23.25 kB 23.36 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.browser.development.js +0.46% 166.97 kB 167.75 kB +0.37% 30.90 kB 31.01 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.edge.development.js +0.45% 171.02 kB 171.80 kB +0.36% 31.41 kB 31.52 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.development.js +0.44% 174.81 kB 175.58 kB +0.34% 32.26 kB 32.37 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.development.js +0.44% 175.35 kB 176.13 kB +0.35% 32.38 kB 32.50 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.development.js +0.43% 178.90 kB 179.67 kB +0.35% 32.79 kB 32.91 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js +0.43% 178.96 kB 179.74 kB +0.36% 32.81 kB 32.92 kB
oss-stable-semver/react-server/cjs/react-server-flight.development.js +0.26% 118.59 kB 118.90 kB +0.13% 21.82 kB 21.84 kB
oss-stable/react-server/cjs/react-server-flight.development.js +0.26% 118.59 kB 118.90 kB +0.13% 21.82 kB 21.84 kB

Generated by 🚫 dangerJS against 05b41ec

Co-authored-by: Hendrik Liebau <mail@hendrik-liebau.de>
@sebmarkbage sebmarkbage merged commit e67b4fe into facebook:main Jun 24, 2025
14 of 16 checks passed
github-actions bot pushed a commit that referenced this pull request Jun 24, 2025
…ing a render (#33632)

When we abort a render we don't really have much information about the
task that was aborted. Because before a Promise resolves there's no
indication about would have resolved it. In particular we don't know
which I/O would've ultimately called resolve().

However, we can at least emit any information we do have at the point
where we emit it. At the least the stack of the top most Promise.

Currently we synchronously flush at the end of an `abort()` but we
should ideally schedule the flush in a macrotask and emit this debug
information right before that. That way we would give an opportunity for
any `cacheSignal()` abort to trigger rejections all the way up and those
rejections informs the awaited stack.

---------

Co-authored-by: Hendrik Liebau <mail@hendrik-liebau.de>

DiffTrain build for [e67b4fe](e67b4fe)
github-actions bot pushed a commit that referenced this pull request Jun 24, 2025
…ing a render (#33632)

When we abort a render we don't really have much information about the
task that was aborted. Because before a Promise resolves there's no
indication about would have resolved it. In particular we don't know
which I/O would've ultimately called resolve().

However, we can at least emit any information we do have at the point
where we emit it. At the least the stack of the top most Promise.

Currently we synchronously flush at the end of an `abort()` but we
should ideally schedule the flush in a macrotask and emit this debug
information right before that. That way we would give an opportunity for
any `cacheSignal()` abort to trigger rejections all the way up and those
rejections informs the awaited stack.

---------

Co-authored-by: Hendrik Liebau <mail@hendrik-liebau.de>

DiffTrain build for [e67b4fe](e67b4fe)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLA Signed React Core Team Opened by a member of the React Core Team
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants
0