Skip to content

Add logger for potential nested infinite loop before throwing#33744

Closed
jackpope wants to merge 1 commit intofacebook:mainfrom
jackpope:log-nested-loops
Closed

Add logger for potential nested infinite loop before throwing#33744
jackpope wants to merge 1 commit intofacebook:mainfrom
jackpope:log-nested-loops

Conversation

@jackpope
Copy link
Contributor

@jackpope jackpope commented Jul 9, 2025

Gather production data in a enableInfiniteLoopDetection experiment around existing potential infinite loops.

We disabled enableInfiniteLoopDetection with #31088 as it was introducing new crashes that were hard to debug, especially with sibling prewarming.

One issue with the previous rollout is that we were introducing new crashes for components that may have settled after the 50 pass limit, but before a real crash or infinite loop. This happened more frequently after enabling sibling prewarming which in some cases increased render counts that may have already been close to the limit.

This change enables a console error where we expect to throw (at 50 nested renders) while continuing to throw an error if that is hit 10 times (500 total nested renders being the new limit for throwing).

This is a temporary approach to allow us to collect more data about potential crashes in production, without introducing too many new crashes ourselves. We can measure the delta of warnings and crashes. The goal will be to make the mechanism smarter, maybe not counting prewarming passes for example, and/or adjusting the final limit to make it easier to enable this on existing apps.

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

react-sizebot commented Jul 9, 2025

Comparing: edac0dd...d5e57ce

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.05% 1.82 kB 1.83 kB
oss-stable/react-dom/cjs/react-dom-client.production.js = 530.70 kB 530.70 kB = 93.70 kB 93.70 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 = 655.25 kB 655.25 kB = 115.40 kB 115.40 kB
facebook-www/ReactDOM-prod.classic.js +0.12% 675.13 kB 675.94 kB +0.19% 118.75 kB 118.97 kB
facebook-www/ReactDOM-prod.modern.js +0.12% 665.56 kB 666.37 kB +0.19% 117.11 kB 117.34 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.development.js = 172.34 kB 167.16 kB = 30.52 kB 29.79 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.node.development.js = 172.22 kB 167.03 kB = 30.48 kB 29.76 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.unbundled.development.js = 171.01 kB 165.82 kB = 30.27 kB 29.54 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-client.node.development.js = 169.36 kB 164.17 kB = 29.99 kB 29.26 kB
oss-experimental/react-server-dom-esm/cjs/react-server-dom-esm-client.node.development.js = 167.24 kB 162.05 kB = 29.55 kB 28.83 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-client.browser.development.js = 166.75 kB 161.57 kB = 29.55 kB 28.82 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.browser.development.js = 166.16 kB 160.97 kB = 29.41 kB 28.68 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-client.browser.development.js = 165.16 kB 159.97 kB = 29.03 kB 28.29 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-client.edge.development.js = 167.16 kB 161.88 kB = 29.80 kB 29.10 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.edge.development.js = 167.03 kB 161.76 kB = 29.77 kB 29.07 kB
oss-experimental/react-server-dom-esm/cjs/react-server-dom-esm-client.browser.development.js = 164.01 kB 158.83 kB = 29.01 kB 28.27 kB
oss-experimental/react-client/cjs/react-client-flight.development.js = 159.92 kB 154.86 kB = 27.97 kB 27.22 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-client.edge.development.js = 164.03 kB 158.75 kB = 29.30 kB 28.59 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.development.js = 129.39 kB 124.72 kB = 23.65 kB 23.00 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.development.js = 129.39 kB 124.72 kB = 23.65 kB 23.00 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.node.development.js = 129.26 kB 124.60 kB = 23.61 kB 22.96 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.node.development.js = 129.26 kB 124.60 kB = 23.61 kB 22.96 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.unbundled.development.js = 128.06 kB 123.39 kB = 23.40 kB 22.75 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.unbundled.development.js = 128.06 kB 123.39 kB = 23.40 kB 22.75 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-client.node.development.js = 126.40 kB 121.74 kB = 23.11 kB 22.47 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-client.node.development.js = 126.40 kB 121.74 kB = 23.11 kB 22.47 kB
oss-experimental/react-server-dom-esm/esm/react-server-dom-esm-client.browser.development.js = 205.86 kB 198.23 kB = 45.35 kB 43.82 kB
oss-stable-semver/react-server-dom-esm/cjs/react-server-dom-esm-client.node.development.js = 124.28 kB 119.62 kB = 22.66 kB 22.01 kB
oss-stable/react-server-dom-esm/cjs/react-server-dom-esm-client.node.development.js = 124.28 kB 119.62 kB = 22.66 kB 22.01 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-client.browser.development.js = 123.79 kB 119.12 kB = 22.75 kB 22.08 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-client.browser.development.js = 123.74 kB 119.07 kB = 22.72 kB 22.05 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.browser.development.js = 123.20 kB 118.53 kB = 22.60 kB 21.94 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.browser.development.js = 123.15 kB 118.48 kB = 22.58 kB 21.92 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-client.edge.development.js = 124.16 kB 119.45 kB = 22.89 kB 22.24 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-client.edge.development.js = 124.16 kB 119.45 kB = 22.89 kB 22.24 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.edge.development.js = 124.04 kB 119.32 kB = 22.85 kB 22.21 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.edge.development.js = 124.04 kB 119.32 kB = 22.85 kB 22.21 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-client.browser.development.js = 122.19 kB 117.52 kB = 22.21 kB 21.58 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-client.browser.development.js = 122.14 kB 117.47 kB = 22.18 kB 21.55 kB
oss-stable/react-server-dom-esm/cjs/react-server-dom-esm-client.browser.development.js = 121.05 kB 116.38 kB = 22.21 kB 21.55 kB
oss-stable-semver/react-server-dom-esm/cjs/react-server-dom-esm-client.browser.development.js = 121.00 kB 116.33 kB = 22.19 kB 21.52 kB
oss-stable/react-client/cjs/react-client-flight.development.js = 116.96 kB 112.42 kB = 21.11 kB 20.43 kB
oss-stable-semver/react-client/cjs/react-client-flight.development.js = 116.94 kB 112.40 kB = 21.09 kB 20.41 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-client.edge.development.js = 121.03 kB 116.32 kB = 22.38 kB 21.74 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-client.edge.development.js = 121.03 kB 116.32 kB = 22.38 kB 21.74 kB
oss-stable/react-server-dom-esm/esm/react-server-dom-esm-client.browser.development.js = 168.74 kB 161.77 kB = 38.40 kB 37.02 kB
oss-stable-semver/react-server-dom-esm/esm/react-server-dom-esm-client.browser.development.js = 168.71 kB 161.74 kB = 38.37 kB 37.00 kB

Significant size changes

Includes any change greater than 0.2%:

Expand to show
Name +/- Base Current +/- gzip Base gzip Current gzip
facebook-www/ReactART-prod.modern.js +0.22% 374.38 kB 375.19 kB +0.33% 62.77 kB 62.98 kB
facebook-www/ReactART-prod.classic.js +0.21% 384.22 kB 385.03 kB +0.33% 64.37 kB 64.58 kB
oss-experimental/react-server-dom-esm/esm/react-server-dom-esm-client.browser.production.js = 90.59 kB 90.17 kB = 18.77 kB 18.73 kB
oss-stable-semver/react-server-dom-esm/esm/react-server-dom-esm-client.browser.production.js = 89.85 kB 89.43 kB = 18.65 kB 18.61 kB
oss-stable/react-server-dom-esm/esm/react-server-dom-esm-client.browser.production.js = 89.85 kB 89.43 kB = 18.65 kB 18.61 kB
oss-experimental/react-server/cjs/react-server-flight.development.js = 142.10 kB 141.32 kB = 25.40 kB 25.25 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.production.js = 69.25 kB 68.84 kB = 13.67 kB 13.61 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.node.production.js = 69.13 kB 68.72 kB = 13.64 kB 13.58 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.production.js = 68.70 kB 68.28 kB = 13.56 kB 13.50 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.production.js = 68.70 kB 68.28 kB = 13.56 kB 13.50 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.node.production.js = 68.58 kB 68.17 kB = 13.54 kB 13.48 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.node.production.js = 68.58 kB 68.17 kB = 13.54 kB 13.48 kB
oss-stable-semver/react-server/cjs/react-server-flight.development.js = 132.94 kB 132.14 kB = 23.86 kB 23.70 kB
oss-stable/react-server/cjs/react-server-flight.development.js = 132.94 kB 132.14 kB = 23.86 kB 23.70 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.unbundled.production.js = 68.08 kB 67.67 kB = 13.42 kB 13.36 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.unbundled.production.js = 67.52 kB 67.11 kB = 13.32 kB 13.26 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.unbundled.production.js = 67.52 kB 67.11 kB = 13.32 kB 13.26 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-client.node.production.js = 65.99 kB 65.58 kB = 13.02 kB 12.95 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-client.node.production.js = 65.43 kB 65.02 kB = 12.91 kB 12.85 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-client.node.production.js = 65.43 kB 65.02 kB = 12.91 kB 12.85 kB
oss-experimental/react-server-dom-esm/cjs/react-server-dom-esm-client.node.production.js = 65.32 kB 64.91 kB = 12.79 kB 12.73 kB
oss-stable-semver/react-server-dom-esm/cjs/react-server-dom-esm-client.node.production.js = 64.77 kB 64.35 kB = 12.68 kB 12.62 kB
oss-stable/react-server-dom-esm/cjs/react-server-dom-esm-client.node.production.js = 64.77 kB 64.35 kB = 12.68 kB 12.62 kB
oss-experimental/react-client/cjs/react-client-flight.production.js = 64.33 kB 63.89 kB = 11.79 kB 11.72 kB
oss-stable/react-client/cjs/react-client-flight.production.js = 63.84 kB 63.41 kB = 11.70 kB 11.64 kB
oss-stable-semver/react-client/cjs/react-client-flight.production.js = 63.82 kB 63.38 kB = 11.68 kB 11.61 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-client.edge.production.js = 65.09 kB 64.65 kB = 13.04 kB 12.97 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.edge.production.js = 64.98 kB 64.53 kB = 13.02 kB 12.95 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-client.edge.production.js = 64.52 kB 64.08 kB = 12.93 kB 12.88 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-client.edge.production.js = 64.52 kB 64.08 kB = 12.93 kB 12.88 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.edge.production.js = 64.40 kB 63.96 kB = 12.91 kB 12.85 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.edge.production.js = 64.40 kB 63.96 kB = 12.91 kB 12.85 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-client.edge.production.js = 61.96 kB 61.51 kB = 12.41 kB 12.35 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-client.edge.production.js = 61.38 kB 60.94 kB = 12.30 kB 12.25 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-client.edge.production.js = 61.38 kB 60.94 kB = 12.30 kB 12.25 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-client.browser.production.js = 59.17 kB 58.73 kB = 11.81 kB 11.74 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.browser.production.js = 58.70 kB 58.26 kB = 11.71 kB 11.64 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-client.browser.production.js = 58.59 kB 58.15 kB = 11.70 kB 11.64 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-client.browser.production.js = 58.59 kB 58.15 kB = 11.70 kB 11.64 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.browser.production.js = 58.13 kB 57.69 kB = 11.60 kB 11.54 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.browser.production.js = 58.13 kB 57.69 kB = 11.60 kB 11.54 kB
oss-experimental/react-server/cjs/react-server-flight.production.js = 68.27 kB 67.74 kB = 13.46 kB 13.32 kB
oss-experimental/react-server-dom-esm/cjs/react-server-dom-esm-client.browser.production.js = 56.83 kB 56.38 kB = 11.31 kB 11.25 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-client.browser.production.js = 56.61 kB 56.17 kB = 11.23 kB 11.16 kB
oss-stable-semver/react-server-dom-esm/cjs/react-server-dom-esm-client.browser.production.js = 56.25 kB 55.81 kB = 11.21 kB 11.15 kB
oss-stable/react-server-dom-esm/cjs/react-server-dom-esm-client.browser.production.js = 56.25 kB 55.81 kB = 11.21 kB 11.15 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-client.browser.production.js = 56.04 kB 55.59 kB = 11.11 kB 11.06 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-client.browser.production.js = 56.04 kB 55.59 kB = 11.11 kB 11.06 kB
oss-stable-semver/react-server/cjs/react-server-flight.production.js = 62.44 kB 61.91 kB = 12.56 kB 12.43 kB
oss-stable/react-server/cjs/react-server-flight.production.js = 62.44 kB 61.91 kB = 12.56 kB 12.43 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js = 220.73 kB 218.44 kB = 39.77 kB 39.43 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js = 220.67 kB 218.39 kB = 39.76 kB 39.42 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.development.js = 219.52 kB 217.23 kB = 39.47 kB 39.13 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.development.js = 212.79 kB 210.50 kB = 38.37 kB 37.99 kB
oss-experimental/react-server-dom-esm/cjs/react-server-dom-esm-server.node.development.js = 206.29 kB 204.00 kB = 37.70 kB 37.31 kB
oss-experimental/react-markup/cjs/react-markup.react-server.development.js = 654.26 kB 646.95 kB = 115.27 kB 114.25 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.development.js = 172.34 kB 167.16 kB = 30.52 kB 29.79 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.node.development.js = 172.22 kB 167.03 kB = 30.48 kB 29.76 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.unbundled.development.js = 171.01 kB 165.82 kB = 30.27 kB 29.54 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-client.node.development.js = 169.36 kB 164.17 kB = 29.99 kB 29.26 kB
oss-experimental/react-server-dom-esm/cjs/react-server-dom-esm-client.node.development.js = 167.24 kB 162.05 kB = 29.55 kB 28.83 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-client.browser.development.js = 166.75 kB 161.57 kB = 29.55 kB 28.82 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.browser.development.js = 166.16 kB 160.97 kB = 29.41 kB 28.68 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-client.browser.development.js = 165.16 kB 159.97 kB = 29.03 kB 28.29 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-client.edge.development.js = 167.16 kB 161.88 kB = 29.80 kB 29.10 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.edge.development.js = 167.03 kB 161.76 kB = 29.77 kB 29.07 kB
oss-experimental/react-server-dom-esm/cjs/react-server-dom-esm-client.browser.development.js = 164.01 kB 158.83 kB = 29.01 kB 28.27 kB
oss-experimental/react-client/cjs/react-client-flight.development.js = 159.92 kB 154.86 kB = 27.97 kB 27.22 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-client.edge.development.js = 164.03 kB 158.75 kB = 29.30 kB 28.59 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.development.js = 129.39 kB 124.72 kB = 23.65 kB 23.00 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.development.js = 129.39 kB 124.72 kB = 23.65 kB 23.00 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.node.development.js = 129.26 kB 124.60 kB = 23.61 kB 22.96 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.node.development.js = 129.26 kB 124.60 kB = 23.61 kB 22.96 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.unbundled.development.js = 128.06 kB 123.39 kB = 23.40 kB 22.75 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.unbundled.development.js = 128.06 kB 123.39 kB = 23.40 kB 22.75 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-client.node.development.js = 126.40 kB 121.74 kB = 23.11 kB 22.47 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-client.node.development.js = 126.40 kB 121.74 kB = 23.11 kB 22.47 kB
oss-experimental/react-server-dom-esm/esm/react-server-dom-esm-client.browser.development.js = 205.86 kB 198.23 kB = 45.35 kB 43.82 kB
oss-stable-semver/react-server-dom-esm/cjs/react-server-dom-esm-client.node.development.js = 124.28 kB 119.62 kB = 22.66 kB 22.01 kB
oss-stable/react-server-dom-esm/cjs/react-server-dom-esm-client.node.development.js = 124.28 kB 119.62 kB = 22.66 kB 22.01 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-client.browser.development.js = 123.79 kB 119.12 kB = 22.75 kB 22.08 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-client.browser.development.js = 123.74 kB 119.07 kB = 22.72 kB 22.05 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.browser.development.js = 123.20 kB 118.53 kB = 22.60 kB 21.94 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.browser.development.js = 123.15 kB 118.48 kB = 22.58 kB 21.92 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-client.edge.development.js = 124.16 kB 119.45 kB = 22.89 kB 22.24 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-client.edge.development.js = 124.16 kB 119.45 kB = 22.89 kB 22.24 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.edge.development.js = 124.04 kB 119.32 kB = 22.85 kB 22.21 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.edge.development.js = 124.04 kB 119.32 kB = 22.85 kB 22.21 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-client.browser.development.js = 122.19 kB 117.52 kB = 22.21 kB 21.58 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-client.browser.development.js = 122.14 kB 117.47 kB = 22.18 kB 21.55 kB
oss-stable/react-server-dom-esm/cjs/react-server-dom-esm-client.browser.development.js = 121.05 kB 116.38 kB = 22.21 kB 21.55 kB
oss-stable-semver/react-server-dom-esm/cjs/react-server-dom-esm-client.browser.development.js = 121.00 kB 116.33 kB = 22.19 kB 21.52 kB
oss-stable/react-client/cjs/react-client-flight.development.js = 116.96 kB 112.42 kB = 21.11 kB 20.43 kB
oss-stable-semver/react-client/cjs/react-client-flight.development.js = 116.94 kB 112.40 kB = 21.09 kB 20.41 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-client.edge.development.js = 121.03 kB 116.32 kB = 22.38 kB 21.74 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-client.edge.development.js = 121.03 kB 116.32 kB = 22.38 kB 21.74 kB
oss-stable/react-server-dom-esm/esm/react-server-dom-esm-client.browser.development.js = 168.74 kB 161.77 kB = 38.40 kB 37.02 kB
oss-stable-semver/react-server-dom-esm/esm/react-server-dom-esm-client.browser.development.js = 168.71 kB 161.74 kB = 38.37 kB 37.00 kB

Generated by 🚫 dangerJS against d5e57ce

@jackpope jackpope requested a review from rickhanlonii July 9, 2025 19:31
@jackpope jackpope force-pushed the log-nested-loops branch from c768fa0 to cfa1d1e Compare July 9, 2025 20:16
@jackpope jackpope changed the title Add console errors for potential nested infinite loop before throwing Add logger for potential nested infinite loop before throwing Jul 23, 2025
@jackpope jackpope requested a review from kassens July 23, 2025 15:14
…rowing

Gather production data in a `enableInfiniteLoopDetection` experiment around existing potential infinite loops.

We disabled `enableInfiniteLoopDetection` with facebook#31088 as it was introducing new crashes that were hard to debug, especially with sibling prewarming.

One issue with the previous rollout is that we were introducing new crashes for components that may have settled after the 50 pass limit, but before a real crash or infinite loop. This happened more frequently after enabling sibling prewarming which in some cases increased render counts that may have already been close to the limit.

This change enables an injectable logging function where we used to throw (at 50 nested renders) while continuing to throw an error if that is hit 10 times (500 total nested renders being the new limit for throwing).

This is a temporary mechanism to allow us to collect more data about potential crashes in production, without introducing new crashes ourselves. The goal will be to design a smarter mechanism, maybe not counting prewarming passes for example, and/or adjusting the final limit to make it easier to enable this on existing apps.
@jackpope jackpope closed this Sep 30, 2025
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