Navigation Menu

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

Run runtime config side-effect before other serverless imports #10386

Merged
merged 3 commits into from Feb 3, 2020

Conversation

ijjk
Copy link
Member

@ijjk ijjk commented Feb 2, 2020

This makes sure we set the config before importing _app, _error, or _document in the serverless-loader since runtime configs can be used there also.

I added additional tests for this and also added a test to ensure it also works for API routes

Closes: #10385

@ijjk ijjk added this to the 9.2.2 milestone Feb 2, 2020
@ijjk
Copy link
Member Author

ijjk commented Feb 2, 2020

Stats from current PR

Default Server Mode
General Overall increase ⚠️
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
buildDuration 10.7s 10.4s -253ms
nodeModulesSize 52.1 MB 52.1 MB ⚠️ +303 B
Client Bundles (main, webpack, commons)
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
main-HASH.js gzip 5.11 kB 5.11 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..d6ae.js gzip 16.2 kB 16.2 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 69.9 kB 69.9 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
main-HASH.module.js gzip 4.11 kB 4.11 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 15.1 kB 15.1 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 64.6 kB 64.6 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
_app.js gzip 1.15 kB 1.15 kB
_error.js gzip 4.07 kB 4.07 kB
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.89 kB 2.89 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.68 kB 9.68 kB
Client Pages Modern
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
_app.module.js gzip 576 B 576 B
_error.module.js gzip 3.06 kB 3.06 kB
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.46 kB 2.46 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.22 kB 7.22 kB
Client Build Manifests
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Rendered Page Sizes
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
index.html gzip 1.02 kB 1.02 kB
link.html gzip 1.03 kB 1.03 kB
withRouter.html gzip 1.02 kB 1.02 kB
Overall change 3.07 kB 3.07 kB

Serverless Mode (Decrease detected ✓)
General Overall increase ⚠️
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
buildDuration 11.1s 10.7s -339ms
nodeModulesSize 52.1 MB 52.1 MB ⚠️ +303 B
Client Bundles (main, webpack, commons)
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
main-HASH.js gzip 5.11 kB 5.11 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..d6ae.js gzip 16.2 kB 16.2 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 69.9 kB 69.9 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
main-HASH.module.js gzip 4.11 kB 4.11 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 15.1 kB 15.1 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 64.6 kB 64.6 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
_app.js gzip 1.15 kB 1.15 kB
_error.js gzip 4.07 kB 4.07 kB
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.89 kB 2.89 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.68 kB 9.68 kB
Client Pages Modern
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
_app.module.js gzip 576 B 576 B
_error.module.js gzip 3.06 kB 3.06 kB
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.46 kB 2.46 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.22 kB 7.22 kB
Client Build Manifests
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Serverless bundles Overall decrease ✓
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
_error.js gzip 46.7 kB 46.5 kB -247 B
404.html gzip 1.43 kB 1.43 kB
hooks.html gzip 1.06 kB 1.06 kB
index.js gzip 46.8 kB 46.5 kB -306 B
link.js gzip 72.3 kB 72 kB -270 B
routerDirect.js gzip 70.6 kB 70.3 kB -287 B
withRouter.js gzip 70.4 kB 70.1 kB -298 B
Overall change 309 kB 308 kB -1.41 kB

Commit: 237e4cd

Copy link
Member

@Timer Timer left a comment

Choose a reason for hiding this comment

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

This fix feels wrong. Let's discuss it on Slack first?

Copy link
Member

@Timer Timer left a comment

Choose a reason for hiding this comment

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

Seems OK for now. I'd still rather not use CJS here.

It'd be interesting to explore having getConfig() return an ES6 Proxy so the binding is live.

@Timer Timer changed the title Make sure runtime config is set before any imports for serverless mode Run runtime config side-effect before other serverless imports Feb 3, 2020
@ijjk
Copy link
Member Author

ijjk commented Feb 3, 2020

Stats from current PR

Default Server Mode
General Overall increase ⚠️
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
buildDuration 12.4s 12.3s -79ms
nodeModulesSize 52.1 MB 52.1 MB ⚠️ +303 B
Client Bundles (main, webpack, commons)
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
main-HASH.js gzip 5.11 kB 5.11 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..d6ae.js gzip 16.2 kB 16.2 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 69.9 kB 69.9 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
main-HASH.module.js gzip 4.11 kB 4.11 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 15.1 kB 15.1 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 64.6 kB 64.6 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
_app.js gzip 1.15 kB 1.15 kB
_error.js gzip 4.07 kB 4.07 kB
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.89 kB 2.89 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.68 kB 9.68 kB
Client Pages Modern
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
_app.module.js gzip 576 B 576 B
_error.module.js gzip 3.06 kB 3.06 kB
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.46 kB 2.46 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.22 kB 7.22 kB
Client Build Manifests
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Rendered Page Sizes
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
index.html gzip 1.02 kB 1.02 kB
link.html gzip 1.03 kB 1.03 kB
withRouter.html gzip 1.02 kB 1.02 kB
Overall change 3.07 kB 3.07 kB

Serverless Mode (Decrease detected ✓)
General Overall increase ⚠️
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
buildDuration 12.6s 12.7s ⚠️ +115ms
nodeModulesSize 52.1 MB 52.1 MB ⚠️ +303 B
Client Bundles (main, webpack, commons)
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
main-HASH.js gzip 5.11 kB 5.11 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..d6ae.js gzip 16.2 kB 16.2 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 69.9 kB 69.9 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
main-HASH.module.js gzip 4.11 kB 4.11 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 15.1 kB 15.1 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 64.6 kB 64.6 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
_app.js gzip 1.15 kB 1.15 kB
_error.js gzip 4.07 kB 4.07 kB
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.89 kB 2.89 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.68 kB 9.68 kB
Client Pages Modern
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
_app.module.js gzip 576 B 576 B
_error.module.js gzip 3.06 kB 3.06 kB
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.46 kB 2.46 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.22 kB 7.22 kB
Client Build Manifests
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Serverless bundles Overall decrease ✓
zeit/next.js canary ijjk/next.js update/serverless-runtime-config Change
_error.js gzip 46.7 kB 46.5 kB -247 B
404.html gzip 1.43 kB 1.43 kB
hooks.html gzip 1.06 kB 1.06 kB
index.js gzip 46.8 kB 46.5 kB -306 B
link.js gzip 72.3 kB 72 kB -270 B
routerDirect.js gzip 70.6 kB 70.3 kB -287 B
withRouter.js gzip 70.4 kB 70.1 kB -298 B
Overall change 309 kB 308 kB -1.41 kB

Commit: aa241db

@Timer Timer merged commit c01534c into vercel:canary Feb 3, 2020
@ijjk ijjk deleted the update/serverless-runtime-config branch February 3, 2020 03:37
chibicode pushed a commit to chibicode/next.js that referenced this pull request Feb 11, 2020
@vercel vercel locked as resolved and limited conversation to collaborators Jan 31, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

RuntimeConfigs not picked up
2 participants