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
export: Don't add a slash on hash links #9973
Conversation
Stats from current PRDefault Server ModeGeneral Overall increase
|
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
---|---|---|---|
buildDuration | 13.7s | 13.6s | -17ms |
nodeModulesSize | 48.9 MB | 48.9 MB |
Client Bundles (main, webpack, commons)
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
---|---|---|---|
main-HASH.js gzip | 5.13 kB | 5.13 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..4cf7.js gzip | 13.7 kB | 13.7 kB | ✓ |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 67.5 kB | 67.5 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
---|---|---|---|
main-HASH.module.js gzip | 4.19 kB | 4.19 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
4952ddcd88e7..dule.js gzip | 5.56 kB | 5.56 kB | ✓ |
de003c3a9d30..dule.js gzip | 12.5 kB | 12.5 kB | ✓ |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 62.1 kB | 62.1 kB | ✓ |
Legacy Client Bundles (polyfills)
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | 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 | Janpot/next.js fix-hash-trailing-slash | Change | |
---|---|---|---|
_app.js gzip | 1.33 kB | 1.33 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.9 kB | 2.9 kB | ✓ |
routerDirect.js gzip | 283 B | 283 B | ✓ |
withRouter.js gzip | 282 B | 282 B | ✓ |
Overall change | 9.87 kB | 9.87 kB | ✓ |
Client Pages Modern
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
---|---|---|---|
_app.module.js gzip | 757 B | 757 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.47 kB | 2.47 kB | ✓ |
routerDirect..dule.js gzip | 273 B | 273 B | ✓ |
withRouter.m..dule.js gzip | 272 B | 272 B | ✓ |
Overall change | 7.41 kB | 7.41 kB | ✓ |
Client Build Manifests
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | 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 | Janpot/next.js fix-hash-trailing-slash | 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
General Overall increase ⚠️
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
---|---|---|---|
buildDuration | 13.8s | 13.9s | |
nodeModulesSize | 48.9 MB | 48.9 MB |
Client Bundles (main, webpack, commons)
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
---|---|---|---|
main-HASH.js gzip | 5.13 kB | 5.13 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..4cf7.js gzip | 13.7 kB | 13.7 kB | ✓ |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 67.5 kB | 67.5 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
---|---|---|---|
main-HASH.module.js gzip | 4.19 kB | 4.19 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
4952ddcd88e7..dule.js gzip | 5.56 kB | 5.56 kB | ✓ |
de003c3a9d30..dule.js gzip | 12.5 kB | 12.5 kB | ✓ |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 62.1 kB | 62.1 kB | ✓ |
Legacy Client Bundles (polyfills)
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | 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 | Janpot/next.js fix-hash-trailing-slash | Change | |
---|---|---|---|
_app.js gzip | 1.33 kB | 1.33 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.9 kB | 2.9 kB | ✓ |
routerDirect.js gzip | 283 B | 283 B | ✓ |
withRouter.js gzip | 282 B | 282 B | ✓ |
Overall change | 9.87 kB | 9.87 kB | ✓ |
Client Pages Modern
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
---|---|---|---|
_app.module.js gzip | 757 B | 757 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.47 kB | 2.47 kB | ✓ |
routerDirect..dule.js gzip | 273 B | 273 B | ✓ |
withRouter.m..dule.js gzip | 272 B | 272 B | ✓ |
Overall change | 7.41 kB | 7.41 kB | ✓ |
Client Build Manifests
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
---|---|---|---|
_buildManifest.js gzip | 61 B | 61 B | ✓ |
_buildManife..dule.js gzip | 61 B | 61 B | ✓ |
Overall change | 122 B | 122 B | ✓ |
Serverless bundles
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
---|---|---|---|
_error.js gzip | 77.7 kB | 77.7 kB | ✓ |
hooks.html gzip | 1.05 kB | 1.05 kB | ✓ |
index.js gzip | 78 kB | 78 kB | ✓ |
link.js gzip | 80.3 kB | 80.3 kB | ✓ |
routerDirect.js gzip | 78 kB | 78 kB | ✓ |
withRouter.js gzip | 78.1 kB | 78.1 kB | ✓ |
Overall change | 393 kB | 393 kB | ✓ |
Commit: a1dff64
Also, if bundle size turns out to be a problem, I think we can probably also replace if (path) {
path = path.replace(/\/$/, '')
// Append a trailing slash if this path does not have an extension
if (!/\.[^/]+\/?$/.test(path)) path += `/`
} with // Append a trailing slash if this path does not have an extension and does not have a trailing slash
if (path && !/(\.[^/]+\/?$|\/$)/.test(path)) path += `/` that should also shave off some of those bytes. |
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.
This looks fine to me, and should only add 7 bytes pre-gzip. The new code is excluded unless you're using this feature.
Thanks! |
Stats from current PRDefault Server ModeGeneral Overall increase
|
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
---|---|---|---|
buildDuration | 13.9s | 13.9s | -9ms |
nodeModulesSize | 48.9 MB | 48.9 MB |
Client Bundles (main, webpack, commons)
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | 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..9881.js gzip | 13.7 kB | 13.7 kB | ✓ |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 67.4 kB | 67.4 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
---|---|---|---|
main-HASH.module.js gzip | 4.17 kB | 4.17 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
4952ddcd88e7..dule.js gzip | 5.56 kB | 5.56 kB | ✓ |
de003c3a9d30..dule.js gzip | 12.5 kB | 12.5 kB | ✓ |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 62.1 kB | 62.1 kB | ✓ |
Legacy Client Bundles (polyfills)
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | 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 | Janpot/next.js fix-hash-trailing-slash | Change | |
---|---|---|---|
_app.js gzip | 1.33 kB | 1.33 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.9 kB | 2.9 kB | ✓ |
routerDirect.js gzip | 283 B | 283 B | ✓ |
withRouter.js gzip | 282 B | 282 B | ✓ |
Overall change | 9.87 kB | 9.87 kB | ✓ |
Client Pages Modern
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
---|---|---|---|
_app.module.js gzip | 757 B | 757 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.47 kB | 2.47 kB | ✓ |
routerDirect..dule.js gzip | 273 B | 273 B | ✓ |
withRouter.m..dule.js gzip | 272 B | 272 B | ✓ |
Overall change | 7.41 kB | 7.41 kB | ✓ |
Client Build Manifests
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | 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 | Janpot/next.js fix-hash-trailing-slash | Change | |
---|---|---|---|
index.html gzip | 1.02 kB | 1.02 kB | ✓ |
link.html gzip | 1.03 kB | 1.03 kB | ✓ |
withRouter.html gzip | 1.01 kB | 1.01 kB | ✓ |
Overall change | 3.06 kB | 3.06 kB | ✓ |
Serverless Mode
General Overall increase ⚠️
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
---|---|---|---|
buildDuration | 13.8s | 14.2s | |
nodeModulesSize | 48.9 MB | 48.9 MB |
Client Bundles (main, webpack, commons)
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | 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..9881.js gzip | 13.7 kB | 13.7 kB | ✓ |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 67.4 kB | 67.4 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
---|---|---|---|
main-HASH.module.js gzip | 4.17 kB | 4.17 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
4952ddcd88e7..dule.js gzip | 5.56 kB | 5.56 kB | ✓ |
de003c3a9d30..dule.js gzip | 12.5 kB | 12.5 kB | ✓ |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 62.1 kB | 62.1 kB | ✓ |
Legacy Client Bundles (polyfills)
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | 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 | Janpot/next.js fix-hash-trailing-slash | Change | |
---|---|---|---|
_app.js gzip | 1.33 kB | 1.33 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.9 kB | 2.9 kB | ✓ |
routerDirect.js gzip | 283 B | 283 B | ✓ |
withRouter.js gzip | 282 B | 282 B | ✓ |
Overall change | 9.87 kB | 9.87 kB | ✓ |
Client Pages Modern
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
---|---|---|---|
_app.module.js gzip | 757 B | 757 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.47 kB | 2.47 kB | ✓ |
routerDirect..dule.js gzip | 273 B | 273 B | ✓ |
withRouter.m..dule.js gzip | 272 B | 272 B | ✓ |
Overall change | 7.41 kB | 7.41 kB | ✓ |
Client Build Manifests
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
---|---|---|---|
_buildManifest.js gzip | 61 B | 61 B | ✓ |
_buildManife..dule.js gzip | 61 B | 61 B | ✓ |
Overall change | 122 B | 122 B | ✓ |
Serverless bundles
zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
---|---|---|---|
_error.js gzip | 77.7 kB | 77.7 kB | ✓ |
hooks.html gzip | 1.05 kB | 1.05 kB | ✓ |
index.js gzip | 78 kB | 78 kB | ✓ |
link.js gzip | 80.4 kB | 80.4 kB | ✓ |
routerDirect.js gzip | 78 kB | 78 kB | ✓ |
withRouter.js gzip | 78.1 kB | 78.1 kB | ✓ |
Overall change | 393 kB | 393 kB | ✓ |
Commit: 55f070b
@Janpot Thanks |
Published as |
Fixes #9678
If I'm not mistaken this code is only included during export with trailing slash. So the impact on the bundle size should be acceptable.