-
Notifications
You must be signed in to change notification settings - Fork 27k
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
allow NextScript to optionally defer javascript #8980
Conversation
Stats from current PRDefault Server Mode (Increase detected
|
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
buildDuration | 14.9s | 15.7s | |
nodeModulesSize | 48.3 MB | 48.3 MB |
Client Bundles (main, webpack, commons)
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
main-HASH.js | 18.9 kB | 18.9 kB | ✓ |
main-HASH.js gzip | 6.79 kB | 6.79 kB | ✓ |
webpack-HASH.js | 1.53 kB | 1.53 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
4952ddcd88e7..2b8407376.js | 21.9 kB | 21.9 kB | ✓ |
4952ddcd88e7..7376.js gzip | 7.81 kB | 7.81 kB | ✓ |
de003c3a9d30..6604acae7.js | 43.2 kB | 43.2 kB | ✓ |
de003c3a9d30..cae7.js gzip | 15.5 kB | 15.5 kB | ✓ |
framework.5b..dbaff70d3.js | 125 kB | 125 kB | ✓ |
framework.5b..70d3.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 211 kB | 211 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
main-HASH.module.js | 17.2 kB | 17.2 kB | ✓ |
main-HASH.module.js gzip | 6.52 kB | 6.52 kB | ✓ |
webpack-HASH.module.js | 1.53 kB | 1.53 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..42.module.js | 45.6 kB | 45.6 kB | ✓ |
de003c3a9d30..dule.js gzip | 16.5 kB | 16.5 kB | ✓ |
framework.5b..d3.module.js | 125 kB | 125 kB | ✓ |
framework.5b..dule.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 190 kB | 190 kB | ✓ |
Client Pages
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_app.js | 1.81 kB | 1.81 kB | ✓ |
_app.js gzip | 873 B | 873 B | ✓ |
_error.js | 12 kB | 12 kB | ✓ |
_error.js gzip | 4.73 kB | 4.73 kB | ✓ |
hooks.js | 12.7 kB | 12.7 kB | ✓ |
hooks.js gzip | 4.79 kB | 4.79 kB | ✓ |
index.js | 318 B | 318 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js | 8.14 kB | 8.14 kB | ✓ |
link.js gzip | 3.5 kB | 3.5 kB | ✓ |
routerDirect.js | 408 B | 408 B | ✓ |
routerDirect.js gzip | 281 B | 281 B | ✓ |
withRouter.js | 419 B | 419 B | ✓ |
withRouter.js gzip | 280 B | 280 B | ✓ |
Overall change | 35.8 kB | 35.8 kB | ✓ |
Client Pages Modern
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_app.module.js | 1.7 kB | 1.7 kB | ✓ |
_app.module.js gzip | 832 B | 832 B | ✓ |
_error.module.js | 23.3 kB | 23.3 kB | ✓ |
_error.module.js gzip | 8.59 kB | 8.59 kB | ✓ |
hooks.module.js | 1.52 kB | 1.52 kB | ✓ |
hooks.module.js gzip | 793 B | 793 B | ✓ |
index.module.js | 294 B | 294 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js | 8.53 kB | 8.53 kB | ✓ |
link.module.js gzip | 3.68 kB | 3.68 kB | ✓ |
routerDirect.module.js | 394 B | 394 B | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.module.js | 404 B | 404 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 36.1 kB | 36.1 kB | ✓ |
Client Build Manifests
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_buildManifest.js | 81 B | 81 B | ✓ |
_buildManifest.js gzip | 61 B | 61 B | ✓ |
_buildManifest.module.js | 81 B | 81 B | ✓ |
_buildManife..dule.js gzip | 61 B | 61 B | ✓ |
Overall change | 162 B | 162 B | ✓ |
Rendered Page Sizes
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
index.html | 3.62 kB | 3.62 kB | ✓ |
index.html gzip | 945 B | 945 B | ✓ |
link.html | 3.66 kB | 3.66 kB | ✓ |
link.html gzip | 953 B | 953 B | ✓ |
withRouter.html | 3.67 kB | 3.67 kB | ✓ |
withRouter.html gzip | 940 B | 941 B | |
Overall change | 10.9 kB | 10.9 kB | ✓ |
Serverless Mode (Increase detected ⚠️ )
General Overall increase ⚠️
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
buildDuration | 15.7s | 16.8s | |
nodeModulesSize | 48.3 MB | 48.3 MB |
Client Bundles (main, webpack, commons)
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
main-HASH.js | 18.9 kB | 18.9 kB | ✓ |
main-HASH.js gzip | 6.79 kB | 6.79 kB | ✓ |
webpack-HASH.js | 1.53 kB | 1.53 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
4952ddcd88e7..2b8407376.js | 21.9 kB | 21.9 kB | ✓ |
4952ddcd88e7..7376.js gzip | 7.81 kB | 7.81 kB | ✓ |
de003c3a9d30..6604acae7.js | 43.2 kB | 43.2 kB | ✓ |
de003c3a9d30..cae7.js gzip | 15.5 kB | 15.5 kB | ✓ |
framework.5b..dbaff70d3.js | 125 kB | 125 kB | ✓ |
framework.5b..70d3.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 211 kB | 211 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
main-HASH.module.js | 17.2 kB | 17.2 kB | ✓ |
main-HASH.module.js gzip | 6.52 kB | 6.52 kB | ✓ |
webpack-HASH.module.js | 1.53 kB | 1.53 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..42.module.js | 45.6 kB | 45.6 kB | ✓ |
de003c3a9d30..dule.js gzip | 16.5 kB | 16.5 kB | ✓ |
framework.5b..d3.module.js | 125 kB | 125 kB | ✓ |
framework.5b..dule.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 190 kB | 190 kB | ✓ |
Client Pages
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_app.js | 1.81 kB | 1.81 kB | ✓ |
_app.js gzip | 873 B | 873 B | ✓ |
_error.js | 12 kB | 12 kB | ✓ |
_error.js gzip | 4.73 kB | 4.73 kB | ✓ |
hooks.js | 12.7 kB | 12.7 kB | ✓ |
hooks.js gzip | 4.79 kB | 4.79 kB | ✓ |
index.js | 318 B | 318 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js | 8.14 kB | 8.14 kB | ✓ |
link.js gzip | 3.5 kB | 3.5 kB | ✓ |
routerDirect.js | 408 B | 408 B | ✓ |
routerDirect.js gzip | 281 B | 281 B | ✓ |
withRouter.js | 419 B | 419 B | ✓ |
withRouter.js gzip | 280 B | 280 B | ✓ |
Overall change | 35.8 kB | 35.8 kB | ✓ |
Client Pages Modern
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_app.module.js | 1.7 kB | 1.7 kB | ✓ |
_app.module.js gzip | 832 B | 832 B | ✓ |
_error.module.js | 23.3 kB | 23.3 kB | ✓ |
_error.module.js gzip | 8.59 kB | 8.59 kB | ✓ |
hooks.module.js | 1.52 kB | 1.52 kB | ✓ |
hooks.module.js gzip | 793 B | 793 B | ✓ |
index.module.js | 294 B | 294 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js | 8.53 kB | 8.53 kB | ✓ |
link.module.js gzip | 3.68 kB | 3.68 kB | ✓ |
routerDirect.module.js | 394 B | 394 B | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.module.js | 404 B | 404 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 36.1 kB | 36.1 kB | ✓ |
Client Build Manifests
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_buildManifest.js | 81 B | 81 B | ✓ |
_buildManifest.js gzip | 61 B | 61 B | ✓ |
_buildManifest.module.js | 81 B | 81 B | ✓ |
_buildManife..dule.js gzip | 61 B | 61 B | ✓ |
Overall change | 162 B | 162 B | ✓ |
Serverless bundles Overall increase ⚠️
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_error.js | 253 kB | 254 kB | |
_error.js gzip | 67.9 kB | 68 kB | |
hooks.html | 3.75 kB | 3.75 kB | ✓ |
hooks.html gzip | 979 B | 977 B | -2 B |
index.js | 254 kB | 254 kB | |
index.js gzip | 68.2 kB | 68.3 kB | |
link.js | 261 kB | 262 kB | |
link.js gzip | 70.3 kB | 70.3 kB | |
routerDirect.js | 255 kB | 255 kB | |
routerDirect.js gzip | 68.3 kB | 68.3 kB | |
withRouter.js | 254 kB | 255 kB | |
withRouter.js gzip | 68.4 kB | 68.4 kB | |
Overall change | 1.28 MB | 1.28 MB |
Commit: 65fa08f
Stats from current PRDefault Server Mode (Increase detected
|
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
buildDuration | 15.2s | 15.9s | |
nodeModulesSize | 48.3 MB | 48.3 MB |
Client Bundles (main, webpack, commons)
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
main-HASH.js | 18.9 kB | 18.9 kB | ✓ |
main-HASH.js gzip | 6.79 kB | 6.79 kB | ✓ |
webpack-HASH.js | 1.53 kB | 1.53 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
4952ddcd88e7..2b8407376.js | 21.9 kB | 21.9 kB | ✓ |
4952ddcd88e7..7376.js gzip | 7.81 kB | 7.81 kB | ✓ |
de003c3a9d30..6604acae7.js | 43.2 kB | 43.2 kB | ✓ |
de003c3a9d30..cae7.js gzip | 15.5 kB | 15.5 kB | ✓ |
framework.5b..dbaff70d3.js | 125 kB | 125 kB | ✓ |
framework.5b..70d3.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 211 kB | 211 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
main-HASH.module.js | 17.2 kB | 17.2 kB | ✓ |
main-HASH.module.js gzip | 6.52 kB | 6.52 kB | ✓ |
webpack-HASH.module.js | 1.53 kB | 1.53 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..42.module.js | 45.6 kB | 45.6 kB | ✓ |
de003c3a9d30..dule.js gzip | 16.5 kB | 16.5 kB | ✓ |
framework.5b..d3.module.js | 125 kB | 125 kB | ✓ |
framework.5b..dule.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 190 kB | 190 kB | ✓ |
Client Pages
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_app.js | 1.81 kB | 1.81 kB | ✓ |
_app.js gzip | 873 B | 873 B | ✓ |
_error.js | 12 kB | 12 kB | ✓ |
_error.js gzip | 4.73 kB | 4.73 kB | ✓ |
hooks.js | 12.7 kB | 12.7 kB | ✓ |
hooks.js gzip | 4.79 kB | 4.79 kB | ✓ |
index.js | 318 B | 318 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js | 8.14 kB | 8.14 kB | ✓ |
link.js gzip | 3.5 kB | 3.5 kB | ✓ |
routerDirect.js | 408 B | 408 B | ✓ |
routerDirect.js gzip | 281 B | 281 B | ✓ |
withRouter.js | 419 B | 419 B | ✓ |
withRouter.js gzip | 280 B | 280 B | ✓ |
Overall change | 35.8 kB | 35.8 kB | ✓ |
Client Pages Modern
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_app.module.js | 1.7 kB | 1.7 kB | ✓ |
_app.module.js gzip | 832 B | 832 B | ✓ |
_error.module.js | 23.3 kB | 23.3 kB | ✓ |
_error.module.js gzip | 8.59 kB | 8.59 kB | ✓ |
hooks.module.js | 1.52 kB | 1.52 kB | ✓ |
hooks.module.js gzip | 793 B | 793 B | ✓ |
index.module.js | 294 B | 294 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js | 8.53 kB | 8.53 kB | ✓ |
link.module.js gzip | 3.68 kB | 3.68 kB | ✓ |
routerDirect.module.js | 394 B | 394 B | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.module.js | 404 B | 404 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 36.1 kB | 36.1 kB | ✓ |
Client Build Manifests
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_buildManifest.js | 81 B | 81 B | ✓ |
_buildManifest.js gzip | 61 B | 61 B | ✓ |
_buildManifest.module.js | 81 B | 81 B | ✓ |
_buildManife..dule.js gzip | 61 B | 61 B | ✓ |
Overall change | 162 B | 162 B | ✓ |
Rendered Page Sizes
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
index.html | 3.62 kB | 3.62 kB | ✓ |
index.html gzip | 945 B | 945 B | ✓ |
link.html | 3.66 kB | 3.66 kB | ✓ |
link.html gzip | 953 B | 953 B | ✓ |
withRouter.html | 3.67 kB | 3.67 kB | ✓ |
withRouter.html gzip | 940 B | 940 B | ✓ |
Overall change | 10.9 kB | 10.9 kB | ✓ |
Serverless Mode (Increase detected ⚠️ )
General Overall increase ⚠️
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
buildDuration | 15.3s | 15.7s | |
nodeModulesSize | 48.3 MB | 48.3 MB |
Client Bundles (main, webpack, commons)
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
main-HASH.js | 18.9 kB | 18.9 kB | ✓ |
main-HASH.js gzip | 6.79 kB | 6.79 kB | ✓ |
webpack-HASH.js | 1.53 kB | 1.53 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
4952ddcd88e7..2b8407376.js | 21.9 kB | 21.9 kB | ✓ |
4952ddcd88e7..7376.js gzip | 7.81 kB | 7.81 kB | ✓ |
de003c3a9d30..6604acae7.js | 43.2 kB | 43.2 kB | ✓ |
de003c3a9d30..cae7.js gzip | 15.5 kB | 15.5 kB | ✓ |
framework.5b..dbaff70d3.js | 125 kB | 125 kB | ✓ |
framework.5b..70d3.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 211 kB | 211 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
main-HASH.module.js | 17.2 kB | 17.2 kB | ✓ |
main-HASH.module.js gzip | 6.52 kB | 6.52 kB | ✓ |
webpack-HASH.module.js | 1.53 kB | 1.53 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..42.module.js | 45.6 kB | 45.6 kB | ✓ |
de003c3a9d30..dule.js gzip | 16.5 kB | 16.5 kB | ✓ |
framework.5b..d3.module.js | 125 kB | 125 kB | ✓ |
framework.5b..dule.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 190 kB | 190 kB | ✓ |
Client Pages
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_app.js | 1.81 kB | 1.81 kB | ✓ |
_app.js gzip | 873 B | 873 B | ✓ |
_error.js | 12 kB | 12 kB | ✓ |
_error.js gzip | 4.73 kB | 4.73 kB | ✓ |
hooks.js | 12.7 kB | 12.7 kB | ✓ |
hooks.js gzip | 4.79 kB | 4.79 kB | ✓ |
index.js | 318 B | 318 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js | 8.14 kB | 8.14 kB | ✓ |
link.js gzip | 3.5 kB | 3.5 kB | ✓ |
routerDirect.js | 408 B | 408 B | ✓ |
routerDirect.js gzip | 281 B | 281 B | ✓ |
withRouter.js | 419 B | 419 B | ✓ |
withRouter.js gzip | 280 B | 280 B | ✓ |
Overall change | 35.8 kB | 35.8 kB | ✓ |
Client Pages Modern
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_app.module.js | 1.7 kB | 1.7 kB | ✓ |
_app.module.js gzip | 832 B | 832 B | ✓ |
_error.module.js | 23.3 kB | 23.3 kB | ✓ |
_error.module.js gzip | 8.59 kB | 8.59 kB | ✓ |
hooks.module.js | 1.52 kB | 1.52 kB | ✓ |
hooks.module.js gzip | 793 B | 793 B | ✓ |
index.module.js | 294 B | 294 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js | 8.53 kB | 8.53 kB | ✓ |
link.module.js gzip | 3.68 kB | 3.68 kB | ✓ |
routerDirect.module.js | 394 B | 394 B | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.module.js | 404 B | 404 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 36.1 kB | 36.1 kB | ✓ |
Client Build Manifests
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_buildManifest.js | 81 B | 81 B | ✓ |
_buildManifest.js gzip | 61 B | 61 B | ✓ |
_buildManifest.module.js | 81 B | 81 B | ✓ |
_buildManife..dule.js gzip | 61 B | 61 B | ✓ |
Overall change | 162 B | 162 B | ✓ |
Serverless bundles Overall increase ⚠️
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_error.js | 253 kB | 254 kB | |
_error.js gzip | 67.9 kB | 68 kB | |
hooks.html | 3.75 kB | 3.75 kB | ✓ |
hooks.html gzip | 979 B | 979 B | ✓ |
index.js | 254 kB | 254 kB | |
index.js gzip | 68.2 kB | 68.3 kB | |
link.js | 261 kB | 262 kB | |
link.js gzip | 70.3 kB | 70.3 kB | |
routerDirect.js | 255 kB | 255 kB | |
routerDirect.js gzip | 68.3 kB | 68.3 kB | |
withRouter.js | 254 kB | 255 kB | |
withRouter.js gzip | 68.4 kB | 68.4 kB | |
Overall change | 1.28 MB | 1.28 MB |
Commit: 4da1ac1
Excellent description and I think this is a valid argument in favor of defer. However I'd wager |
I'm in favor of switching to |
Can I get some feedback from the code owners? What else would I need to do to get this merged and released? |
@htbvo I think it would make sense to create an experimental option for this instead of a property on the element. Then it can be tested against real applications and changed to be a default similarly to what we're currently doing for |
4da1ac1
to
76e127e
Compare
76e127e
to
fec4838
Compare
@timneutkens I moved the flags into the experimental nextConfig options. Let me know if I've done it correctly or if I'm missing something. Thanks for the feedback! |
Stats from current PRDefault Server Mode (Increase detected
|
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
buildDuration | 15.7s | 15.9s | |
nodeModulesSize | 48.5 MB | 48.5 MB |
Client Bundles (main, webpack, commons)
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
main-HASH.js | 18.9 kB | 18.9 kB | ✓ |
main-HASH.js gzip | 6.79 kB | 6.79 kB | ✓ |
webpack-HASH.js | 1.53 kB | 1.53 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
4952ddcd88e7..9dda6167a.js | 21.9 kB | 21.9 kB | ✓ |
4952ddcd88e7..167a.js gzip | 7.81 kB | 7.81 kB | ✓ |
de003c3a9d30..3a0560775.js | 43.2 kB | 43.2 kB | ✓ |
de003c3a9d30..0775.js gzip | 15.5 kB | 15.5 kB | ✓ |
framework.5b..dbaff70d3.js | 125 kB | 125 kB | ✓ |
framework.5b..70d3.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 211 kB | 211 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
main-HASH.module.js | 17.2 kB | 17.2 kB | ✓ |
main-HASH.module.js gzip | 6.52 kB | 6.52 kB | ✓ |
webpack-HASH.module.js | 1.53 kB | 1.53 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..72.module.js | 45.6 kB | 45.6 kB | ✓ |
de003c3a9d30..dule.js gzip | 16.5 kB | 16.5 kB | ✓ |
framework.5b..d3.module.js | 125 kB | 125 kB | ✓ |
framework.5b..dule.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 190 kB | 190 kB | ✓ |
Client Pages
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_app.js | 1.81 kB | 1.81 kB | ✓ |
_app.js gzip | 873 B | 873 B | ✓ |
_error.js | 12 kB | 12 kB | ✓ |
_error.js gzip | 4.73 kB | 4.73 kB | ✓ |
hooks.js | 12.7 kB | 12.7 kB | ✓ |
hooks.js gzip | 4.79 kB | 4.79 kB | ✓ |
index.js | 318 B | 318 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js | 8.14 kB | 8.14 kB | ✓ |
link.js gzip | 3.5 kB | 3.5 kB | ✓ |
routerDirect.js | 408 B | 408 B | ✓ |
routerDirect.js gzip | 281 B | 281 B | ✓ |
withRouter.js | 419 B | 419 B | ✓ |
withRouter.js gzip | 280 B | 280 B | ✓ |
Overall change | 35.8 kB | 35.8 kB | ✓ |
Client Pages Modern
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_app.module.js | 1.7 kB | 1.7 kB | ✓ |
_app.module.js gzip | 832 B | 832 B | ✓ |
_error.module.js | 23.3 kB | 23.3 kB | ✓ |
_error.module.js gzip | 8.59 kB | 8.59 kB | ✓ |
hooks.module.js | 1.52 kB | 1.52 kB | ✓ |
hooks.module.js gzip | 793 B | 793 B | ✓ |
index.module.js | 294 B | 294 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js | 8.53 kB | 8.53 kB | ✓ |
link.module.js gzip | 3.68 kB | 3.68 kB | ✓ |
routerDirect.module.js | 394 B | 394 B | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.module.js | 404 B | 404 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 36.1 kB | 36.1 kB | ✓ |
Client Build Manifests
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_buildManifest.js | 81 B | 81 B | ✓ |
_buildManifest.js gzip | 61 B | 61 B | ✓ |
_buildManifest.module.js | 81 B | 81 B | ✓ |
_buildManife..dule.js gzip | 61 B | 61 B | ✓ |
Overall change | 162 B | 162 B | ✓ |
Rendered Page Sizes
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
index.html | 3.62 kB | 3.62 kB | ✓ |
index.html gzip | 946 B | 946 B | ✓ |
link.html | 3.66 kB | 3.66 kB | ✓ |
link.html gzip | 954 B | 954 B | ✓ |
withRouter.html | 3.67 kB | 3.67 kB | ✓ |
withRouter.html gzip | 941 B | 941 B | ✓ |
Overall change | 10.9 kB | 10.9 kB | ✓ |
Serverless Mode (Increase detected ⚠️ )
General Overall increase ⚠️
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
buildDuration | 16.6s | 16.7s | |
nodeModulesSize | 48.5 MB | 48.5 MB |
Client Bundles (main, webpack, commons)
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
main-HASH.js | 18.9 kB | 18.9 kB | ✓ |
main-HASH.js gzip | 6.79 kB | 6.79 kB | ✓ |
webpack-HASH.js | 1.53 kB | 1.53 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
4952ddcd88e7..9dda6167a.js | 21.9 kB | 21.9 kB | ✓ |
4952ddcd88e7..167a.js gzip | 7.81 kB | 7.81 kB | ✓ |
de003c3a9d30..3a0560775.js | 43.2 kB | 43.2 kB | ✓ |
de003c3a9d30..0775.js gzip | 15.5 kB | 15.5 kB | ✓ |
framework.5b..dbaff70d3.js | 125 kB | 125 kB | ✓ |
framework.5b..70d3.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 211 kB | 211 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
main-HASH.module.js | 17.2 kB | 17.2 kB | ✓ |
main-HASH.module.js gzip | 6.52 kB | 6.52 kB | ✓ |
webpack-HASH.module.js | 1.53 kB | 1.53 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..72.module.js | 45.6 kB | 45.6 kB | ✓ |
de003c3a9d30..dule.js gzip | 16.5 kB | 16.5 kB | ✓ |
framework.5b..d3.module.js | 125 kB | 125 kB | ✓ |
framework.5b..dule.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 190 kB | 190 kB | ✓ |
Client Pages
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_app.js | 1.81 kB | 1.81 kB | ✓ |
_app.js gzip | 873 B | 873 B | ✓ |
_error.js | 12 kB | 12 kB | ✓ |
_error.js gzip | 4.73 kB | 4.73 kB | ✓ |
hooks.js | 12.7 kB | 12.7 kB | ✓ |
hooks.js gzip | 4.79 kB | 4.79 kB | ✓ |
index.js | 318 B | 318 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js | 8.14 kB | 8.14 kB | ✓ |
link.js gzip | 3.5 kB | 3.5 kB | ✓ |
routerDirect.js | 408 B | 408 B | ✓ |
routerDirect.js gzip | 281 B | 281 B | ✓ |
withRouter.js | 419 B | 419 B | ✓ |
withRouter.js gzip | 280 B | 280 B | ✓ |
Overall change | 35.8 kB | 35.8 kB | ✓ |
Client Pages Modern
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_app.module.js | 1.7 kB | 1.7 kB | ✓ |
_app.module.js gzip | 832 B | 832 B | ✓ |
_error.module.js | 23.3 kB | 23.3 kB | ✓ |
_error.module.js gzip | 8.59 kB | 8.59 kB | ✓ |
hooks.module.js | 1.52 kB | 1.52 kB | ✓ |
hooks.module.js gzip | 793 B | 793 B | ✓ |
index.module.js | 294 B | 294 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js | 8.53 kB | 8.53 kB | ✓ |
link.module.js gzip | 3.68 kB | 3.68 kB | ✓ |
routerDirect.module.js | 394 B | 394 B | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.module.js | 404 B | 404 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 36.1 kB | 36.1 kB | ✓ |
Client Build Manifests
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_buildManifest.js | 81 B | 81 B | ✓ |
_buildManifest.js gzip | 61 B | 61 B | ✓ |
_buildManifest.module.js | 81 B | 81 B | ✓ |
_buildManife..dule.js gzip | 61 B | 61 B | ✓ |
Overall change | 162 B | 162 B | ✓ |
Serverless bundles Overall increase ⚠️
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_error.js | 254 kB | 254 kB | |
_error.js gzip | 68 kB | 68.1 kB | |
hooks.html | 3.75 kB | 3.75 kB | ✓ |
hooks.html gzip | 979 B | 979 B | ✓ |
index.js | 254 kB | 255 kB | |
index.js gzip | 68.4 kB | 68.5 kB | |
link.js | 262 kB | 262 kB | |
link.js gzip | 70.4 kB | 70.5 kB | |
routerDirect.js | 255 kB | 256 kB | |
routerDirect.js gzip | 68.4 kB | 68.5 kB | |
withRouter.js | 255 kB | 256 kB | |
withRouter.js gzip | 68.5 kB | 68.6 kB | |
Overall change | 1.28 MB | 1.29 MB |
Commit: fec4838
@@ -47,6 +47,10 @@ const defaultConfig: { [key: string]: any } = { | |||
profiling: false, | |||
publicDirectory: false, | |||
sprFlushToDisk: true, | |||
deferPageScript: false, |
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.
I feel like this should be 1 option instead of 4. The goal is to remove this option as soon as it's verified it improves metrics.
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.
I could make it one option.
I made it separate flags originally because I wanted to allow as much flexibility as possible. There might be some scripts that you want to run as soon as the page loads, e.g. an analytics payload.
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.
Based on the options you added you wouldn't be able to change that granularly though. It's also hard to single out that specific script or it's added through custom _document already (because they require a custom <script>
to be inlined)
Stats from current PRDefault Server Mode (Increase detected
|
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
buildDuration | 15.7s | 15.9s | |
nodeModulesSize | 48.5 MB | 48.5 MB |
Client Bundles (main, webpack, commons)
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
main-HASH.js | 18.9 kB | 18.9 kB | ✓ |
main-HASH.js gzip | 6.79 kB | 6.79 kB | ✓ |
webpack-HASH.js | 1.53 kB | 1.53 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
4952ddcd88e7..9dda6167a.js | 21.9 kB | 21.9 kB | ✓ |
4952ddcd88e7..167a.js gzip | 7.81 kB | 7.81 kB | ✓ |
de003c3a9d30..3a0560775.js | 43.2 kB | 43.2 kB | ✓ |
de003c3a9d30..0775.js gzip | 15.5 kB | 15.5 kB | ✓ |
framework.5b..dbaff70d3.js | 125 kB | 125 kB | ✓ |
framework.5b..70d3.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 211 kB | 211 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
main-HASH.module.js | 17.2 kB | 17.2 kB | ✓ |
main-HASH.module.js gzip | 6.52 kB | 6.52 kB | ✓ |
webpack-HASH.module.js | 1.53 kB | 1.53 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..72.module.js | 45.6 kB | 45.6 kB | ✓ |
de003c3a9d30..dule.js gzip | 16.5 kB | 16.5 kB | ✓ |
framework.5b..d3.module.js | 125 kB | 125 kB | ✓ |
framework.5b..dule.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 190 kB | 190 kB | ✓ |
Client Pages
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_app.js | 1.81 kB | 1.81 kB | ✓ |
_app.js gzip | 873 B | 873 B | ✓ |
_error.js | 12 kB | 12 kB | ✓ |
_error.js gzip | 4.73 kB | 4.73 kB | ✓ |
hooks.js | 12.7 kB | 12.7 kB | ✓ |
hooks.js gzip | 4.79 kB | 4.79 kB | ✓ |
index.js | 318 B | 318 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js | 8.14 kB | 8.14 kB | ✓ |
link.js gzip | 3.5 kB | 3.5 kB | ✓ |
routerDirect.js | 408 B | 408 B | ✓ |
routerDirect.js gzip | 281 B | 281 B | ✓ |
withRouter.js | 419 B | 419 B | ✓ |
withRouter.js gzip | 280 B | 280 B | ✓ |
Overall change | 35.8 kB | 35.8 kB | ✓ |
Client Pages Modern
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_app.module.js | 1.7 kB | 1.7 kB | ✓ |
_app.module.js gzip | 832 B | 832 B | ✓ |
_error.module.js | 23.3 kB | 23.3 kB | ✓ |
_error.module.js gzip | 8.59 kB | 8.59 kB | ✓ |
hooks.module.js | 1.52 kB | 1.52 kB | ✓ |
hooks.module.js gzip | 793 B | 793 B | ✓ |
index.module.js | 294 B | 294 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js | 8.53 kB | 8.53 kB | ✓ |
link.module.js gzip | 3.68 kB | 3.68 kB | ✓ |
routerDirect.module.js | 394 B | 394 B | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.module.js | 404 B | 404 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 36.1 kB | 36.1 kB | ✓ |
Client Build Manifests
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_buildManifest.js | 81 B | 81 B | ✓ |
_buildManifest.js gzip | 61 B | 61 B | ✓ |
_buildManifest.module.js | 81 B | 81 B | ✓ |
_buildManife..dule.js gzip | 61 B | 61 B | ✓ |
Overall change | 162 B | 162 B | ✓ |
Rendered Page Sizes
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
index.html | 3.62 kB | 3.62 kB | ✓ |
index.html gzip | 946 B | 946 B | ✓ |
link.html | 3.66 kB | 3.66 kB | ✓ |
link.html gzip | 954 B | 954 B | ✓ |
withRouter.html | 3.67 kB | 3.67 kB | ✓ |
withRouter.html gzip | 941 B | 941 B | ✓ |
Overall change | 10.9 kB | 10.9 kB | ✓ |
Serverless Mode (Increase detected ⚠️ )
General Overall increase ⚠️
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
buildDuration | 16.4s | 15.9s | -472ms |
nodeModulesSize | 48.5 MB | 48.5 MB |
Client Bundles (main, webpack, commons)
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
main-HASH.js | 18.9 kB | 18.9 kB | ✓ |
main-HASH.js gzip | 6.79 kB | 6.79 kB | ✓ |
webpack-HASH.js | 1.53 kB | 1.53 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
4952ddcd88e7..9dda6167a.js | 21.9 kB | 21.9 kB | ✓ |
4952ddcd88e7..167a.js gzip | 7.81 kB | 7.81 kB | ✓ |
de003c3a9d30..3a0560775.js | 43.2 kB | 43.2 kB | ✓ |
de003c3a9d30..0775.js gzip | 15.5 kB | 15.5 kB | ✓ |
framework.5b..dbaff70d3.js | 125 kB | 125 kB | ✓ |
framework.5b..70d3.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 211 kB | 211 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
main-HASH.module.js | 17.2 kB | 17.2 kB | ✓ |
main-HASH.module.js gzip | 6.52 kB | 6.52 kB | ✓ |
webpack-HASH.module.js | 1.53 kB | 1.53 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..72.module.js | 45.6 kB | 45.6 kB | ✓ |
de003c3a9d30..dule.js gzip | 16.5 kB | 16.5 kB | ✓ |
framework.5b..d3.module.js | 125 kB | 125 kB | ✓ |
framework.5b..dule.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 190 kB | 190 kB | ✓ |
Client Pages
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_app.js | 1.81 kB | 1.81 kB | ✓ |
_app.js gzip | 873 B | 873 B | ✓ |
_error.js | 12 kB | 12 kB | ✓ |
_error.js gzip | 4.73 kB | 4.73 kB | ✓ |
hooks.js | 12.7 kB | 12.7 kB | ✓ |
hooks.js gzip | 4.79 kB | 4.79 kB | ✓ |
index.js | 318 B | 318 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js | 8.14 kB | 8.14 kB | ✓ |
link.js gzip | 3.5 kB | 3.5 kB | ✓ |
routerDirect.js | 408 B | 408 B | ✓ |
routerDirect.js gzip | 281 B | 281 B | ✓ |
withRouter.js | 419 B | 419 B | ✓ |
withRouter.js gzip | 280 B | 280 B | ✓ |
Overall change | 35.8 kB | 35.8 kB | ✓ |
Client Pages Modern
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_app.module.js | 1.7 kB | 1.7 kB | ✓ |
_app.module.js gzip | 832 B | 832 B | ✓ |
_error.module.js | 23.3 kB | 23.3 kB | ✓ |
_error.module.js gzip | 8.59 kB | 8.59 kB | ✓ |
hooks.module.js | 1.52 kB | 1.52 kB | ✓ |
hooks.module.js gzip | 793 B | 793 B | ✓ |
index.module.js | 294 B | 294 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js | 8.53 kB | 8.53 kB | ✓ |
link.module.js gzip | 3.68 kB | 3.68 kB | ✓ |
routerDirect.module.js | 394 B | 394 B | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.module.js | 404 B | 404 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 36.1 kB | 36.1 kB | ✓ |
Client Build Manifests
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_buildManifest.js | 81 B | 81 B | ✓ |
_buildManifest.js gzip | 61 B | 61 B | ✓ |
_buildManifest.module.js | 81 B | 81 B | ✓ |
_buildManife..dule.js gzip | 61 B | 61 B | ✓ |
Overall change | 162 B | 162 B | ✓ |
Serverless bundles Overall increase ⚠️
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_error.js | 254 kB | 254 kB | |
_error.js gzip | 68 kB | 68.1 kB | |
hooks.html | 3.75 kB | 3.75 kB | ✓ |
hooks.html gzip | 979 B | 979 B | ✓ |
index.js | 254 kB | 255 kB | |
index.js gzip | 68.4 kB | 68.4 kB | |
link.js | 262 kB | 262 kB | |
link.js gzip | 70.4 kB | 70.4 kB | |
routerDirect.js | 255 kB | 255 kB | |
routerDirect.js gzip | 68.4 kB | 68.5 kB | |
withRouter.js | 255 kB | 255 kB | |
withRouter.js gzip | 68.5 kB | 68.5 kB | |
Overall change | 1.28 MB | 1.29 MB |
Commit: 958fbbf
@timneutkens Is there anything else I need to do to get this PR merged and released? |
… into htbvo-pluggable-script-load-attr
Stats from current PRDefault Server Mode (Increase detected
|
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
buildDuration | 15.8s | 15.9s | |
nodeModulesSize | 48.7 MB | 48.7 MB |
Client Bundles (main, webpack, commons)
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
main-HASH.js | 18.9 kB | 18.9 kB | ✓ |
main-HASH.js gzip | 6.8 kB | 6.8 kB | ✓ |
webpack-HASH.js | 1.53 kB | 1.53 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
16b1a7225520..4a7b46563.js | 14.9 kB | 14.9 kB | ✓ |
16b1a7225520..6563.js gzip | 5.38 kB | 5.38 kB | ✓ |
4952ddcd88e7..bfe360fe6.js | 10.5 kB | 10.5 kB | ✓ |
4952ddcd88e7..0fe6.js gzip | 4.06 kB | 4.06 kB | ✓ |
commons.HASH.js | 11.3 kB | 11.3 kB | ✓ |
commons.HASH.js gzip | 4.23 kB | 4.23 kB | ✓ |
de003c3a9d30..9e9c1d310.js | 28.6 kB | 28.6 kB | ✓ |
de003c3a9d30..d310.js gzip | 10.8 kB | 10.8 kB | ✓ |
framework.1b..cdcfe1283.js | 125 kB | 125 kB | ✓ |
framework.1b..1283.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 211 kB | 211 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
main-HASH.module.js | 17.2 kB | 17.2 kB | ✓ |
main-HASH.module.js gzip | 6.53 kB | 6.53 kB | ✓ |
webpack-HASH.module.js | 1.53 kB | 1.53 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
16b1a7225520..d2.module.js | 10.8 kB | 10.8 kB | ✓ |
16b1a7225520..dule.js gzip | 4.05 kB | 4.05 kB | ✓ |
4952ddcd88e7..4a.module.js | 12.8 kB | 12.8 kB | ✓ |
4952ddcd88e7..dule.js gzip | 4.75 kB | 4.75 kB | ✓ |
de003c3a9d30..11.module.js | 22.1 kB | 22.1 kB | ✓ |
de003c3a9d30..dule.js gzip | 8.68 kB | 8.68 kB | ✓ |
framework.5b..d3.module.js | 125 kB | 125 kB | ✓ |
framework.5b..dule.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 190 kB | 190 kB | ✓ |
Client Pages
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_app.js | 1.63 kB | 1.63 kB | ✓ |
_app.js gzip | 788 B | 788 B | ✓ |
_error.js | 12.3 kB | 12.3 kB | ✓ |
_error.js gzip | 4.79 kB | 4.79 kB | ✓ |
hooks.js | 1.51 kB | 1.51 kB | ✓ |
hooks.js gzip | 789 B | 789 B | ✓ |
index.js | 318 B | 318 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js | 8.15 kB | 8.15 kB | ✓ |
link.js gzip | 3.5 kB | 3.5 kB | ✓ |
routerDirect.js | 413 B | 413 B | ✓ |
routerDirect.js gzip | 285 B | 285 B | ✓ |
withRouter.js | 423 B | 423 B | ✓ |
withRouter.js gzip | 284 B | 284 B | ✓ |
Overall change | 24.7 kB | 24.7 kB | ✓ |
Client Pages Modern
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_app.module.js | 1.54 kB | 1.54 kB | ✓ |
_app.module.js gzip | 756 B | 756 B | ✓ |
_error.module.js | 10.6 kB | 10.6 kB | ✓ |
_error.module.js gzip | 4.28 kB | 4.28 kB | ✓ |
hooks.module.js | 1.52 kB | 1.52 kB | ✓ |
hooks.module.js gzip | 794 B | 794 B | ✓ |
index.module.js | 294 B | 294 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js | 8.53 kB | 8.53 kB | ✓ |
link.module.js gzip | 3.69 kB | 3.69 kB | ✓ |
routerDirect.module.js | 399 B | 399 B | ✓ |
routerDirect..dule.js gzip | 285 B | 285 B | ✓ |
withRouter.module.js | 409 B | 409 B | ✓ |
withRouter.m..dule.js gzip | 282 B | 282 B | ✓ |
Overall change | 23.3 kB | 23.3 kB | ✓ |
Client Build Manifests
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_buildManifest.js | 244 B | 244 B | ✓ |
_buildManifest.js gzip | 200 B | 200 B | ✓ |
_buildManifest.module.js | 251 B | 251 B | ✓ |
_buildManife..dule.js gzip | 209 B | 209 B | ✓ |
Overall change | 495 B | 495 B | ✓ |
Rendered Page Sizes
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
index.html | 3.94 kB | 3.94 kB | ✓ |
index.html gzip | 1 kB | 1 kB | ✓ |
link.html | 4.47 kB | 4.47 kB | ✓ |
link.html gzip | 1.08 kB | 1.08 kB | ✓ |
withRouter.html | 4.47 kB | 4.47 kB | ✓ |
withRouter.html gzip | 1.07 kB | 1.07 kB | ✓ |
Overall change | 12.9 kB | 12.9 kB | ✓ |
Serverless Mode (Increase detected ⚠️ )
General Overall increase ⚠️
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
buildDuration | 16.6s | 16.4s | -142ms |
nodeModulesSize | 48.7 MB | 48.7 MB |
Client Bundles (main, webpack, commons)
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
main-HASH.js | 18.9 kB | 18.9 kB | ✓ |
main-HASH.js gzip | 6.8 kB | 6.8 kB | ✓ |
webpack-HASH.js | 1.53 kB | 1.53 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
16b1a7225520..4a7b46563.js | 14.9 kB | 14.9 kB | ✓ |
16b1a7225520..6563.js gzip | 5.38 kB | 5.38 kB | ✓ |
4952ddcd88e7..bfe360fe6.js | 10.5 kB | 10.5 kB | ✓ |
4952ddcd88e7..0fe6.js gzip | 4.06 kB | 4.06 kB | ✓ |
commons.HASH.js | 11.3 kB | 11.3 kB | ✓ |
commons.HASH.js gzip | 4.23 kB | 4.23 kB | ✓ |
de003c3a9d30..9e9c1d310.js | 28.6 kB | 28.6 kB | ✓ |
de003c3a9d30..d310.js gzip | 10.8 kB | 10.8 kB | ✓ |
framework.1b..cdcfe1283.js | 125 kB | 125 kB | ✓ |
framework.1b..1283.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 211 kB | 211 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
main-HASH.module.js | 17.2 kB | 17.2 kB | ✓ |
main-HASH.module.js gzip | 6.53 kB | 6.53 kB | ✓ |
webpack-HASH.module.js | 1.53 kB | 1.53 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
16b1a7225520..d2.module.js | 10.8 kB | 10.8 kB | ✓ |
16b1a7225520..dule.js gzip | 4.05 kB | 4.05 kB | ✓ |
4952ddcd88e7..4a.module.js | 12.8 kB | 12.8 kB | ✓ |
4952ddcd88e7..dule.js gzip | 4.75 kB | 4.75 kB | ✓ |
de003c3a9d30..11.module.js | 22.1 kB | 22.1 kB | ✓ |
de003c3a9d30..dule.js gzip | 8.68 kB | 8.68 kB | ✓ |
framework.5b..d3.module.js | 125 kB | 125 kB | ✓ |
framework.5b..dule.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 190 kB | 190 kB | ✓ |
Client Pages
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_app.js | 1.63 kB | 1.63 kB | ✓ |
_app.js gzip | 788 B | 788 B | ✓ |
_error.js | 12.3 kB | 12.3 kB | ✓ |
_error.js gzip | 4.79 kB | 4.79 kB | ✓ |
hooks.js | 1.51 kB | 1.51 kB | ✓ |
hooks.js gzip | 789 B | 789 B | ✓ |
index.js | 318 B | 318 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js | 8.15 kB | 8.15 kB | ✓ |
link.js gzip | 3.5 kB | 3.5 kB | ✓ |
routerDirect.js | 413 B | 413 B | ✓ |
routerDirect.js gzip | 285 B | 285 B | ✓ |
withRouter.js | 423 B | 423 B | ✓ |
withRouter.js gzip | 284 B | 284 B | ✓ |
Overall change | 24.7 kB | 24.7 kB | ✓ |
Client Pages Modern
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_app.module.js | 1.54 kB | 1.54 kB | ✓ |
_app.module.js gzip | 756 B | 756 B | ✓ |
_error.module.js | 10.6 kB | 10.6 kB | ✓ |
_error.module.js gzip | 4.28 kB | 4.28 kB | ✓ |
hooks.module.js | 1.52 kB | 1.52 kB | ✓ |
hooks.module.js gzip | 794 B | 794 B | ✓ |
index.module.js | 294 B | 294 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js | 8.53 kB | 8.53 kB | ✓ |
link.module.js gzip | 3.69 kB | 3.69 kB | ✓ |
routerDirect.module.js | 399 B | 399 B | ✓ |
routerDirect..dule.js gzip | 285 B | 285 B | ✓ |
withRouter.module.js | 409 B | 409 B | ✓ |
withRouter.m..dule.js gzip | 282 B | 282 B | ✓ |
Overall change | 23.3 kB | 23.3 kB | ✓ |
Client Build Manifests
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_buildManifest.js | 244 B | 244 B | ✓ |
_buildManifest.js gzip | 200 B | 200 B | ✓ |
_buildManifest.module.js | 251 B | 251 B | ✓ |
_buildManife..dule.js gzip | 209 B | 209 B | ✓ |
Overall change | 495 B | 495 B | ✓ |
Serverless bundles Overall increase ⚠️
zeit/next.js canary | htbvo/next.js pluggable-script-load-attr | Change | |
---|---|---|---|
_error.js | 234 kB | 235 kB | |
_error.js gzip | 62.8 kB | 62.9 kB | |
hooks.html | 4.08 kB | 4.08 kB | ✓ |
hooks.html gzip | 1.03 kB | 1.03 kB | ✓ |
index.js | 235 kB | 235 kB | |
index.js gzip | 62.9 kB | 63 kB | |
link.js | 267 kB | 267 kB | |
link.js gzip | 71.9 kB | 71.9 kB | |
routerDirect.js | 260 kB | 260 kB | |
routerDirect.js gzip | 69.9 kB | 69.9 kB | |
withRouter.js | 260 kB | 260 kB | |
withRouter.js gzip | 69.9 kB | 69.9 kB | |
Overall change | 1.26 MB | 1.26 MB |
Commit: 55ed89a
Thanks @htbvo, I've updated the PR and added tests! |
NextScript uses the
async
attribute to load javascript. Theasync
attribute allows javascript parsing and execution to interrupt the main thread which could be in the middle of parsing the DOM. Interrupting the DOM will increase the time to first contentful paint.This pull request adds optional attributes to NextScript to allow for using the
defer
tag instead. Thedefer
tag allows javascript to be downloaded asynchronously, but defers parsing and execution until after the main thread has finished parsing the DOM.Local testing with lighthouse shows about a 1 second improvement in first paint times. See attached images.
With the default
async
tag:With the optional
defer
tag enabled: