-
Notifications
You must be signed in to change notification settings - Fork 27.2k
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
Fix crypto import in edge runtime with Turbopack #65171
Merged
timneutkens
merged 2 commits into
canary
from
04-29-Fix_crypto_import_in_edge_runtime_with_Turbopack
Apr 30, 2024
Merged
Fix crypto import in edge runtime with Turbopack #65171
timneutkens
merged 2 commits into
canary
from
04-29-Fix_crypto_import_in_edge_runtime_with_Turbopack
Apr 30, 2024
+173
−1
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
timneutkens
requested review from
ijjk,
shuding,
huozhi,
a team,
feedthejim,
ztanner and
wyattjoh
as code owners
April 29, 2024 18:55
ijjk
added
created-by: Next.js team
PRs by the Next.js team.
tests
Turbopack
Related to Turbopack with Next.js.
type: next
labels
Apr 29, 2024
This stack of pull requests is managed by Graphite. Learn more about stacking. Join @timneutkens and the rest of your teammates on Graphite |
Tests Passed |
Stats from current PRDefault Build (Increase detected
|
vercel/next.js canary | vercel/next.js 04-29-Fix_crypto_import_in_edge_runtime_with_Turbopack | Change | |
---|---|---|---|
buildDuration | 20s | 15.3s | N/A |
buildDurationCached | 8.9s | 8s | N/A |
nodeModulesSize | 360 MB | 360 MB | ✓ |
nextStartRea..uration (ms) | 424ms | 420ms | N/A |
Client Bundles (main, webpack)
vercel/next.js canary | vercel/next.js 04-29-Fix_crypto_import_in_edge_runtime_with_Turbopack | Change | |
---|---|---|---|
1103-HASH.js gzip | 31.9 kB | 31.9 kB | N/A |
1a9f679d-HASH.js gzip | 53.5 kB | 53.5 kB | N/A |
335-HASH.js gzip | 5.09 kB | 5.09 kB | N/A |
7953.HASH.js gzip | 169 B | 169 B | ✓ |
framework-HASH.js gzip | 45.2 kB | 45.2 kB | ✓ |
main-app-HASH.js gzip | 230 B | 230 B | ✓ |
main-HASH.js gzip | 31.5 kB | 31.5 kB | N/A |
webpack-HASH.js gzip | 1.65 kB | 1.65 kB | N/A |
Overall change | 45.6 kB | 45.6 kB | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | vercel/next.js 04-29-Fix_crypto_import_in_edge_runtime_with_Turbopack | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | vercel/next.js 04-29-Fix_crypto_import_in_edge_runtime_with_Turbopack | Change | |
---|---|---|---|
_app-HASH.js gzip | 192 B | 193 B | N/A |
_error-HASH.js gzip | 192 B | 193 B | N/A |
amp-HASH.js gzip | 507 B | 511 B | N/A |
css-HASH.js gzip | 341 B | 343 B | N/A |
dynamic-HASH.js gzip | 2.52 kB | 2.52 kB | ✓ |
edge-ssr-HASH.js gzip | 266 B | 265 B | N/A |
head-HASH.js gzip | 362 B | 365 B | N/A |
hooks-HASH.js gzip | 392 B | 392 B | ✓ |
image-HASH.js gzip | 4.32 kB | 4.32 kB | N/A |
index-HASH.js gzip | 268 B | 268 B | ✓ |
link-HASH.js gzip | 2.69 kB | 2.7 kB | N/A |
routerDirect..HASH.js gzip | 329 B | 328 B | N/A |
script-HASH.js gzip | 397 B | 397 B | ✓ |
withRouter-HASH.js gzip | 324 B | 324 B | ✓ |
1afbb74e6ecf..834.css gzip | 106 B | 106 B | ✓ |
Overall change | 4 kB | 4 kB | ✓ |
Client Build Manifests
vercel/next.js canary | vercel/next.js 04-29-Fix_crypto_import_in_edge_runtime_with_Turbopack | Change | |
---|---|---|---|
_buildManifest.js gzip | 483 B | 484 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | vercel/next.js 04-29-Fix_crypto_import_in_edge_runtime_with_Turbopack | Change | |
---|---|---|---|
index.html gzip | 528 B | 526 B | N/A |
link.html gzip | 541 B | 539 B | N/A |
withRouter.html gzip | 524 B | 521 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Edge SSR bundle Size
vercel/next.js canary | vercel/next.js 04-29-Fix_crypto_import_in_edge_runtime_with_Turbopack | Change | |
---|---|---|---|
edge-ssr.js gzip | 94.7 kB | 94.7 kB | N/A |
page.js gzip | 181 kB | 181 kB | N/A |
Overall change | 0 B | 0 B | ✓ |
Middleware size
vercel/next.js canary | vercel/next.js 04-29-Fix_crypto_import_in_edge_runtime_with_Turbopack | Change | |
---|---|---|---|
middleware-b..fest.js gzip | 623 B | 624 B | N/A |
middleware-r..fest.js gzip | 156 B | 156 B | ✓ |
middleware.js gzip | 25.7 kB | 25.7 kB | N/A |
edge-runtime..pack.js gzip | 839 B | 839 B | ✓ |
Overall change | 995 B | 995 B | ✓ |
Next Runtimes
vercel/next.js canary | vercel/next.js 04-29-Fix_crypto_import_in_edge_runtime_with_Turbopack | Change | |
---|---|---|---|
app-page-exp...dev.js gzip | 171 kB | 171 kB | ✓ |
app-page-exp..prod.js gzip | 98.5 kB | 98.5 kB | ✓ |
app-page-tur..prod.js gzip | 100 kB | 100 kB | ✓ |
app-page-tur..prod.js gzip | 94.3 kB | 94.3 kB | ✓ |
app-page.run...dev.js gzip | 157 kB | 157 kB | ✓ |
app-page.run..prod.js gzip | 93 kB | 93 kB | ✓ |
app-route-ex...dev.js gzip | 21.5 kB | 21.5 kB | ✓ |
app-route-ex..prod.js gzip | 15.2 kB | 15.2 kB | ✓ |
app-route-tu..prod.js gzip | 15.2 kB | 15.2 kB | ✓ |
app-route-tu..prod.js gzip | 15 kB | 15 kB | ✓ |
app-route.ru...dev.js gzip | 21.3 kB | 21.3 kB | ✓ |
app-route.ru..prod.js gzip | 15 kB | 15 kB | ✓ |
pages-api-tu..prod.js gzip | 9.55 kB | 9.55 kB | ✓ |
pages-api.ru...dev.js gzip | 9.82 kB | 9.82 kB | ✓ |
pages-api.ru..prod.js gzip | 9.55 kB | 9.55 kB | ✓ |
pages-turbo...prod.js gzip | 21.5 kB | 21.5 kB | ✓ |
pages.runtim...dev.js gzip | 22.1 kB | 22.1 kB | ✓ |
pages.runtim..prod.js gzip | 21.5 kB | 21.5 kB | ✓ |
server.runti..prod.js gzip | 51.6 kB | 51.6 kB | ✓ |
Overall change | 962 kB | 962 kB | ✓ |
build cache Overall increase ⚠️
vercel/next.js canary | vercel/next.js 04-29-Fix_crypto_import_in_edge_runtime_with_Turbopack | Change | |
---|---|---|---|
0.pack gzip | 1.62 MB | 1.62 MB | |
index.pack gzip | 112 kB | 112 kB | N/A |
Overall change | 1.62 MB | 1.62 MB |
Diff details
Diff for edge-ssr.js
Diff too large to display
huozhi
approved these changes
Apr 29, 2024
ijjk
approved these changes
Apr 29, 2024
timneutkens
deleted the
04-29-Fix_crypto_import_in_edge_runtime_with_Turbopack
branch
April 30, 2024 09:26
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Labels
created-by: Next.js team
PRs by the Next.js team.
locked
tests
Turbopack
Related to Turbopack with Next.js.
type: next
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What?
Ensures just importing
crypto
does not error, only when it is used it shows an error in the edge runtime. This matches webpack behavior. Thecrypto
module was missing the list of unsupported packages in the Next.js Turbopack integration.Fixes #64464
Fixes PACK-2954
TODO
While adding tests for this issue I found another bug that only happens with webpack.
Specifically these 4 packages are accidentally being polyfilled even when they're not set up to be polyfilled. i.e. there's no npm package installed for polyfilling them through aliasing or such. Even in that case
punycode
,process
,querystring
, andstring_decorder
get polyfilled regardless, this causes the newly added test to fail.Removing the polyfills would be potentially breaking so we'll want to change it in Next.js 15 instead.
Closes NEXT-3252