Skip to content

Conversation

@unstubbable
Copy link
Collaborator

@unstubbable unstubbable commented Jan 23, 2026

Database libraries like Gel/EdgeDB can create very long linear chains of async sequences through temporal async sequencing in connection pools. The recursive traversal of node.previous chains in visitAsyncNode causes stack overflow on these deep chains.

The fix converts the previous chain traversal from recursive to iterative. We collect the chain into an array, then process from deepest to shallowest.

The awaited traversal remains recursive since its depth is bounded by promise dependency depth, not by the number of event loop turns. Each awaited branch still benefits from the iterative previous handling within its own traversal.

I've verified that this fixes the repro provided in #35246.

closes #35246

@meta-cla meta-cla bot added the CLA Signed label Jan 23, 2026
@github-actions github-actions bot added the React Core Team Opened by a member of the React Core Team label Jan 23, 2026
@react-sizebot
Copy link

Comparing: 24d8716...eacda6c

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.67 kB 608.67 kB = 107.63 kB 107.63 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 = 674.60 kB 674.60 kB = 118.58 kB 118.57 kB
facebook-www/ReactDOM-prod.classic.js = 693.92 kB 693.92 kB = 121.98 kB 121.97 kB
facebook-www/ReactDOM-prod.modern.js = 684.31 kB 684.31 kB = 120.37 kB 120.37 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.35% 223.52 kB 224.30 kB +0.39% 40.47 kB 40.63 kB
oss-stable/react-server-dom-esm/cjs/react-server-dom-esm-server.node.development.js +0.35% 223.52 kB 224.30 kB +0.39% 40.47 kB 40.63 kB
oss-experimental/react-server-dom-esm/cjs/react-server-dom-esm-server.node.development.js +0.34% 225.61 kB 226.39 kB +0.42% 40.92 kB 41.10 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.development.js +0.34% 230.04 kB 230.82 kB +0.38% 41.07 kB 41.23 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.development.js +0.34% 230.04 kB 230.82 kB +0.38% 41.07 kB 41.23 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.development.js +0.33% 232.13 kB 232.91 kB +0.41% 41.53 kB 41.70 kB
oss-stable-semver/react-server-dom-unbundled/cjs/react-server-dom-unbundled-server.node.development.js +0.33% 236.70 kB 237.48 kB +0.41% 42.13 kB 42.30 kB
oss-stable/react-server-dom-unbundled/cjs/react-server-dom-unbundled-server.node.development.js +0.33% 236.70 kB 237.48 kB +0.41% 42.13 kB 42.30 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js +0.33% 237.90 kB 238.67 kB +0.41% 42.44 kB 42.61 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js +0.33% 237.90 kB 238.67 kB +0.41% 42.44 kB 42.61 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js +0.33% 237.95 kB 238.72 kB +0.41% 42.43 kB 42.60 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js +0.33% 237.95 kB 238.72 kB +0.41% 42.43 kB 42.60 kB
oss-experimental/react-server-dom-unbundled/cjs/react-server-dom-unbundled-server.node.development.js +0.32% 238.79 kB 239.57 kB +0.40% 42.60 kB 42.77 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js +0.32% 239.99 kB 240.76 kB +0.40% 42.91 kB 43.08 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js +0.32% 240.04 kB 240.81 kB +0.40% 42.91 kB 43.08 kB

Generated by 🚫 dangerJS against eacda6c

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