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
Add process env NEXT_RUNTIME #36383
Add process env NEXT_RUNTIME #36383
Conversation
This comment was marked as outdated.
This comment was marked as outdated.
1 similar comment
Failing test suitesCommit: 138d4e2
Expand output● middleware environment variables in node server reflect the usage inference › limits process.env to only contain env vars that are inferred from usage
Read more about building and testing Next.js in contributing.md. |
Stats from current PRDefault Build (Decrease detected ✓)General Overall increase
|
vercel/next.js canary | huozhi/next.js process-edge | Change | |
---|---|---|---|
buildDuration | 18.8s | 18.7s | -126ms |
buildDurationCached | 7.3s | 7.3s | -14ms |
nodeModulesSize | 481 MB | 481 MB |
Page Load Tests Overall decrease ⚠️
vercel/next.js canary | huozhi/next.js process-edge | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 3.832 | 3.828 | 0 |
/ avg req/sec | 652.39 | 653.01 | +0.62 |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.606 | 1.609 | 0 |
/error-in-render avg req/sec | 1556.41 | 1554.12 |
Client Bundles (main, webpack)
vercel/next.js canary | huozhi/next.js process-edge | Change | |
---|---|---|---|
925.HASH.js gzip | 179 B | 179 B | ✓ |
framework-HASH.js gzip | 42 kB | 42 kB | ✓ |
main-HASH.js gzip | 28.6 kB | 28.6 kB | ✓ |
webpack-HASH.js gzip | 1.44 kB | 1.44 kB | ✓ |
Overall change | 72.3 kB | 72.3 kB | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | huozhi/next.js process-edge | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | huozhi/next.js process-edge | Change | |
---|---|---|---|
_app-HASH.js gzip | 1.36 kB | 1.36 kB | ✓ |
_error-HASH.js gzip | 192 B | 192 B | ✓ |
amp-HASH.js gzip | 309 B | 309 B | ✓ |
css-HASH.js gzip | 327 B | 327 B | ✓ |
dynamic-HASH.js gzip | 3.08 kB | 3.08 kB | ✓ |
head-HASH.js gzip | 357 B | 357 B | ✓ |
hooks-HASH.js gzip | 920 B | 920 B | ✓ |
image-HASH.js gzip | 5.73 kB | 5.73 kB | ✓ |
index-HASH.js gzip | 263 B | 263 B | ✓ |
link-HASH.js gzip | 2.63 kB | 2.63 kB | ✓ |
routerDirect..HASH.js gzip | 320 B | 320 B | ✓ |
script-HASH.js gzip | 392 B | 392 B | ✓ |
withRouter-HASH.js gzip | 319 B | 319 B | ✓ |
85e02e95b279..7e3.css gzip | 107 B | 107 B | ✓ |
Overall change | 16.3 kB | 16.3 kB | ✓ |
Client Build Manifests
vercel/next.js canary | huozhi/next.js process-edge | Change | |
---|---|---|---|
_buildManifest.js gzip | 459 B | 459 B | ✓ |
Overall change | 459 B | 459 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | huozhi/next.js process-edge | Change | |
---|---|---|---|
index.html gzip | 532 B | 532 B | ✓ |
link.html gzip | 545 B | 545 B | ✓ |
withRouter.html gzip | 525 B | 525 B | ✓ |
Overall change | 1.6 kB | 1.6 kB | ✓ |
Default Build with SWC
General Overall increase ⚠️
vercel/next.js canary | huozhi/next.js process-edge | Change | |
---|---|---|---|
buildDuration | 20.9s | 20.8s | -27ms |
buildDurationCached | 7.3s | 7.2s | -69ms |
nodeModulesSize | 481 MB | 481 MB |
Page Load Tests Overall increase ✓
vercel/next.js canary | huozhi/next.js process-edge | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 3.877 | 3.833 | -0.04 |
/ avg req/sec | 644.85 | 652.26 | +7.41 |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.63 | 1.633 | 0 |
/error-in-render avg req/sec | 1533.56 | 1531.16 |
Client Bundles (main, webpack)
vercel/next.js canary | huozhi/next.js process-edge | Change | |
---|---|---|---|
925.HASH.js gzip | 178 B | 178 B | ✓ |
framework-HASH.js gzip | 42.2 kB | 42.2 kB | ✓ |
main-HASH.js gzip | 29.1 kB | 29.1 kB | ✓ |
webpack-HASH.js gzip | 1.45 kB | 1.45 kB | ✓ |
Overall change | 72.9 kB | 72.9 kB | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | huozhi/next.js process-edge | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | huozhi/next.js process-edge | Change | |
---|---|---|---|
_app-HASH.js gzip | 1.35 kB | 1.35 kB | ✓ |
_error-HASH.js gzip | 179 B | 179 B | ✓ |
amp-HASH.js gzip | 313 B | 313 B | ✓ |
css-HASH.js gzip | 325 B | 325 B | ✓ |
dynamic-HASH.js gzip | 3.08 kB | 3.08 kB | ✓ |
head-HASH.js gzip | 359 B | 359 B | ✓ |
hooks-HASH.js gzip | 921 B | 921 B | ✓ |
image-HASH.js gzip | 5.78 kB | 5.78 kB | ✓ |
index-HASH.js gzip | 261 B | 261 B | ✓ |
link-HASH.js gzip | 2.74 kB | 2.74 kB | ✓ |
routerDirect..HASH.js gzip | 322 B | 322 B | ✓ |
script-HASH.js gzip | 393 B | 393 B | ✓ |
withRouter-HASH.js gzip | 317 B | 317 B | ✓ |
85e02e95b279..7e3.css gzip | 107 B | 107 B | ✓ |
Overall change | 16.5 kB | 16.5 kB | ✓ |
Client Build Manifests
vercel/next.js canary | huozhi/next.js process-edge | Change | |
---|---|---|---|
_buildManifest.js gzip | 458 B | 458 B | ✓ |
Overall change | 458 B | 458 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | huozhi/next.js process-edge | Change | |
---|---|---|---|
index.html gzip | 529 B | 529 B | ✓ |
link.html gzip | 541 B | 541 B | ✓ |
withRouter.html gzip | 525 B | 525 B | ✓ |
Overall change | 1.59 kB | 1.59 kB | ✓ |
@@ -266,7 +266,9 @@ function buildEnvironmentVariablesFrom( | |||
keys: string[] | |||
): Record<string, string | undefined> { | |||
const pairs = keys.map((key) => [key, process.env[key]]) | |||
return Object.fromEntries(pairs) | |||
const env = Object.fromEntries(pairs) | |||
env.__NEXT_RUNTIME = 'edge' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we need to always expose this or can we only expose it if it's referenced like other environment variables in the edge runtime?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's used inside the next server code to determine wether we use node or polyfill dependencies, so it's required at the very beginning that can't remove atm. I'll keep it in mind to see if we can opt it in the later versions
Follow-up to #36383 this also exposes the `nextRuntime` for the custom webpack function in `next.config.js` to allow differentiating between the environments. x-ref: https://vercel.slack.com/archives/CGU8HUTUH/p1647866770704939
process.browser