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

Update bundler for pre-bundling runtime #75294

Merged
merged 4 commits into from
Jan 24, 2025
Merged

Conversation

ijjk
Copy link
Member

@ijjk ijjk commented Jan 24, 2025

This improves the build script quite a bit and makes dev editing much faster. Also fixed excludes causing webpack/babel compiled packages to be bundled into the runtime un-necessarily reducing from 10MB -> 1.2MB.

Before: Finished next_bundle in 9.67s

After: Finished next_bundle in 1.27s

Validated here https://github.com/vercel/vercel/actions/runs/12957911052/job/36147343396?pr=12914

@ijjk ijjk added created-by: Next.js team PRs by the Next.js team. type: next labels Jan 24, 2025
@ijjk
Copy link
Member Author

ijjk commented Jan 24, 2025

Stats from current PR

Default Build (Increase detected ⚠️)
General
vercel/next.js canary vercel/next.js ijjk/use-rspack-for-prebundle Change
buildDuration 20.3s 16.5s N/A
buildDurationCached 16.3s 12.9s N/A
nodeModulesSize 419 MB 389 MB N/A
nextStartRea..uration (ms) 439ms 442ms N/A
Client Bundles (main, webpack)
vercel/next.js canary vercel/next.js ijjk/use-rspack-for-prebundle Change
5306-HASH.js gzip 54.1 kB 54.1 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 N/A
framework-HASH.js gzip 57.5 kB 57.5 kB N/A
main-app-HASH.js gzip 240 B 242 B N/A
main-HASH.js gzip 34.6 kB 34.6 kB N/A
webpack-HASH.js gzip 1.71 kB 1.71 kB N/A
Overall change 0 B 0 B
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js ijjk/use-rspack-for-prebundle 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 ijjk/use-rspack-for-prebundle 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 ijjk/use-rspack-for-prebundle 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 ijjk/use-rspack-for-prebundle Change
index.html gzip 523 B 523 B
link.html gzip 538 B 539 B N/A
withRouter.html gzip 518 B 521 B N/A
Overall change 523 B 523 B
Edge SSR bundle Size
vercel/next.js canary vercel/next.js ijjk/use-rspack-for-prebundle Change
edge-ssr.js gzip 129 kB 129 kB N/A
page.js gzip 210 kB 210 kB N/A
Overall change 0 B 0 B
Middleware size
vercel/next.js canary vercel/next.js ijjk/use-rspack-for-prebundle Change
middleware-b..fest.js gzip 669 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 ijjk/use-rspack-for-prebundle Change
274-experime...dev.js gzip 322 B N/A N/A
274.runtime.dev.js gzip 314 B N/A N/A
app-page-exp...dev.js gzip 378 kB 308 kB N/A
app-page-exp..prod.js gzip 132 kB 131 kB N/A
app-page-tur..prod.js gzip 145 kB 144 kB N/A
app-page-tur..prod.js gzip 141 kB 140 kB N/A
app-page.run...dev.js gzip 365 kB 300 kB N/A
app-page.run..prod.js gzip 128 kB 128 kB N/A
app-route-ex...dev.js gzip 37.6 kB 31.8 kB N/A
app-route-ex..prod.js gzip 25.6 kB 25 kB N/A
app-route-tu..prod.js gzip 25.6 kB 25 kB N/A
app-route-tu..prod.js gzip 25.4 kB 24.8 kB N/A
app-route.ru...dev.js gzip 39.2 kB 33.1 kB N/A
app-route.ru..prod.js gzip 25.4 kB 24.8 kB N/A
pages-api-tu..prod.js gzip 9.69 kB 8.81 kB N/A
pages-api.ru...dev.js gzip 11.6 kB 9.82 kB N/A
pages-api.ru..prod.js gzip 9.68 kB 8.8 kB N/A
pages-turbo...prod.js gzip 21.9 kB 21.6 kB N/A
pages.runtim...dev.js gzip 27.7 kB 26.1 kB N/A
pages.runtim..prod.js gzip 21.9 kB 21.6 kB N/A
server.runti..prod.js gzip 916 kB 73.7 kB N/A
dist_client_...dev.js gzip N/A 314 B N/A
dist_client_...dev.js gzip N/A 307 B N/A
Overall change 0 B 0 B
build cache Overall increase ⚠️
vercel/next.js canary vercel/next.js ijjk/use-rspack-for-prebundle Change
0.pack gzip 2.1 MB 2.1 MB ⚠️ +182 B
index.pack gzip 75.6 kB 74.4 kB N/A
Overall change 2.1 MB 2.1 MB ⚠️ +182 B
Diff details
Diff for main-HASH.js

Diff too large to display

Diff for 274-experime..ntime.dev.js
deleted
Diff for 274.runtime.dev.js
deleted
Diff for app-page-exp..ntime.dev.js
failed to diff
Diff for app-page-exp..time.prod.js

Diff too large to display

Diff for app-page-tur..time.prod.js
failed to diff
Diff for app-page-tur..time.prod.js

Diff too large to display

Diff for app-page.runtime.dev.js
failed to diff
Diff for app-page.runtime.prod.js

Diff too large to display

Diff for app-route-ex..ntime.dev.js

Diff too large to display

Diff for app-route-ex..time.prod.js

Diff too large to display

Diff for app-route-tu..time.prod.js

Diff too large to display

Diff for app-route-tu..time.prod.js

Diff too large to display

Diff for app-route.runtime.dev.js

Diff too large to display

Diff for app-route.ru..time.prod.js

Diff too large to display

Diff for dist_client_..ntime.dev.js
@@ -0,0 +1,2 @@
+"use strict";exports.ids=["dist_client_dev_noop-turbopack-hmr_js"],exports.modules={"./dist/client/dev/noop-turbopack-hmr.js":function(e,t){function o(){}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"connect",{enumerable:!0,get:function(){return o}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}};
+//# sourceMappingURL=dist_client_dev_noop-turbopack-hmr_js-experimental.runtime.dev.js.map
\ No newline at end of file
Diff for dist_client_..ntime.dev.js
@@ -0,0 +1,2 @@
+"use strict";exports.ids=["dist_client_dev_noop-turbopack-hmr_js"],exports.modules={"./dist/client/dev/noop-turbopack-hmr.js":function(e,t){function o(){}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"connect",{enumerable:!0,get:function(){return o}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}};
+//# sourceMappingURL=dist_client_dev_noop-turbopack-hmr_js.runtime.dev.js.map
\ No newline at end of file
Diff for pages-api-tu..time.prod.js

Diff too large to display

Diff for pages-api.runtime.dev.js

Diff too large to display

Diff for pages-api.ru..time.prod.js

Diff too large to display

Diff for pages-turbo...time.prod.js

Diff too large to display

Diff for pages.runtime.dev.js

Diff too large to display

Diff for pages.runtime.prod.js

Diff too large to display

Diff for server.runtime.prod.js
failed to diff
Commit: a763930

@ijjk ijjk added the tests label Jan 24, 2025
@ijjk ijjk marked this pull request as ready for review January 24, 2025 21:50
Copy link
Member

@ztanner ztanner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚀

@ijjk ijjk enabled auto-merge (squash) January 24, 2025 22:17
@ijjk ijjk merged commit 04c3f0b into canary Jan 24, 2025
130 checks passed
@ijjk ijjk deleted the ijjk/use-rspack-for-prebundle branch January 24, 2025 22:19
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this doesn't look very important, but do we know why this changed?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the comment deleted kinda explains but it's internal next runtime stack frame so expected to change

Comment on lines +100 to +102
process.env.__NEXT_EXPERIMENTAL_PPR
? ''
: '\n 2 |'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we know why this is different? that's a bit weird

ijjk added a commit that referenced this pull request Jan 25, 2025
Just ensures we keep mangling behavior prior to
#75294

---------

Co-authored-by: Hendrik Liebau <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants