Skip to content

Throw special error if rejected Promises are incorrectly instrumented#36328

Draft
eps1lon wants to merge 1 commit intofacebook:mainfrom
eps1lon:sebbie/04-22-_fiber_throw_special_error_if_rejected_promises_are_incorrectly_instrumented
Draft

Throw special error if rejected Promises are incorrectly instrumented#36328
eps1lon wants to merge 1 commit intofacebook:mainfrom
eps1lon:sebbie/04-22-_fiber_throw_special_error_if_rejected_promises_are_incorrectly_instrumented

Conversation

@eps1lon
Copy link
Copy Markdown
Collaborator

@eps1lon eps1lon commented Apr 22, 2026

When a rejected Promise is instrumented in userspace while setting the rejection reason in the wrong field (e.g. error instead of reason), React will throw undefined (because usable.reason doesn't exist). This makes it incredibly hard to find the actual rejection reason.

React is now throwing a generic error if we couldn't find the rejection reason. That will produce a callstack pointing into the problematic Promise from where you can hopefully extract the real rejection reason (alongside fixing the bad instrumentation).

We're doing this in prod since this is unlikely to surface in dev. We're only doing runtime type-checking for the rejected case. That should be hit rarely and therefore hopefully have negligible runtime impact.

@meta-cla meta-cla Bot added the CLA Signed label Apr 22, 2026
@github-actions github-actions Bot added the React Core Team Opened by a member of the React Core Team label Apr 22, 2026
@react-sizebot
Copy link
Copy Markdown

react-sizebot commented Apr 22, 2026

Comparing: 142cfde...4c13990

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 +0.01% 612.85 kB 612.93 kB +0.04% 108.29 kB 108.34 kB
oss-experimental/react-dom/cjs/react-dom.production.js = 6.84 kB 6.84 kB +0.05% 1.88 kB 1.88 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js +0.01% 678.78 kB 678.86 kB +0.03% 119.26 kB 119.29 kB
facebook-www/ReactDOM-prod.classic.js +0.01% 698.52 kB 698.60 kB +0.03% 122.72 kB 122.76 kB
facebook-www/ReactDOM-prod.modern.js +0.01% 688.83 kB 688.92 kB +0.03% 121.11 kB 121.14 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/cjs/react-server-flight.production.js +0.67% 66.24 kB 66.69 kB +1.37% 13.08 kB 13.25 kB
oss-stable/react-server/cjs/react-server-flight.production.js +0.67% 66.24 kB 66.69 kB +1.37% 13.08 kB 13.25 kB
oss-experimental/react-server/cjs/react-server-flight.production.js +0.65% 68.05 kB 68.49 kB +1.33% 13.49 kB 13.67 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-server.edge.production.js +0.39% 111.59 kB 112.03 kB +0.68% 22.58 kB 22.73 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-server.edge.production.js +0.39% 111.59 kB 112.03 kB +0.68% 22.58 kB 22.73 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.edge.production.js +0.38% 113.39 kB 113.82 kB +0.67% 22.97 kB 23.12 kB
oss-stable-semver/react-server-dom-esm/cjs/react-server-dom-esm-server.node.production.js +0.38% 114.38 kB 114.82 kB +0.66% 23.12 kB 23.27 kB
oss-stable/react-server-dom-esm/cjs/react-server-dom-esm-server.node.production.js +0.38% 114.38 kB 114.82 kB +0.66% 23.12 kB 23.27 kB
oss-experimental/react-server-dom-esm/cjs/react-server-dom-esm-server.node.production.js +0.37% 116.18 kB 116.61 kB +0.66% 23.49 kB 23.64 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.production.js +0.37% 118.37 kB 118.81 kB +0.64% 23.65 kB 23.81 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.production.js +0.37% 118.37 kB 118.81 kB +0.64% 23.65 kB 23.81 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.js +0.37% 118.53 kB 118.96 kB +0.58% 23.74 kB 23.88 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.js +0.37% 118.53 kB 118.96 kB +0.58% 23.74 kB 23.88 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.production.js +0.37% 118.53 kB 118.96 kB +0.59% 23.74 kB 23.88 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.production.js +0.37% 118.53 kB 118.96 kB +0.59% 23.74 kB 23.88 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.production.js +0.36% 120.17 kB 120.60 kB +0.65% 24.01 kB 24.16 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.js +0.36% 120.32 kB 120.75 kB +0.57% 24.11 kB 24.25 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.production.js +0.36% 120.32 kB 120.75 kB +0.56% 24.11 kB 24.25 kB
oss-stable-semver/react-server-dom-unbundled/cjs/react-server-dom-unbundled-server.node.production.js +0.35% 124.24 kB 124.67 kB +0.57% 24.59 kB 24.73 kB
oss-stable/react-server-dom-unbundled/cjs/react-server-dom-unbundled-server.node.production.js +0.35% 124.24 kB 124.67 kB +0.57% 24.59 kB 24.73 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.production.js +0.35% 125.29 kB 125.72 kB +0.56% 24.82 kB 24.96 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.production.js +0.35% 125.29 kB 125.72 kB +0.56% 24.82 kB 24.96 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.production.js +0.35% 125.30 kB 125.73 kB +0.56% 24.82 kB 24.96 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.production.js +0.35% 125.30 kB 125.73 kB +0.56% 24.82 kB 24.96 kB
oss-experimental/react-server-dom-unbundled/cjs/react-server-dom-unbundled-server.node.production.js +0.34% 126.03 kB 126.47 kB +0.55% 24.96 kB 25.10 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.production.js +0.34% 127.08 kB 127.52 kB +0.55% 25.19 kB 25.33 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.production.js +0.34% 127.09 kB 127.53 kB +0.55% 25.19 kB 25.33 kB
oss-stable-semver/react-server/cjs/react-server-flight.development.js +0.31% 146.39 kB 146.84 kB +0.66% 26.23 kB 26.40 kB
oss-stable/react-server/cjs/react-server-flight.development.js +0.31% 146.39 kB 146.84 kB +0.66% 26.23 kB 26.40 kB
oss-experimental/react-server/cjs/react-server-flight.development.js +0.31% 148.48 kB 148.93 kB +0.66% 26.69 kB 26.87 kB
oss-stable-semver/react-server/cjs/react-server.production.js +0.30% 145.64 kB 146.08 kB +0.70% 25.53 kB 25.71 kB
oss-stable/react-server/cjs/react-server.production.js +0.30% 145.64 kB 146.08 kB +0.70% 25.53 kB 25.71 kB
oss-experimental/react-server/cjs/react-server.production.js +0.30% 149.12 kB 149.57 kB +0.67% 26.32 kB 26.50 kB
oss-experimental/react-markup/cjs/react-markup.react-server.production.js +0.24% 359.75 kB 360.61 kB +0.49% 66.72 kB 67.05 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-server.browser.development.js +0.22% 207.46 kB 207.91 kB +0.45% 37.55 kB 37.72 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-server.browser.development.js +0.22% 207.46 kB 207.91 kB +0.45% 37.55 kB 37.72 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.browser.development.js +0.22% 209.56 kB 210.01 kB +0.44% 37.97 kB 38.14 kB
oss-stable-semver/react-server/cjs/react-server.development.js +0.22% 209.92 kB 210.38 kB +0.47% 37.03 kB 37.20 kB
oss-stable/react-server/cjs/react-server.development.js +0.22% 209.92 kB 210.38 kB +0.47% 37.03 kB 37.20 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-server.edge.development.js +0.22% 211.15 kB 211.60 kB +0.46% 38.07 kB 38.24 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-server.edge.development.js +0.22% 211.15 kB 211.60 kB +0.46% 38.07 kB 38.24 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.edge.development.js +0.21% 213.24 kB 213.69 kB +0.44% 38.49 kB 38.66 kB
oss-experimental/react-server/cjs/react-server.development.js +0.21% 214.71 kB 215.17 kB +0.53% 37.95 kB 38.15 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.development.js +0.21% 215.07 kB 215.52 kB +0.44% 38.84 kB 39.01 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.development.js +0.21% 215.07 kB 215.52 kB +0.44% 38.84 kB 39.01 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.development.js +0.21% 215.54 kB 216.00 kB +0.43% 38.94 kB 39.11 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.development.js +0.21% 215.54 kB 216.00 kB +0.43% 38.94 kB 39.11 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.development.js +0.21% 217.17 kB 217.63 kB +0.42% 39.27 kB 39.43 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.development.js +0.21% 217.65 kB 218.10 kB +0.42% 39.38 kB 39.54 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js +0.21% 218.87 kB 219.32 kB +0.43% 39.36 kB 39.53 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js +0.21% 218.87 kB 219.32 kB +0.43% 39.36 kB 39.53 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.development.js +0.21% 218.87 kB 219.32 kB +0.43% 39.37 kB 39.54 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.development.js +0.21% 218.87 kB 219.32 kB +0.43% 39.37 kB 39.54 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js +0.21% 220.96 kB 221.41 kB +0.41% 39.78 kB 39.95 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.development.js +0.21% 220.96 kB 221.41 kB +0.42% 39.79 kB 39.95 kB

Generated by 🚫 dangerJS against 4c13990

@eps1lon eps1lon force-pushed the sebbie/04-22-_fiber_throw_special_error_if_rejected_promises_are_incorrectly_instrumented branch 3 times, most recently from ab70052 to 8fc1b9e Compare April 22, 2026 16:14
@eps1lon eps1lon changed the title [Fiber] Throw special error if rejected Promises are incorrectly instrumented Throw special error if rejected Promises are incorrectly instrumented Apr 22, 2026
@eps1lon eps1lon force-pushed the sebbie/04-22-_fiber_throw_special_error_if_rejected_promises_are_incorrectly_instrumented branch from 8fc1b9e to 4c13990 Compare April 23, 2026 15:18
@eps1lon eps1lon force-pushed the sebbie/04-22-_fiber_throw_special_error_if_rejected_promises_are_incorrectly_instrumented branch from 4c13990 to 2ba964a Compare April 23, 2026 19:18
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