Skip to content
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’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Flight] use microtask for scheduling during prerenders #30768

Merged
merged 1 commit into from
Aug 21, 2024

Conversation

gnoff
Copy link
Collaborator

@gnoff gnoff commented Aug 21, 2024

In #29491 I updated the work scheduler for Flight to use microtasks to perform work when something pings. This is useful but it does have some downsides in terms of our ability to do task prioritization. Additionally the initial work is not instantiated using a microtask which is inconsistent with how pings work.

In this change I update the scheduling logic to use microtasks consistently for prerenders and use regular tasks for renders both for the initial work and pings.

Copy link

vercel bot commented Aug 21, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
react-compiler-playground ✅ Ready (Inspect) Visit Preview 💬 Add feedback Aug 21, 2024 4:36am

@react-sizebot
Copy link

react-sizebot commented Aug 21, 2024

Comparing: e831c23...191a16d

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.82 kB
oss-stable/react-dom/cjs/react-dom-client.production.js = 500.37 kB 500.37 kB = 89.80 kB 89.80 kB
oss-experimental/react-dom/cjs/react-dom.production.js = 6.69 kB 6.69 kB = 1.83 kB 1.83 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js = 507.50 kB 507.50 kB = 90.96 kB 90.96 kB
facebook-www/ReactDOM-prod.classic.js = 595.24 kB 595.24 kB = 105.55 kB 105.55 kB
facebook-www/ReactDOM-prod.modern.js = 571.54 kB 571.54 kB = 101.75 kB 101.75 kB

Significant size changes

Includes any change greater than 0.2%:

Expand to show
Name +/- Base Current +/- gzip Base gzip Current gzip
oss-stable-rc/react-server/cjs/react-server-flight.production.js +0.44% 58.15 kB 58.41 kB +0.30% 11.55 kB 11.59 kB
oss-stable-semver/react-server/cjs/react-server-flight.production.js +0.44% 58.15 kB 58.41 kB +0.30% 11.55 kB 11.59 kB
oss-stable/react-server/cjs/react-server-flight.production.js +0.44% 58.15 kB 58.41 kB +0.30% 11.55 kB 11.59 kB
oss-stable-rc/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.js +0.43% 91.90 kB 92.29 kB +0.14% 18.86 kB 18.89 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.js +0.43% 91.90 kB 92.29 kB +0.14% 18.86 kB 18.89 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.js +0.43% 91.90 kB 92.29 kB +0.14% 18.86 kB 18.89 kB
oss-stable-rc/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.production.js +0.43% 91.92 kB 92.31 kB +0.14% 18.86 kB 18.89 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.production.js +0.43% 91.92 kB 92.31 kB +0.14% 18.86 kB 18.89 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.production.js +0.43% 91.92 kB 92.31 kB +0.14% 18.86 kB 18.89 kB
oss-experimental/react-server/cjs/react-server-flight.production.js +0.40% 64.39 kB 64.64 kB +0.27% 12.50 kB 12.54 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.js +0.39% 99.12 kB 99.51 kB +0.13% 19.90 kB 19.93 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.production.js +0.39% 99.15 kB 99.54 kB +0.13% 19.90 kB 19.92 kB
oss-stable-rc/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.development.js +0.33% 133.25 kB 133.69 kB +0.28% 24.67 kB 24.74 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.development.js +0.33% 133.25 kB 133.69 kB +0.28% 24.67 kB 24.74 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.development.js +0.33% 133.25 kB 133.69 kB +0.28% 24.67 kB 24.74 kB
oss-stable-rc/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js +0.33% 133.40 kB 133.84 kB +0.27% 24.74 kB 24.80 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js +0.33% 133.40 kB 133.84 kB +0.27% 24.74 kB 24.80 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js +0.33% 133.40 kB 133.84 kB +0.27% 24.74 kB 24.80 kB
oss-stable-rc/react-server/cjs/react-server-flight.development.js +0.31% 88.83 kB 89.11 kB +0.28% 16.32 kB 16.37 kB
oss-stable-semver/react-server/cjs/react-server-flight.development.js +0.31% 88.83 kB 89.11 kB +0.28% 16.32 kB 16.37 kB
oss-stable/react-server/cjs/react-server-flight.development.js +0.31% 88.83 kB 89.11 kB +0.28% 16.32 kB 16.37 kB
oss-stable-rc/react-server-dom-esm/cjs/react-server-dom-esm-server.node.production.js +0.30% 88.41 kB 88.67 kB +0.12% 18.35 kB 18.37 kB
oss-stable-semver/react-server-dom-esm/cjs/react-server-dom-esm-server.node.production.js +0.30% 88.41 kB 88.67 kB +0.12% 18.35 kB 18.37 kB
oss-stable/react-server-dom-esm/cjs/react-server-dom-esm-server.node.production.js +0.30% 88.41 kB 88.67 kB +0.12% 18.35 kB 18.37 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.development.js +0.29% 153.58 kB 154.03 kB +0.22% 27.73 kB 27.79 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js +0.29% 153.73 kB 154.18 kB +0.23% 27.79 kB 27.86 kB
oss-stable-rc/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.production.js +0.28% 94.07 kB 94.33 kB +0.09% 19.23 kB 19.25 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.production.js +0.28% 94.07 kB 94.33 kB +0.09% 19.23 kB 19.25 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.production.js +0.28% 94.07 kB 94.33 kB +0.09% 19.23 kB 19.25 kB
oss-stable-rc/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.unbundled.production.js +0.28% 94.08 kB 94.35 kB +0.09% 19.23 kB 19.25 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.unbundled.production.js +0.28% 94.08 kB 94.35 kB +0.09% 19.23 kB 19.25 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.unbundled.production.js +0.28% 94.08 kB 94.35 kB +0.09% 19.23 kB 19.25 kB
oss-stable-rc/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.production.js +0.27% 95.02 kB 95.28 kB +0.10% 19.43 kB 19.45 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.production.js +0.27% 95.02 kB 95.28 kB +0.10% 19.43 kB 19.45 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.production.js +0.27% 95.02 kB 95.28 kB +0.10% 19.43 kB 19.45 kB
oss-stable-rc/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.production.js +0.27% 95.05 kB 95.31 kB +0.11% 19.43 kB 19.45 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.production.js +0.27% 95.05 kB 95.31 kB +0.11% 19.43 kB 19.45 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.production.js +0.27% 95.05 kB 95.31 kB +0.11% 19.43 kB 19.45 kB
oss-experimental/react-server-dom-esm/cjs/react-server-dom-esm-server.node.production.js +0.27% 95.53 kB 95.79 kB +0.06% 19.43 kB 19.44 kB
oss-experimental/react-server/cjs/react-server-flight.development.js +0.27% 105.93 kB 106.22 kB +0.17% 19.08 kB 19.11 kB
oss-stable-rc/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.production.js +0.26% 91.56 kB 91.80 kB +0.12% 18.76 kB 18.78 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.production.js +0.26% 91.56 kB 91.80 kB +0.12% 18.76 kB 18.78 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.production.js +0.26% 91.56 kB 91.80 kB +0.12% 18.76 kB 18.78 kB
oss-stable-rc/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.production.js +0.26% 91.88 kB 92.12 kB +0.12% 18.85 kB 18.87 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.production.js +0.26% 91.88 kB 92.12 kB +0.12% 18.85 kB 18.87 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.production.js +0.26% 91.88 kB 92.12 kB +0.12% 18.85 kB 18.87 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.production.js +0.26% 101.18 kB 101.44 kB +0.06% 20.31 kB 20.32 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.unbundled.production.js +0.26% 101.21 kB 101.47 kB +0.06% 20.32 kB 20.33 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.production.js +0.26% 102.14 kB 102.40 kB +0.08% 20.58 kB 20.60 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.production.js +0.26% 102.17 kB 102.43 kB +0.08% 20.58 kB 20.59 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.production.js +0.24% 98.70 kB 98.94 kB +0.34% 19.74 kB 19.81 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.production.js +0.24% 99.02 kB 99.26 kB +0.10% 19.89 kB 19.91 kB
oss-stable-rc/react-server-dom-esm/cjs/react-server-dom-esm-server.node.development.js +0.23% 128.30 kB 128.59 kB +0.17% 23.83 kB 23.87 kB
oss-stable-semver/react-server-dom-esm/cjs/react-server-dom-esm-server.node.development.js +0.23% 128.30 kB 128.59 kB +0.17% 23.83 kB 23.87 kB
oss-stable/react-server-dom-esm/cjs/react-server-dom-esm-server.node.development.js +0.23% 128.30 kB 128.59 kB +0.17% 23.83 kB 23.87 kB
oss-stable-rc/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.unbundled.development.js +0.22% 134.67 kB 134.96 kB +0.19% 24.80 kB 24.84 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.unbundled.development.js +0.22% 134.67 kB 134.96 kB +0.19% 24.80 kB 24.84 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.unbundled.development.js +0.22% 134.67 kB 134.96 kB +0.19% 24.80 kB 24.84 kB
oss-stable-rc/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.development.js +0.22% 134.83 kB 135.12 kB +0.19% 24.86 kB 24.91 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.development.js +0.22% 134.83 kB 135.12 kB +0.19% 24.86 kB 24.91 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.development.js +0.22% 134.83 kB 135.12 kB +0.19% 24.86 kB 24.91 kB
oss-stable-rc/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js +0.22% 135.78 kB 136.08 kB +0.19% 25.08 kB 25.13 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js +0.22% 135.78 kB 136.08 kB +0.19% 25.08 kB 25.13 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js +0.22% 135.78 kB 136.08 kB +0.19% 25.08 kB 25.13 kB
oss-stable-rc/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js +0.22% 135.93 kB 136.22 kB +0.19% 25.15 kB 25.20 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js +0.22% 135.93 kB 136.22 kB +0.19% 25.15 kB 25.20 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js +0.22% 135.93 kB 136.22 kB +0.19% 25.15 kB 25.20 kB
oss-experimental/react-server-dom-esm/cjs/react-server-dom-esm-server.node.development.js +0.21% 147.83 kB 148.13 kB +0.16% 26.96 kB 27.00 kB
oss-stable-rc/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.development.js +0.21% 132.05 kB 132.32 kB +0.20% 24.45 kB 24.50 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.development.js +0.21% 132.05 kB 132.32 kB +0.20% 24.45 kB 24.50 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.development.js +0.21% 132.05 kB 132.32 kB +0.20% 24.45 kB 24.50 kB
oss-stable-rc/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.development.js +0.20% 132.67 kB 132.94 kB +0.15% 24.64 kB 24.68 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.development.js +0.20% 132.67 kB 132.94 kB +0.15% 24.64 kB 24.68 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.development.js +0.20% 132.67 kB 132.94 kB +0.15% 24.64 kB 24.68 kB

Generated by 🚫 dangerJS against 8b02df1

gnoff added a commit to gnoff/react that referenced this pull request Aug 21, 2024
…erendering

Similar to facebook#30768 we want to schedule work during prerendering in microtasks both for the root task and pings. We continue to schedule flushes as Tasks to allow as much work to be batched up as possible.
In facebook#29491 I updated the work scheduler for Flight to use microtasks to perform work when something pings. This is useful but it does have some downsides in terms of our ability to do task prioritization. Additionally the initial work is not instantiated using a microtask which is inconsistent with how pings work.

In this change I update the scheduling logic to use microtasks consistently for prerenders and use regular tasks for renders both for the initial work and pings.
@gnoff gnoff merged commit dc32c7f into facebook:main Aug 21, 2024
185 checks passed
@gnoff gnoff deleted the prerender-timing branch August 21, 2024 04:43
gnoff added a commit to gnoff/react that referenced this pull request Aug 21, 2024
…erendering

Similar to facebook#30768 we want to schedule work during prerendering in microtasks both for the root task and pings. We continue to schedule flushes as Tasks to allow as much work to be batched up as possible.
gnoff added a commit that referenced this pull request Aug 21, 2024
…erendering (#30770)

Similar to #30768 we want to
schedule work during prerendering in microtasks both for the root task
and pings. We continue to schedule flushes as Tasks to allow as much
work to be batched up as possible.
github-actions bot pushed a commit that referenced this pull request Aug 21, 2024
…erendering (#30770)

Similar to #30768 we want to
schedule work during prerendering in microtasks both for the root task
and pings. We continue to schedule flushes as Tasks to allow as much
work to be batched up as possible.

DiffTrain build for [ab24f64](ab24f64)
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