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

Turbopack: don't generate CSS for Node.js #75117

Open
wants to merge 24 commits into
base: canary
Choose a base branch
from
Open

Conversation

mischnic
Copy link
Contributor

@mischnic mischnic commented Jan 20, 2025

  1. Make the SSR asset context a FullContextTransition to not inherit the RSC transitions
  2. Insert proper CSS client reference marker modules: for regular CSS, immediately. for CSS Modules, for the referenced real CSS (and not for the JS part)
  3. A consequence of 2.: RSC doesn't chunk CSS client references anymore, because they are ChunkingType::Isolated
  4. Add module rules to SSR to ignore CSS references (similar to 2.)

Memory usage went slightly down: 38.96gb -> 38.23gb
CPU time went down: 784.97s -> 747.57s
There are 200.000 fewer emit asset calls (so 20%).

@ijjk ijjk added created-by: Turbopack team PRs by the Turbopack team. Turbopack Related to Turbopack with Next.js. labels Jan 20, 2025
Copy link
Contributor Author

mischnic commented Jan 20, 2025

This stack of pull requests is managed by Graphite. Learn more about stacking.

@mischnic mischnic changed the title FullContextTransition for SSR Turbopack: no CSS in SSR Jan 20, 2025
@mischnic mischnic marked this pull request as ready for review January 20, 2025 19:46
@ijjk
Copy link
Member

ijjk commented Jan 20, 2025

Tests Passed

@ijjk
Copy link
Member

ijjk commented Jan 20, 2025

Stats from current PR

Default Build
General
vercel/next.js canary vercel/next.js mischnic/no-ssr-css Change
buildDuration 18.4s 19.7s ⚠️ +1.3s
buildDurationCached 15.3s 12.9s N/A
nodeModulesSize 418 MB 418 MB N/A
nextStartRea..uration (ms) 421ms 427ms N/A
Client Bundles (main, webpack)
vercel/next.js canary vercel/next.js mischnic/no-ssr-css Change
5306-HASH.js gzip 54 kB 54 kB N/A
8276.HASH.js gzip 169 B 168 B N/A
8377-HASH.js gzip 5.46 kB 5.46 kB N/A
bccd1874-HASH.js gzip 52.9 kB 52.9 kB
framework-HASH.js gzip 57.5 kB 57.5 kB N/A
main-app-HASH.js gzip 241 B 242 B N/A
main-HASH.js gzip 34.6 kB 34.4 kB N/A
webpack-HASH.js gzip 1.71 kB 1.71 kB N/A
Overall change 52.9 kB 52.9 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js mischnic/no-ssr-css Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB
Overall change 39.4 kB 39.4 kB
Client Pages
vercel/next.js canary vercel/next.js mischnic/no-ssr-css Change
_app-HASH.js gzip 193 B 193 B
_error-HASH.js gzip 193 B 193 B
amp-HASH.js gzip 512 B 510 B N/A
css-HASH.js gzip 343 B 342 B N/A
dynamic-HASH.js gzip 1.84 kB 1.84 kB
edge-ssr-HASH.js gzip 265 B 265 B
head-HASH.js gzip 363 B 362 B N/A
hooks-HASH.js gzip 393 B 392 B N/A
image-HASH.js gzip 4.59 kB 4.58 kB N/A
index-HASH.js gzip 268 B 268 B
link-HASH.js gzip 2.35 kB 2.35 kB N/A
routerDirect..HASH.js gzip 328 B 328 B
script-HASH.js gzip 397 B 397 B
withRouter-HASH.js gzip 323 B 326 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 3.59 kB 3.59 kB
Client Build Manifests
vercel/next.js canary vercel/next.js mischnic/no-ssr-css Change
_buildManifest.js gzip 748 B 747 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js mischnic/no-ssr-css Change
index.html gzip 524 B 523 B N/A
link.html gzip 540 B 538 B N/A
withRouter.html gzip 520 B 520 B
Overall change 520 B 520 B
Edge SSR bundle Size
vercel/next.js canary vercel/next.js mischnic/no-ssr-css Change
edge-ssr.js gzip 129 kB 129 kB N/A
page.js gzip 208 kB 208 kB N/A
Overall change 0 B 0 B
Middleware size
vercel/next.js canary vercel/next.js mischnic/no-ssr-css Change
middleware-b..fest.js gzip 670 B 665 B N/A
middleware-r..fest.js gzip 155 B 156 B N/A
middleware.js gzip 31.3 kB 31.3 kB N/A
edge-runtime..pack.js gzip 844 B 844 B
Overall change 844 B 844 B
Next Runtimes
vercel/next.js canary vercel/next.js mischnic/no-ssr-css Change
274-experime...dev.js gzip 322 B 322 B
274.runtime.dev.js gzip 314 B 314 B
app-page-exp...dev.js gzip 375 kB 375 kB N/A
app-page-exp..prod.js gzip 130 kB 130 kB N/A
app-page-tur..prod.js gzip 143 kB 143 kB N/A
app-page-tur..prod.js gzip 139 kB 139 kB N/A
app-page.run...dev.js gzip 363 kB 363 kB N/A
app-page.run..prod.js gzip 126 kB 126 kB N/A
app-route-ex...dev.js gzip 37.6 kB 37.6 kB
app-route-ex..prod.js gzip 25.6 kB 25.6 kB
app-route-tu..prod.js gzip 25.6 kB 25.6 kB
app-route-tu..prod.js gzip 25.4 kB 25.4 kB
app-route.ru...dev.js gzip 39.2 kB 39.2 kB
app-route.ru..prod.js gzip 25.4 kB 25.4 kB
pages-api-tu..prod.js gzip 9.69 kB 9.69 kB
pages-api.ru...dev.js gzip 11.6 kB 11.6 kB
pages-api.ru..prod.js gzip 9.68 kB 9.68 kB
pages-turbo...prod.js gzip 21.9 kB 21.9 kB
pages.runtim...dev.js gzip 27.7 kB 27.7 kB
pages.runtim..prod.js gzip 21.9 kB 21.9 kB
server.runti..prod.js gzip 916 kB 916 kB N/A
Overall change 282 kB 282 kB
build cache
vercel/next.js canary vercel/next.js mischnic/no-ssr-css Change
0.pack gzip 2.1 MB 2.1 MB N/A
index.pack gzip 74.4 kB 74.4 kB N/A
Overall change 0 B 0 B
Diff details
Diff for edge-ssr.js

Diff too large to display

Diff for 5306-HASH.js

Diff too large to display

Diff for main-HASH.js

Diff too large to display

Diff for app-page-exp..ntime.dev.js

Diff too large to display

Diff for app-page-exp..time.prod.js

Diff too large to display

Diff for app-page-tur..time.prod.js

Diff too large to display

Diff for app-page-tur..time.prod.js

Diff too large to display

Diff for app-page.runtime.dev.js

Diff too large to display

Diff for app-page.runtime.prod.js

Diff too large to display

Diff for server.runtime.prod.js

Diff too large to display

Commit: a31cfb6

@mischnic mischnic marked this pull request as draft January 20, 2025 19:59
@mischnic mischnic changed the title Turbopack: no CSS in SSR Turbopack: no CSS for Node.js Jan 21, 2025
@mischnic mischnic changed the title Turbopack: no CSS for Node.js Turbopack: don't generate CSS for Node.js Jan 21, 2025
@mischnic mischnic force-pushed the mischnic/no-ssr-css branch from be3f42b to 6c724c5 Compare January 21, 2025 14:15
@ijjk ijjk added the tests label Jan 21, 2025
@mischnic mischnic changed the base branch from canary to mischnic/css-chunking-isolated January 21, 2025 14:15
@mischnic mischnic force-pushed the mischnic/css-chunking-isolated branch from 8a99ac5 to 5e2a1c0 Compare January 21, 2025 19:34
@mischnic mischnic force-pushed the mischnic/no-ssr-css branch 2 times, most recently from bd88710 to 886d6b9 Compare January 21, 2025 20:06
@mischnic mischnic force-pushed the mischnic/no-ssr-css branch from 886d6b9 to ab4add3 Compare January 22, 2025 10:00
@mischnic mischnic changed the base branch from mischnic/css-chunking-isolated to canary January 22, 2025 12:42
@mischnic mischnic marked this pull request as ready for review January 22, 2025 13:03
@mischnic mischnic requested a review from sokra January 22, 2025 13:03
@mischnic
Copy link
Contributor Author

I've unstacked this from #75139, because I ended up simplifying CSS client references (by handling the CSS Modules differently)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
created-by: Turbopack team PRs by the Turbopack team. tests Turbopack Related to Turbopack with Next.js.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants