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
Normalize trailing slashes #13333
Normalize trailing slashes #13333
Conversation
Failing test suitestest/integration/api-catch-all/test/index.test.js
Expand output● API routes › dev support › should 404 when catch-all with index and trailing slash
● API routes › Server support › should 404 when catch-all with index and trailing slash
● API routes › Serverless support › should 404 when catch-all with index and trailing slash
test/integration/serverless-trace/test/index.test.js
Expand output● Serverless Trace › should 404 on API request with trailing slash
test/integration/serverless/test/index.test.js
Expand output● Serverless › should 404 on API request with trailing slash
test/integration/client-navigation/test/index.test.js
Expand output● Client Navigation › with 404 pages › should 404 for /
● Client Navigation › with 404 pages › should 404 for /
● Client Navigation › Rendering via HTTP › 404 › should 404 for /
|
Stats from current PRDefault Server Mode (Increase detected
|
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 13.5s | 13.5s | |
nodeModulesSize | 61.8 MB | 61.8 MB |
Page Load Tests Overall increase ✓
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 2.426 | 2.301 | -0.12 |
/ avg req/sec | 1030.59 | 1086.33 | |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.501 | 1.461 | -0.04 |
/error-in-render avg req/sec | 1665.02 | 1710.83 |
Client Bundles (main, webpack, commons)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.59 kB | 6.59 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..1e23.js gzip | 10.5 kB | 10.5 kB | ✓ |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 57 kB | 57 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.67 kB | 5.67 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | 6.92 kB | ✓ |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.5 kB | 52.5 kB | ✓ |
Legacy Client Bundles (polyfills)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
_error.js gzip | 3.25 kB | 3.25 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.06 kB | 2.06 kB | ✓ |
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 8.22 kB | 8.22 kB | ✓ |
Client Pages Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.module.js gzip | 604 B | 604 B | ✓ |
_error.module.js gzip | 2.04 kB | 2.04 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.33 kB | 5.33 kB | ✓ |
Client Build Manifests
zeit/next.js canary | Janpot/next.js trailing-slashes | 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 trailing-slashes | Change | |
---|---|---|---|
index.html gzip | 927 B | 927 B | ✓ |
link.html gzip | 937 B | 937 B | ✓ |
withRouter.html gzip | 924 B | 924 B | ✓ |
Overall change | 2.79 kB | 2.79 kB | ✓ |
Serverless Mode (Increase detected ⚠️ )
General Overall increase ⚠️
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 14.4s | 14.2s | -207ms |
nodeModulesSize | 61.8 MB | 61.8 MB |
Client Bundles (main, webpack, commons)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.59 kB | 6.59 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..1e23.js gzip | 10.5 kB | 10.5 kB | ✓ |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 57 kB | 57 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.67 kB | 5.67 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | 6.92 kB | ✓ |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.5 kB | 52.5 kB | ✓ |
Legacy Client Bundles (polyfills)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
_error.js gzip | 3.25 kB | 3.25 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.06 kB | 2.06 kB | ✓ |
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 8.22 kB | 8.22 kB | ✓ |
Client Pages Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.module.js gzip | 604 B | 604 B | ✓ |
_error.module.js gzip | 2.04 kB | 2.04 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.33 kB | 5.33 kB | ✓ |
Client Build Manifests
zeit/next.js canary | Janpot/next.js trailing-slashes | 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 increase ⚠️
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_error.js | 844 kB | 844 kB | |
404.html | 4.18 kB | 4.18 kB | ✓ |
hooks.html | 3.81 kB | 3.81 kB | ✓ |
index.js | 844 kB | 844 kB | |
link.js | 882 kB | 882 kB | |
routerDirect.js | 874 kB | 874 kB | |
withRouter.js | 874 kB | 874 kB | |
Overall change | 4.33 MB | 4.33 MB |
Stats from current PRDefault Server Mode (Increase detected
|
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 12.6s | 12.8s | |
nodeModulesSize | 61.8 MB | 61.8 MB |
Page Load Tests Overall increase ✓
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 2.304 | 2.258 | -0.05 |
/ avg req/sec | 1085.18 | 1107.25 | |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.433 | 1.394 | -0.04 |
/error-in-render avg req/sec | 1743.99 | 1792.96 |
Client Bundles (main, webpack, commons)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.59 kB | 6.59 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..1e23.js gzip | 10.5 kB | 10.5 kB | ✓ |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 57 kB | 57 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.67 kB | 5.67 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | 6.92 kB | ✓ |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.5 kB | 52.5 kB | ✓ |
Legacy Client Bundles (polyfills)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
_error.js gzip | 3.25 kB | 3.25 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.06 kB | 2.06 kB | ✓ |
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 8.22 kB | 8.22 kB | ✓ |
Client Pages Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.module.js gzip | 604 B | 604 B | ✓ |
_error.module.js gzip | 2.04 kB | 2.04 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.33 kB | 5.33 kB | ✓ |
Client Build Manifests
zeit/next.js canary | Janpot/next.js trailing-slashes | 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 trailing-slashes | Change | |
---|---|---|---|
index.html gzip | 927 B | 927 B | ✓ |
link.html gzip | 937 B | 937 B | ✓ |
withRouter.html gzip | 924 B | 924 B | ✓ |
Overall change | 2.79 kB | 2.79 kB | ✓ |
Serverless Mode (Increase detected ⚠️ )
General Overall increase ⚠️
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 13.3s | 13.4s | |
nodeModulesSize | 61.8 MB | 61.8 MB |
Client Bundles (main, webpack, commons)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.59 kB | 6.59 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..1e23.js gzip | 10.5 kB | 10.5 kB | ✓ |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 57 kB | 57 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.67 kB | 5.67 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | 6.92 kB | ✓ |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.5 kB | 52.5 kB | ✓ |
Legacy Client Bundles (polyfills)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
_error.js gzip | 3.25 kB | 3.25 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.06 kB | 2.06 kB | ✓ |
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 8.22 kB | 8.22 kB | ✓ |
Client Pages Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.module.js gzip | 604 B | 604 B | ✓ |
_error.module.js gzip | 2.04 kB | 2.04 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.33 kB | 5.33 kB | ✓ |
Client Build Manifests
zeit/next.js canary | Janpot/next.js trailing-slashes | 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 increase ⚠️
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_error.js | 844 kB | 844 kB | |
404.html | 4.18 kB | 4.18 kB | ✓ |
hooks.html | 3.81 kB | 3.81 kB | ✓ |
index.js | 844 kB | 844 kB | |
link.js | 882 kB | 882 kB | |
routerDirect.js | 874 kB | 874 kB | |
withRouter.js | 874 kB | 874 kB | |
Overall change | 4.33 MB | 4.33 MB |
Failing test suitestest/integration/serverless-trace/test/index.test.js
Expand output● Serverless Trace › should 404 on API request with trailing slash
test/integration/serverless/test/index.test.js
Expand output● Serverless › should 404 on API request with trailing slash
test/integration/client-navigation/test/index.test.js
Expand output● Client Navigation › with 404 pages › should 404 for /
● Client Navigation › with 404 pages › should 404 for /
● Client Navigation › Rendering via HTTP › 404 › should 404 for /
|
Stats from current PRDefault Server Mode (Decrease detected ✓)General Overall increase
|
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 12.3s | 12.1s | -194ms |
nodeModulesSize | 61.8 MB | 61.8 MB |
Page Load Tests Overall decrease ⚠️
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 2.07 | 2.047 | -0.02 |
/ avg req/sec | 1207.73 | 1221.01 | |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.171 | 1.264 | |
/error-in-render avg req/sec | 2134.39 | 1977.83 | -156.56 |
Client Bundles (main, webpack, commons)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.59 kB | 6.59 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..1e23.js gzip | 10.5 kB | 10.5 kB | ✓ |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 57 kB | 57 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.67 kB | 5.67 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | 6.92 kB | ✓ |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.5 kB | 52.5 kB | ✓ |
Legacy Client Bundles (polyfills)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
_error.js gzip | 3.25 kB | 3.25 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.06 kB | 2.06 kB | ✓ |
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 8.22 kB | 8.22 kB | ✓ |
Client Pages Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.module.js gzip | 604 B | 604 B | ✓ |
_error.module.js gzip | 2.04 kB | 2.04 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.33 kB | 5.33 kB | ✓ |
Client Build Manifests
zeit/next.js canary | Janpot/next.js trailing-slashes | 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 trailing-slashes | Change | |
---|---|---|---|
index.html gzip | 927 B | 927 B | ✓ |
link.html gzip | 937 B | 937 B | ✓ |
withRouter.html gzip | 924 B | 924 B | ✓ |
Overall change | 2.79 kB | 2.79 kB | ✓ |
Serverless Mode (Increase detected ⚠️ )
General Overall increase ⚠️
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 13s | 12.7s | -354ms |
nodeModulesSize | 61.8 MB | 61.8 MB |
Client Bundles (main, webpack, commons)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.59 kB | 6.59 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..1e23.js gzip | 10.5 kB | 10.5 kB | ✓ |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 57 kB | 57 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.67 kB | 5.67 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | 6.92 kB | ✓ |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.5 kB | 52.5 kB | ✓ |
Legacy Client Bundles (polyfills)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
_error.js gzip | 3.25 kB | 3.25 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.06 kB | 2.06 kB | ✓ |
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 8.22 kB | 8.22 kB | ✓ |
Client Pages Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.module.js gzip | 604 B | 604 B | ✓ |
_error.module.js gzip | 2.04 kB | 2.04 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.33 kB | 5.33 kB | ✓ |
Client Build Manifests
zeit/next.js canary | Janpot/next.js trailing-slashes | 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 increase ⚠️
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_error.js | 844 kB | 844 kB | |
404.html | 4.18 kB | 4.18 kB | ✓ |
hooks.html | 3.81 kB | 3.81 kB | ✓ |
index.js | 844 kB | 844 kB | |
link.js | 882 kB | 882 kB | |
routerDirect.js | 874 kB | 874 kB | |
withRouter.js | 874 kB | 874 kB | |
Overall change | 4.33 MB | 4.33 MB |
Failing test suitestest/integration/serverless/test/index.test.js
Expand output● Serverless › should 404 on API request with trailing slash
test/integration/client-navigation/test/index.test.js
Expand output● Client Navigation › with 404 pages › should 404 for /
● Client Navigation › with 404 pages › should 404 for /
● Client Navigation › Rendering via HTTP › 404 › should 404 for /
|
Failing test suitestest/integration/app-document-import-order/test/index.test.js
Expand output● Root components import order › _app chunks should be attached to de dom before page chunks
● Root components import order › on dev server › _app chunks should be attached to de dom before page chunks
test/integration/amphtml-fragment-style/test/index.test.js
Expand output● AMP Fragment Styles › adds styles from fragment in AMP mode correctly
test/integration/404-page-custom-error/test/index.test.js
Expand output● Default 404 Page with custom _error › server mode › should render index page normal
● Default 404 Page with custom _error › serverless mode › should render index page normal
● Default 404 Page with custom _error › dev mode › should render index page normal
test/integration/dynamic-require/test/index.test.js
Expand output● Dynamic require › should not throw error when dynamic require is used
test/integration/amphtml-custom-validator/test/index.test.js
Expand output● AMP Custom Validator › should build and start successfully
● AMP Custom Validator › should run in dev mode successfully
test/acceptance/ReactRefreshRegression.test.js
Expand output● styled-components hydration mismatch
|
Failing test suitestest/integration/amphtml-fragment-style/test/index.test.js
Expand output● AMP Fragment Styles › adds styles from fragment in AMP mode correctly
test/integration/app-document-import-order/test/index.test.js
Expand output● Root components import order › _app chunks should be attached to de dom before page chunks
● Root components import order › on dev server › _app chunks should be attached to de dom before page chunks
test/integration/404-page-custom-error/test/index.test.js
Expand output● Default 404 Page with custom _error › server mode › should render index page normal
● Default 404 Page with custom _error › serverless mode › should render index page normal
● Default 404 Page with custom _error › dev mode › should render index page normal
test/integration/amphtml-custom-validator/test/index.test.js
Expand output● AMP Custom Validator › should build and start successfully
● AMP Custom Validator › should run in dev mode successfully
test/integration/dynamic-require/test/index.test.js
Expand output● Dynamic require › should not throw error when dynamic require is used
test/acceptance/ReactRefreshRegression.test.js
Expand output● styled-components hydration mismatch
|
Stats from current PRDefault Server Mode (Increase detected
|
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 11.5s | 11.1s | -398ms |
nodeModulesSize | 61.8 MB | 61.8 MB |
Page Load Tests Overall increase ✓
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 1.956 | 1.418 | -0.54 |
/ avg req/sec | 1278.19 | 1763.59 | |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.261 | 1.162 | -0.1 |
/error-in-render avg req/sec | 1983.08 | 2150.81 |
Client Bundles (main, webpack, commons)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.59 kB | 6.59 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..1e23.js gzip | 10.5 kB | 10.5 kB | ✓ |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 57 kB | 57 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.67 kB | 5.67 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | 6.92 kB | ✓ |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.5 kB | 52.5 kB | ✓ |
Legacy Client Bundles (polyfills)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
_error.js gzip | 3.25 kB | 3.25 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.06 kB | 2.06 kB | ✓ |
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 8.22 kB | 8.22 kB | ✓ |
Client Pages Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.module.js gzip | 604 B | 604 B | ✓ |
_error.module.js gzip | 2.04 kB | 2.04 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.33 kB | 5.33 kB | ✓ |
Client Build Manifests
zeit/next.js canary | Janpot/next.js trailing-slashes | 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 Overall decrease ✓
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
index.html gzip | 927 B | N/A | N/A |
link.html gzip | 937 B | 937 B | ✓ |
withRouter.html gzip | 924 B | 924 B | ✓ |
Overall change | 2.79 kB | 1.86 kB | -927 B |
Diffs
Diff for index.html
deleted
Serverless Mode (Increase detected ⚠️ )
General Overall increase ⚠️
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 11.7s | 11.7s | -48ms |
nodeModulesSize | 61.8 MB | 61.8 MB |
Client Bundles (main, webpack, commons)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.59 kB | 6.59 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..1e23.js gzip | 10.5 kB | 10.5 kB | ✓ |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 57 kB | 57 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.67 kB | 5.67 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | 6.92 kB | ✓ |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.5 kB | 52.5 kB | ✓ |
Legacy Client Bundles (polyfills)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
_error.js gzip | 3.25 kB | 3.25 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.06 kB | 2.06 kB | ✓ |
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 8.22 kB | 8.22 kB | ✓ |
Client Pages Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.module.js gzip | 604 B | 604 B | ✓ |
_error.module.js gzip | 2.04 kB | 2.04 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.33 kB | 5.33 kB | ✓ |
Client Build Manifests
zeit/next.js canary | Janpot/next.js trailing-slashes | 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 increase ⚠️
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_error.js | 844 kB | 844 kB | |
404.html | 4.18 kB | 4.18 kB | ✓ |
hooks.html | 3.81 kB | 3.81 kB | ✓ |
index.js | 844 kB | 844 kB | |
link.js | 882 kB | 882 kB | |
routerDirect.js | 874 kB | 874 kB | |
withRouter.js | 874 kB | 874 kB | |
Overall change | 4.33 MB | 4.33 MB |
Stats from current PRDefault Server Mode (Increase detected
|
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 11.8s | 11.4s | -309ms |
nodeModulesSize | 61.8 MB | 61.8 MB |
Page Load Tests Overall increase ✓
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 2.019 | 1.326 | -0.69 |
/ avg req/sec | 1238.39 | 1884.88 | |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.202 | 1.059 | -0.14 |
/error-in-render avg req/sec | 2079.54 | 2360.44 |
Client Bundles (main, webpack, commons)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.59 kB | 6.59 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..1e23.js gzip | 10.5 kB | 10.5 kB | ✓ |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 57 kB | 57 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.67 kB | 5.67 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | 6.92 kB | ✓ |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.5 kB | 52.5 kB | ✓ |
Legacy Client Bundles (polyfills)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
_error.js gzip | 3.25 kB | 3.25 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.06 kB | 2.06 kB | ✓ |
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 8.22 kB | 8.22 kB | ✓ |
Client Pages Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.module.js gzip | 604 B | 604 B | ✓ |
_error.module.js gzip | 2.04 kB | 2.04 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.33 kB | 5.33 kB | ✓ |
Client Build Manifests
zeit/next.js canary | Janpot/next.js trailing-slashes | 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 Overall decrease ✓
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
index.html gzip | 927 B | N/A | N/A |
link.html gzip | 937 B | 937 B | ✓ |
withRouter.html gzip | 924 B | 924 B | ✓ |
Overall change | 2.79 kB | 1.86 kB | -927 B |
Diffs
Diff for index.html
deleted
Serverless Mode (Increase detected ⚠️ )
General Overall increase ⚠️
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 12.2s | 12.2s | |
nodeModulesSize | 61.8 MB | 61.8 MB |
Client Bundles (main, webpack, commons)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.59 kB | 6.59 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..1e23.js gzip | 10.5 kB | 10.5 kB | ✓ |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 57 kB | 57 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.67 kB | 5.67 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | 6.92 kB | ✓ |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.5 kB | 52.5 kB | ✓ |
Legacy Client Bundles (polyfills)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
_error.js gzip | 3.25 kB | 3.25 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.06 kB | 2.06 kB | ✓ |
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 8.22 kB | 8.22 kB | ✓ |
Client Pages Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.module.js gzip | 604 B | 604 B | ✓ |
_error.module.js gzip | 2.04 kB | 2.04 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.33 kB | 5.33 kB | ✓ |
Client Build Manifests
zeit/next.js canary | Janpot/next.js trailing-slashes | 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 increase ⚠️
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_error.js | 844 kB | 844 kB | |
404.html | 4.18 kB | 4.18 kB | ✓ |
hooks.html | 3.81 kB | 3.81 kB | ✓ |
index.js | 844 kB | 844 kB | |
link.js | 882 kB | 882 kB | |
routerDirect.js | 874 kB | 874 kB | |
withRouter.js | 874 kB | 874 kB | |
Overall change | 4.33 MB | 4.33 MB |
Stats from current PRDefault Server Mode (Increase detected
|
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 12s | 11.9s | -120ms |
nodeModulesSize | 61.8 MB | 61.8 MB |
Page Load Tests Overall increase ✓
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 1.966 | 1.974 | |
/ avg req/sec | 1271.55 | 1266.19 | -5.36 |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.159 | 1.119 | -0.04 |
/error-in-render avg req/sec | 2156.35 | 2234.76 |
Client Bundles (main, webpack, commons)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.59 kB | 6.59 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..1e23.js gzip | 10.5 kB | 10.5 kB | ✓ |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 57 kB | 57 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.67 kB | 5.67 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | 6.92 kB | ✓ |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.5 kB | 52.5 kB | ✓ |
Legacy Client Bundles (polyfills)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
_error.js gzip | 3.25 kB | 3.25 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.06 kB | 2.06 kB | ✓ |
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 8.22 kB | 8.22 kB | ✓ |
Client Pages Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.module.js gzip | 604 B | 604 B | ✓ |
_error.module.js gzip | 2.04 kB | 2.04 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.33 kB | 5.33 kB | ✓ |
Client Build Manifests
zeit/next.js canary | Janpot/next.js trailing-slashes | 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 trailing-slashes | Change | |
---|---|---|---|
index.html gzip | 927 B | 927 B | ✓ |
link.html gzip | 937 B | 937 B | ✓ |
withRouter.html gzip | 924 B | 924 B | ✓ |
Overall change | 2.79 kB | 2.79 kB | ✓ |
Serverless Mode (Increase detected ⚠️ )
General Overall increase ⚠️
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 12.5s | 12.6s | |
nodeModulesSize | 61.8 MB | 61.8 MB |
Client Bundles (main, webpack, commons)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.59 kB | 6.59 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..1e23.js gzip | 10.5 kB | 10.5 kB | ✓ |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 57 kB | 57 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.67 kB | 5.67 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | 6.92 kB | ✓ |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.5 kB | 52.5 kB | ✓ |
Legacy Client Bundles (polyfills)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
_error.js gzip | 3.25 kB | 3.25 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.06 kB | 2.06 kB | ✓ |
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 8.22 kB | 8.22 kB | ✓ |
Client Pages Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.module.js gzip | 604 B | 604 B | ✓ |
_error.module.js gzip | 2.04 kB | 2.04 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.33 kB | 5.33 kB | ✓ |
Client Build Manifests
zeit/next.js canary | Janpot/next.js trailing-slashes | 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 increase ⚠️
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_error.js | 844 kB | 844 kB | |
404.html | 4.18 kB | 4.18 kB | ✓ |
hooks.html | 3.81 kB | 3.81 kB | ✓ |
index.js | 844 kB | 844 kB | |
link.js | 882 kB | 882 kB | |
routerDirect.js | 874 kB | 874 kB | |
withRouter.js | 874 kB | 874 kB | |
Overall change | 4.33 MB | 4.33 MB |
Failing test suitestest/integration/client-navigation/test/index.test.js
Expand output● Client Navigation › with 404 pages › should 404 for /
● Client Navigation › with 404 pages › should 404 for /
● Client Navigation › Rendering via HTTP › 404 › should 404 for /
|
Stats from current PRDefault Server Mode (Decrease detected ✓)General Overall increase
|
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 11s | 10.9s | -138ms |
nodeModulesSize | 61.8 MB | 61.8 MB |
Page Load Tests Overall decrease ⚠️
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 1.959 | 1.887 | -0.07 |
/ avg req/sec | 1276.38 | 1325.11 | |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.055 | 1.15 | |
/error-in-render avg req/sec | 2369.56 | 2174.81 | -194.75 |
Client Bundles (main, webpack, commons)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.59 kB | 6.59 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..1e23.js gzip | 10.5 kB | 10.5 kB | ✓ |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 57 kB | 57 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.67 kB | 5.67 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | 6.92 kB | ✓ |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.5 kB | 52.5 kB | ✓ |
Legacy Client Bundles (polyfills)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
_error.js gzip | 3.25 kB | 3.25 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.06 kB | 2.06 kB | ✓ |
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 8.22 kB | 8.22 kB | ✓ |
Client Pages Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.module.js gzip | 604 B | 604 B | ✓ |
_error.module.js gzip | 2.04 kB | 2.04 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.33 kB | 5.33 kB | ✓ |
Client Build Manifests
zeit/next.js canary | Janpot/next.js trailing-slashes | 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 trailing-slashes | Change | |
---|---|---|---|
index.html gzip | 927 B | 927 B | ✓ |
link.html gzip | 937 B | 937 B | ✓ |
withRouter.html gzip | 924 B | 924 B | ✓ |
Overall change | 2.79 kB | 2.79 kB | ✓ |
Serverless Mode (Increase detected ⚠️ )
General Overall increase ⚠️
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 12.3s | 11.4s | -831ms |
nodeModulesSize | 61.8 MB | 61.8 MB |
Client Bundles (main, webpack, commons)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.59 kB | 6.59 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..1e23.js gzip | 10.5 kB | 10.5 kB | ✓ |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 57 kB | 57 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.67 kB | 5.67 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | 6.92 kB | ✓ |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.5 kB | 52.5 kB | ✓ |
Legacy Client Bundles (polyfills)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
_error.js gzip | 3.25 kB | 3.25 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.06 kB | 2.06 kB | ✓ |
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 8.22 kB | 8.22 kB | ✓ |
Client Pages Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.module.js gzip | 604 B | 604 B | ✓ |
_error.module.js gzip | 2.04 kB | 2.04 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.33 kB | 5.33 kB | ✓ |
Client Build Manifests
zeit/next.js canary | Janpot/next.js trailing-slashes | 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 increase ⚠️
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_error.js | 844 kB | 844 kB | |
404.html | 4.18 kB | 4.18 kB | ✓ |
hooks.html | 3.81 kB | 3.81 kB | ✓ |
index.js | 844 kB | 844 kB | |
link.js | 882 kB | 882 kB | |
routerDirect.js | 874 kB | 874 kB | |
withRouter.js | 874 kB | 874 kB | |
Overall change | 4.33 MB | 4.33 MB |
Failing test suitestest/integration/client-navigation/test/index.test.js
Expand output● Client Navigation › Rendering via HTTP › 404 › should 404 for /
|
Stats from current PRDefault Server Mode (Increase detected
|
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 9.8s | 9.7s | -111ms |
nodeModulesSize | 61.8 MB | 61.8 MB |
Page Load Tests Overall increase ✓
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 1.622 | 1.589 | -0.03 |
/ avg req/sec | 1541.41 | 1573.06 | |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 0.944 | 0.927 | -0.02 |
/error-in-render avg req/sec | 2649.25 | 2697.05 |
Client Bundles (main, webpack, commons)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.59 kB | 6.59 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..1e23.js gzip | 10.5 kB | 10.5 kB | ✓ |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 57 kB | 57 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.67 kB | 5.67 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | 6.92 kB | ✓ |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.5 kB | 52.5 kB | ✓ |
Legacy Client Bundles (polyfills)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
_error.js gzip | 3.25 kB | 3.25 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.06 kB | 2.06 kB | ✓ |
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 8.22 kB | 8.22 kB | ✓ |
Client Pages Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.module.js gzip | 604 B | 604 B | ✓ |
_error.module.js gzip | 2.04 kB | 2.04 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.33 kB | 5.33 kB | ✓ |
Client Build Manifests
zeit/next.js canary | Janpot/next.js trailing-slashes | 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 trailing-slashes | Change | |
---|---|---|---|
index.html gzip | 927 B | 927 B | ✓ |
link.html gzip | 937 B | 937 B | ✓ |
withRouter.html gzip | 924 B | 924 B | ✓ |
Overall change | 2.79 kB | 2.79 kB | ✓ |
Serverless Mode (Increase detected ⚠️ )
General Overall increase ⚠️
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 10.1s | 10s | -81ms |
nodeModulesSize | 61.8 MB | 61.8 MB |
Client Bundles (main, webpack, commons)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.59 kB | 6.59 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..1e23.js gzip | 10.5 kB | 10.5 kB | ✓ |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 57 kB | 57 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.67 kB | 5.67 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | 6.92 kB | ✓ |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.5 kB | 52.5 kB | ✓ |
Legacy Client Bundles (polyfills)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
_error.js gzip | 3.25 kB | 3.25 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.06 kB | 2.06 kB | ✓ |
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 8.22 kB | 8.22 kB | ✓ |
Client Pages Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.module.js gzip | 604 B | 604 B | ✓ |
_error.module.js gzip | 2.04 kB | 2.04 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.33 kB | 5.33 kB | ✓ |
Client Build Manifests
zeit/next.js canary | Janpot/next.js trailing-slashes | 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 increase ⚠️
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_error.js | 844 kB | 844 kB | |
404.html | 4.18 kB | 4.18 kB | ✓ |
hooks.html | 3.81 kB | 3.81 kB | ✓ |
index.js | 844 kB | 844 kB | |
link.js | 882 kB | 882 kB | |
routerDirect.js | 874 kB | 874 kB | |
withRouter.js | 874 kB | 874 kB | |
Overall change | 4.33 MB | 4.33 MB |
Stats from current PRDefault Server Mode (Increase detected
|
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 12.3s | 12.2s | -154ms |
nodeModulesSize | 61.8 MB | 61.8 MB |
Page Load Tests Overall increase ✓
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 2.116 | 2.128 | |
/ avg req/sec | 1181.51 | 1174.57 | -6.94 |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.258 | 1.181 | -0.08 |
/error-in-render avg req/sec | 1988.01 | 2117.02 |
Client Bundles (main, webpack, commons)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.59 kB | 6.59 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..1e23.js gzip | 10.5 kB | 10.5 kB | ✓ |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 57 kB | 57 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.67 kB | 5.67 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | 6.92 kB | ✓ |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.5 kB | 52.5 kB | ✓ |
Legacy Client Bundles (polyfills)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
_error.js gzip | 3.25 kB | 3.25 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.06 kB | 2.06 kB | ✓ |
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 8.22 kB | 8.22 kB | ✓ |
Client Pages Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.module.js gzip | 604 B | 604 B | ✓ |
_error.module.js gzip | 2.04 kB | 2.04 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.33 kB | 5.33 kB | ✓ |
Client Build Manifests
zeit/next.js canary | Janpot/next.js trailing-slashes | 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 trailing-slashes | Change | |
---|---|---|---|
index.html gzip | 927 B | 927 B | ✓ |
link.html gzip | 937 B | 937 B | ✓ |
withRouter.html gzip | 924 B | 924 B | ✓ |
Overall change | 2.79 kB | 2.79 kB | ✓ |
Serverless Mode
General Overall increase ⚠️
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 12.8s | 13s | |
nodeModulesSize | 61.8 MB | 61.8 MB |
Client Bundles (main, webpack, commons)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.59 kB | 6.59 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..1e23.js gzip | 10.5 kB | 10.5 kB | ✓ |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 57 kB | 57 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.67 kB | 5.67 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | 6.92 kB | ✓ |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.5 kB | 52.5 kB | ✓ |
Legacy Client Bundles (polyfills)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
_error.js gzip | 3.25 kB | 3.25 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.06 kB | 2.06 kB | ✓ |
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 8.22 kB | 8.22 kB | ✓ |
Client Pages Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.module.js gzip | 604 B | 604 B | ✓ |
_error.module.js gzip | 2.04 kB | 2.04 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.33 kB | 5.33 kB | ✓ |
Client Build Manifests
zeit/next.js canary | Janpot/next.js trailing-slashes | 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 trailing-slashes | Change | |
---|---|---|---|
_error.js | 844 kB | 844 kB | ✓ |
404.html | 4.18 kB | 4.18 kB | ✓ |
hooks.html | 3.81 kB | 3.81 kB | ✓ |
index.js | 844 kB | 844 kB | ✓ |
link.js | 882 kB | 882 kB | ✓ |
routerDirect.js | 874 kB | 874 kB | ✓ |
withRouter.js | 874 kB | 874 kB | ✓ |
Overall change | 4.33 MB | 4.33 MB | ✓ |
Stats from current PRDefault Server Mode (Decrease detected ✓)General Overall increase
|
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 13.4s | 12.9s | -440ms |
nodeModulesSize | 61.8 MB | 61.8 MB |
Page Load Tests Overall decrease ⚠️
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 2.34 | 2.328 | -0.01 |
/ avg req/sec | 1068.17 | 1074.02 | |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.472 | 1.519 | |
/error-in-render avg req/sec | 1698.24 | 1645.51 | -52.73 |
Client Bundles (main, webpack, commons)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.59 kB | 6.59 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..1e23.js gzip | 10.5 kB | 10.5 kB | ✓ |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 57 kB | 57 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.67 kB | 5.67 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | 6.92 kB | ✓ |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.5 kB | 52.5 kB | ✓ |
Legacy Client Bundles (polyfills)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
_error.js gzip | 3.25 kB | 3.25 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.06 kB | 2.06 kB | ✓ |
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 8.22 kB | 8.22 kB | ✓ |
Client Pages Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.module.js gzip | 604 B | 604 B | ✓ |
_error.module.js gzip | 2.04 kB | 2.04 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.33 kB | 5.33 kB | ✓ |
Client Build Manifests
zeit/next.js canary | Janpot/next.js trailing-slashes | 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 trailing-slashes | Change | |
---|---|---|---|
index.html gzip | 927 B | 927 B | ✓ |
link.html gzip | 937 B | 937 B | ✓ |
withRouter.html gzip | 924 B | 924 B | ✓ |
Overall change | 2.79 kB | 2.79 kB | ✓ |
Serverless Mode
General Overall increase ⚠️
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 13.8s | 14.3s | |
nodeModulesSize | 61.8 MB | 61.8 MB |
Client Bundles (main, webpack, commons)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.59 kB | 6.59 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..1e23.js gzip | 10.5 kB | 10.5 kB | ✓ |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 57 kB | 57 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.67 kB | 5.67 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | 6.92 kB | ✓ |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.5 kB | 52.5 kB | ✓ |
Legacy Client Bundles (polyfills)
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
_error.js gzip | 3.25 kB | 3.25 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.06 kB | 2.06 kB | ✓ |
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 8.22 kB | 8.22 kB | ✓ |
Client Pages Modern
zeit/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_app.module.js gzip | 604 B | 604 B | ✓ |
_error.module.js gzip | 2.04 kB | 2.04 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.33 kB | 5.33 kB | ✓ |
Client Build Manifests
zeit/next.js canary | Janpot/next.js trailing-slashes | 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 trailing-slashes | Change | |
---|---|---|---|
_error.js | 844 kB | 844 kB | ✓ |
404.html | 4.18 kB | 4.18 kB | ✓ |
hooks.html | 3.81 kB | 3.81 kB | ✓ |
index.js | 844 kB | 844 kB | ✓ |
link.js | 882 kB | 882 kB | ✓ |
routerDirect.js | 874 kB | 874 kB | ✓ |
withRouter.js | 874 kB | 874 kB | ✓ |
Overall change | 4.33 MB | 4.33 MB | ✓ |
Stats from current PRDefault Server Mode (Increase detected
|
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 12.8s | 12.9s | |
nodeModulesSize | 65.2 MB | 65.2 MB |
Page Load Tests Overall increase ✓
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 2.256 | 2.286 | |
/ avg req/sec | 1108.23 | 1093.42 | -14.81 |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.494 | 1.419 | -0.07 |
/error-in-render avg req/sec | 1673.55 | 1762.31 |
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.51 kB | 6.51 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..0538.js gzip | 10.5 kB | 10.6 kB | |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 56.9 kB | 57 kB |
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.6 kB | 5.6 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.93 kB | 7.01 kB | |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.4 kB | 52.5 kB |
Legacy Client Bundles (polyfills)
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages Overall decrease ✓
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
_error.js gzip | 3.37 kB | 3.37 kB | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.05 kB | N/A | N/A |
hooks.js gzip | 881 B | 881 B | ✓ |
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
Overall change | 8.34 kB | 6.29 kB | -2.05 kB |
Client Pages Modern Overall decrease ✓
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
index.module.js gzip | 223 B | 223 B | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
_error.module.js gzip | 2.21 kB | 2.21 kB | ✓ |
link.module.js gzip | 1.52 kB | N/A | N/A |
_app.module.js gzip | 604 B | 604 B | ✓ |
Overall change | 5.49 kB | 3.98 kB | -1.52 kB |
Client Build Manifests
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_buildManifest.js gzip | 270 B | 271 B | |
_buildManife..dule.js gzip | 274 B | 273 B | -1 B |
Overall change | 544 B | 544 B | ✓ |
Rendered Page Sizes Overall decrease ✓
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
index.html gzip | 956 B | 955 B | -1 B |
link.html gzip | 963 B | 963 B | ✓ |
withRouter.html gzip | 949 B | 948 B | -1 B |
Overall change | 2.87 kB | 2.87 kB | -2 B |
Diffs
Diff for _buildManifest.js
@@ -2,7 +2,7 @@ self.__BUILD_MANIFEST = {
"/": ["static\u002F8f6ec52978e4ed685749\u002Fpages\u002Findex.js"],
"/_error": ["static\u002F280ae3949913ae3eca18\u002Fpages\u002F_error.js"],
"/hooks": ["static\u002F701db499b372d8b4ad8a\u002Fpages\u002Fhooks.js"],
- "/link": ["static\u002Fe826d21ad4f09aa9e68e\u002Fpages\u002Flink.js"],
+ "/link": ["static\u002F8b761fc6c799fd929630\u002Fpages\u002Flink.js"],
"/routerDirect": [
"static\u002F70609b58a7b84ec58870\u002Fpages\u002FrouterDirect.js"
],
Diff for _buildManifest.module.js
@@ -6,7 +6,7 @@ self.__BUILD_MANIFEST = {
"/hooks": [
"static\u002F680ac2d033b0bc870c3a\u002Fpages\u002Fhooks.module.js"
],
- "/link": ["static\u002Fd5a70ed72905d882658f\u002Fpages\u002Flink.module.js"],
+ "/link": ["static\u002Fa9a7a3996ad0d62cb2fd\u002Fpages\u002Flink.module.js"],
"/routerDirect": [
"static\u002Ff4884873d5a5d6e895c1\u002Fpages\u002FrouterDirect.module.js"
],
Diff for de003c3a9d30..8dcf890b6.js
@@ -239,6 +239,25 @@
/***/
},
+ /***/ NkFK: /***/ function(module, exports, __webpack_require__) {
+ "use strict";
+
+ exports.__esModule = true;
+ exports.normalizeTrailingSlash = normalizeTrailingSlash;
+
+ function normalizeTrailingSlash(path, requireSlash) {
+ if (path === "/") {
+ return path;
+ } else if (path.endsWith("/")) {
+ return requireSlash ? path : path.slice(0, -1);
+ } else {
+ return requireSlash ? path + "/" : path;
+ }
+ }
+
+ /***/
+ },
+
/***/ Qetd: /***/ function(module, exports, __webpack_require__) {
"use strict";
var assign = Object.assign.bind(Object);
@@ -728,6 +747,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
var _routeRegex = __webpack_require__("YTqd");
+ var _normalizeTrailingSlash = __webpack_require__("NkFK");
+
function _interopRequireDefault(obj) {
return obj && obj.__esModule
? obj
@@ -762,8 +783,14 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
url =
typeof url === "object" ? (0, _utils.formatWithValidation)(url) : url;
as = typeof as === "object" ? (0, _utils.formatWithValidation)(as) : as;
- url = addBasePath(url);
- as = as ? addBasePath(as) : as;
+ url = addBasePath(
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(url, !!false)
+ );
+ as = as
+ ? addBasePath(
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(as, !!false)
+ )
+ : as;
return {
url: url,
as: as
Diff for de003c3a9d30..6c.module.js
@@ -216,6 +216,25 @@
/***/
},
+ /***/ NkFK: /***/ function(module, exports, __webpack_require__) {
+ "use strict";
+
+ exports.__esModule = true;
+ exports.normalizeTrailingSlash = normalizeTrailingSlash;
+
+ function normalizeTrailingSlash(path, requireSlash) {
+ if (path === "/") {
+ return path;
+ } else if (path.endsWith("/")) {
+ return requireSlash ? path : path.slice(0, -1);
+ } else {
+ return requireSlash ? path + "/" : path;
+ }
+ }
+
+ /***/
+ },
+
/***/ Qetd: /***/ function(module, exports, __webpack_require__) {
"use strict";
var assign = Object.assign.bind(Object);
@@ -600,6 +619,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
var _routeRegex = __webpack_require__("YTqd");
+ var _normalizeTrailingSlash = __webpack_require__("NkFK");
+
function _interopRequireDefault(obj) {
return obj && obj.__esModule
? obj
@@ -633,8 +654,14 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
url =
typeof url === "object" ? (0, _utils.formatWithValidation)(url) : url;
as = typeof as === "object" ? (0, _utils.formatWithValidation)(as) : as;
- url = addBasePath(url);
- as = as ? addBasePath(as) : as;
+ url = addBasePath(
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(url, !!false)
+ );
+ as = as
+ ? addBasePath(
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(as, !!false)
+ )
+ : as;
return {
url,
as
Diff for link.module.js
@@ -65,13 +65,15 @@
/***/ cTJO: /***/ function(module, exports, __webpack_require__) {
"use strict";
- var _interopRequireDefault = __webpack_require__("TqRt");
-
var _interopRequireWildcard = __webpack_require__("284h");
+ var _interopRequireDefault = __webpack_require__("TqRt");
+
exports.__esModule = true;
exports.default = void 0;
+ var _extends2 = _interopRequireDefault(__webpack_require__("pVnL"));
+
var _react = _interopRequireWildcard(__webpack_require__("q1tI"));
var _url = __webpack_require__("QmWs");
@@ -82,6 +84,8 @@
var _router2 = __webpack_require__("elyg");
+ var _normalizeTrailingSlash = __webpack_require__("NkFK");
+
function isLocal(href) {
var url = (0, _url.parse)(href, false, true);
var origin = (0, _url.parse)(
@@ -112,10 +116,30 @@
};
}
+ function formatTrailingSlash(url) {
+ return (0, _extends2.default)(
+ (0, _extends2.default)({}, url),
+ {},
+ {
+ pathname:
+ url.pathname &&
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(
+ url.pathname,
+ !!false
+ )
+ }
+ );
+ }
+
function formatUrl(url) {
- return url && typeof url === "object"
- ? (0, _utils.formatWithValidation)(url)
- : url;
+ return (
+ url &&
+ (0, _utils.formatWithValidation)(
+ formatTrailingSlash(
+ typeof url === "object" ? url : (0, _url.parse)(url)
+ )
+ )
+ );
}
var cachedObserver;
@@ -379,6 +403,32 @@
var _default = Link;
exports.default = _default;
+ /***/
+ },
+
+ /***/ pVnL: /***/ function(module, exports) {
+ function _extends() {
+ module.exports = _extends =
+ Object.assign ||
+ function(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
+
+ return target;
+ };
+
+ return _extends.apply(this, arguments);
+ }
+
+ module.exports = _extends;
+
/***/
}
},
Diff for link.js
@@ -183,13 +183,15 @@
}
}
- var _interopRequireDefault = __webpack_require__("TqRt");
-
var _interopRequireWildcard = __webpack_require__("284h");
+ var _interopRequireDefault = __webpack_require__("TqRt");
+
exports.__esModule = true;
exports["default"] = void 0;
+ var _extends2 = _interopRequireDefault(__webpack_require__("pVnL"));
+
var _react = _interopRequireWildcard(__webpack_require__("q1tI"));
var _url = __webpack_require__("QmWs");
@@ -200,6 +202,8 @@
var _router2 = __webpack_require__("elyg");
+ var _normalizeTrailingSlash = __webpack_require__("NkFK");
+
function isLocal(href) {
var url = (0, _url.parse)(href, false, true);
var origin = (0, _url.parse)(
@@ -230,10 +234,30 @@
};
}
+ function formatTrailingSlash(url) {
+ return (0, _extends2["default"])(
+ (0, _extends2["default"])({}, url),
+ {},
+ {
+ pathname:
+ url.pathname &&
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(
+ url.pathname,
+ !!false
+ )
+ }
+ );
+ }
+
function formatUrl(url) {
- return url && typeof url === "object"
- ? (0, _utils.formatWithValidation)(url)
- : url;
+ return (
+ url &&
+ (0, _utils.formatWithValidation)(
+ formatTrailingSlash(
+ typeof url === "object" ? url : (0, _url.parse)(url)
+ )
+ )
+ );
}
var cachedObserver;
@@ -551,6 +575,32 @@
var _default = Link;
exports["default"] = _default;
+ /***/
+ },
+
+ /***/ pVnL: /***/ function(module, exports) {
+ function _extends() {
+ module.exports = _extends =
+ Object.assign ||
+ function(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
+
+ return target;
+ };
+
+ return _extends.apply(this, arguments);
+ }
+
+ module.exports = _extends;
+
/***/
}
},
Diff for index.html
@@ -24,7 +24,7 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.f733a40f0fc0ecaa4b6c.module.js"
+ href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.b05ce186af7a2566dcea.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -117,13 +117,13 @@
type="module"
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.0ea083186308dcf890b6.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.d500ad3fc59d95594bc1.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.f733a40f0fc0ecaa4b6c.module.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.b05ce186af7a2566dcea.module.js"
async=""
crossorigin="anonymous"
type="module"
Diff for link.html
@@ -24,7 +24,7 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.f733a40f0fc0ecaa4b6c.module.js"
+ href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.b05ce186af7a2566dcea.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -36,7 +36,7 @@
/>
<link
rel="preload"
- href="/_next/static/d5a70ed72905d882658f/pages/link.module.js"
+ href="/_next/static/a9a7a3996ad0d62cb2fd/pages/link.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -122,13 +122,13 @@
type="module"
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.0ea083186308dcf890b6.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.d500ad3fc59d95594bc1.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.f733a40f0fc0ecaa4b6c.module.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.b05ce186af7a2566dcea.module.js"
async=""
crossorigin="anonymous"
type="module"
@@ -146,13 +146,13 @@
type="module"
></script>
<script
- src="/_next/static/e826d21ad4f09aa9e68e/pages/link.js"
+ src="/_next/static/8b761fc6c799fd929630/pages/link.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/d5a70ed72905d882658f/pages/link.module.js"
+ src="/_next/static/a9a7a3996ad0d62cb2fd/pages/link.module.js"
async=""
crossorigin="anonymous"
type="module"
Diff for withRouter.html
@@ -24,7 +24,7 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.f733a40f0fc0ecaa4b6c.module.js"
+ href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.b05ce186af7a2566dcea.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -117,13 +117,13 @@
type="module"
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.0ea083186308dcf890b6.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.d500ad3fc59d95594bc1.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.f733a40f0fc0ecaa4b6c.module.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.b05ce186af7a2566dcea.module.js"
async=""
crossorigin="anonymous"
type="module"
Serverless Mode (Increase detected ⚠️ )
General Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 13.6s | 13.6s | -11ms |
nodeModulesSize | 65.2 MB | 65.2 MB |
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.51 kB | 6.51 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..0538.js gzip | 10.5 kB | N/A | N/A |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
de003c3a9d30..7202.js gzip | N/A | 10.6 kB | N/A |
Overall change | 56.9 kB | 57 kB |
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.6 kB | 5.6 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.93 kB | N/A | N/A |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
de003c3a9d30..dule.js gzip | N/A | 7.01 kB | N/A |
Overall change | 52.4 kB | 52.5 kB |
Legacy Client Bundles (polyfills)
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
_error.js gzip | 3.37 kB | 3.37 kB | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.05 kB | 2.22 kB | |
hooks.js gzip | 881 B | 881 B | ✓ |
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
Overall change | 8.34 kB | 8.51 kB |
Client Pages Modern Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
index.module.js gzip | 223 B | 223 B | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
_error.module.js gzip | 2.21 kB | 2.21 kB | ✓ |
link.module.js gzip | 1.52 kB | 1.71 kB | |
_app.module.js gzip | 604 B | 604 B | ✓ |
Overall change | 5.49 kB | 5.69 kB |
Client Build Manifests
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_buildManifest.js gzip | 270 B | 271 B | |
_buildManife..dule.js gzip | 274 B | 273 B | -1 B |
Overall change | 544 B | 544 B | ✓ |
Serverless bundles Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_error.js | 875 kB | 875 kB | |
404.html | 4.17 kB | 4.17 kB | ✓ |
hooks.html | 3.79 kB | 3.79 kB | ✓ |
index.js | 875 kB | 875 kB | |
link.js | 913 kB | 915 kB | |
routerDirect.js | 905 kB | 906 kB | |
withRouter.js | 905 kB | 906 kB | |
Overall change | 4.48 MB | 4.48 MB |
Stats from current PRDefault Server Mode (Increase detected
|
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 13.6s | 14s | |
nodeModulesSize | 65.2 MB | 65.2 MB |
Page Load Tests Overall increase ✓
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 2.327 | 2.358 | |
/ avg req/sec | 1074.32 | 1060.07 | -14.25 |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.526 | 1.491 | -0.03 |
/error-in-render avg req/sec | 1638.3 | 1676.68 |
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.51 kB | 6.51 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..0538.js gzip | 10.5 kB | 10.6 kB | |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 56.9 kB | 57 kB |
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.6 kB | 5.6 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.93 kB | 7.01 kB | |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.4 kB | 52.5 kB |
Legacy Client Bundles (polyfills)
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages Overall decrease ✓
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
_error.js gzip | 3.37 kB | 3.37 kB | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.05 kB | N/A | N/A |
hooks.js gzip | 881 B | 881 B | ✓ |
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
Overall change | 8.34 kB | 6.29 kB | -2.05 kB |
Client Pages Modern Overall decrease ✓
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
index.module.js gzip | 223 B | 223 B | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
_error.module.js gzip | 2.21 kB | 2.21 kB | ✓ |
link.module.js gzip | 1.52 kB | N/A | N/A |
_app.module.js gzip | 604 B | 604 B | ✓ |
Overall change | 5.49 kB | 3.98 kB | -1.52 kB |
Client Build Manifests
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_buildManifest.js gzip | 270 B | 271 B | |
_buildManife..dule.js gzip | 274 B | 273 B | -1 B |
Overall change | 544 B | 544 B | ✓ |
Rendered Page Sizes Overall decrease ✓
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
index.html gzip | 956 B | 955 B | -1 B |
link.html gzip | 963 B | 963 B | ✓ |
withRouter.html gzip | 949 B | 948 B | -1 B |
Overall change | 2.87 kB | 2.87 kB | -2 B |
Diffs
Diff for _buildManifest.js
@@ -2,7 +2,7 @@ self.__BUILD_MANIFEST = {
"/": ["static\u002F8f6ec52978e4ed685749\u002Fpages\u002Findex.js"],
"/_error": ["static\u002F280ae3949913ae3eca18\u002Fpages\u002F_error.js"],
"/hooks": ["static\u002F701db499b372d8b4ad8a\u002Fpages\u002Fhooks.js"],
- "/link": ["static\u002Fe826d21ad4f09aa9e68e\u002Fpages\u002Flink.js"],
+ "/link": ["static\u002F8b761fc6c799fd929630\u002Fpages\u002Flink.js"],
"/routerDirect": [
"static\u002F70609b58a7b84ec58870\u002Fpages\u002FrouterDirect.js"
],
Diff for _buildManifest.module.js
@@ -6,7 +6,7 @@ self.__BUILD_MANIFEST = {
"/hooks": [
"static\u002F680ac2d033b0bc870c3a\u002Fpages\u002Fhooks.module.js"
],
- "/link": ["static\u002Fd5a70ed72905d882658f\u002Fpages\u002Flink.module.js"],
+ "/link": ["static\u002Fa9a7a3996ad0d62cb2fd\u002Fpages\u002Flink.module.js"],
"/routerDirect": [
"static\u002Ff4884873d5a5d6e895c1\u002Fpages\u002FrouterDirect.module.js"
],
Diff for de003c3a9d30..8dcf890b6.js
@@ -239,6 +239,25 @@
/***/
},
+ /***/ NkFK: /***/ function(module, exports, __webpack_require__) {
+ "use strict";
+
+ exports.__esModule = true;
+ exports.normalizeTrailingSlash = normalizeTrailingSlash;
+
+ function normalizeTrailingSlash(path, requireSlash) {
+ if (path === "/") {
+ return path;
+ } else if (path.endsWith("/")) {
+ return requireSlash ? path : path.slice(0, -1);
+ } else {
+ return requireSlash ? path + "/" : path;
+ }
+ }
+
+ /***/
+ },
+
/***/ Qetd: /***/ function(module, exports, __webpack_require__) {
"use strict";
var assign = Object.assign.bind(Object);
@@ -728,6 +747,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
var _routeRegex = __webpack_require__("YTqd");
+ var _normalizeTrailingSlash = __webpack_require__("NkFK");
+
function _interopRequireDefault(obj) {
return obj && obj.__esModule
? obj
@@ -762,8 +783,14 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
url =
typeof url === "object" ? (0, _utils.formatWithValidation)(url) : url;
as = typeof as === "object" ? (0, _utils.formatWithValidation)(as) : as;
- url = addBasePath(url);
- as = as ? addBasePath(as) : as;
+ url = addBasePath(
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(url, !!false)
+ );
+ as = as
+ ? addBasePath(
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(as, !!false)
+ )
+ : as;
return {
url: url,
as: as
Diff for de003c3a9d30..6c.module.js
@@ -216,6 +216,25 @@
/***/
},
+ /***/ NkFK: /***/ function(module, exports, __webpack_require__) {
+ "use strict";
+
+ exports.__esModule = true;
+ exports.normalizeTrailingSlash = normalizeTrailingSlash;
+
+ function normalizeTrailingSlash(path, requireSlash) {
+ if (path === "/") {
+ return path;
+ } else if (path.endsWith("/")) {
+ return requireSlash ? path : path.slice(0, -1);
+ } else {
+ return requireSlash ? path + "/" : path;
+ }
+ }
+
+ /***/
+ },
+
/***/ Qetd: /***/ function(module, exports, __webpack_require__) {
"use strict";
var assign = Object.assign.bind(Object);
@@ -600,6 +619,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
var _routeRegex = __webpack_require__("YTqd");
+ var _normalizeTrailingSlash = __webpack_require__("NkFK");
+
function _interopRequireDefault(obj) {
return obj && obj.__esModule
? obj
@@ -633,8 +654,14 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
url =
typeof url === "object" ? (0, _utils.formatWithValidation)(url) : url;
as = typeof as === "object" ? (0, _utils.formatWithValidation)(as) : as;
- url = addBasePath(url);
- as = as ? addBasePath(as) : as;
+ url = addBasePath(
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(url, !!false)
+ );
+ as = as
+ ? addBasePath(
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(as, !!false)
+ )
+ : as;
return {
url,
as
Diff for link.module.js
@@ -65,13 +65,15 @@
/***/ cTJO: /***/ function(module, exports, __webpack_require__) {
"use strict";
- var _interopRequireDefault = __webpack_require__("TqRt");
-
var _interopRequireWildcard = __webpack_require__("284h");
+ var _interopRequireDefault = __webpack_require__("TqRt");
+
exports.__esModule = true;
exports.default = void 0;
+ var _extends2 = _interopRequireDefault(__webpack_require__("pVnL"));
+
var _react = _interopRequireWildcard(__webpack_require__("q1tI"));
var _url = __webpack_require__("QmWs");
@@ -82,6 +84,8 @@
var _router2 = __webpack_require__("elyg");
+ var _normalizeTrailingSlash = __webpack_require__("NkFK");
+
function isLocal(href) {
var url = (0, _url.parse)(href, false, true);
var origin = (0, _url.parse)(
@@ -112,10 +116,30 @@
};
}
+ function formatTrailingSlash(url) {
+ return (0, _extends2.default)(
+ (0, _extends2.default)({}, url),
+ {},
+ {
+ pathname:
+ url.pathname &&
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(
+ url.pathname,
+ !!false
+ )
+ }
+ );
+ }
+
function formatUrl(url) {
- return url && typeof url === "object"
- ? (0, _utils.formatWithValidation)(url)
- : url;
+ return (
+ url &&
+ (0, _utils.formatWithValidation)(
+ formatTrailingSlash(
+ typeof url === "object" ? url : (0, _url.parse)(url)
+ )
+ )
+ );
}
var cachedObserver;
@@ -379,6 +403,32 @@
var _default = Link;
exports.default = _default;
+ /***/
+ },
+
+ /***/ pVnL: /***/ function(module, exports) {
+ function _extends() {
+ module.exports = _extends =
+ Object.assign ||
+ function(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
+
+ return target;
+ };
+
+ return _extends.apply(this, arguments);
+ }
+
+ module.exports = _extends;
+
/***/
}
},
Diff for link.js
@@ -183,13 +183,15 @@
}
}
- var _interopRequireDefault = __webpack_require__("TqRt");
-
var _interopRequireWildcard = __webpack_require__("284h");
+ var _interopRequireDefault = __webpack_require__("TqRt");
+
exports.__esModule = true;
exports["default"] = void 0;
+ var _extends2 = _interopRequireDefault(__webpack_require__("pVnL"));
+
var _react = _interopRequireWildcard(__webpack_require__("q1tI"));
var _url = __webpack_require__("QmWs");
@@ -200,6 +202,8 @@
var _router2 = __webpack_require__("elyg");
+ var _normalizeTrailingSlash = __webpack_require__("NkFK");
+
function isLocal(href) {
var url = (0, _url.parse)(href, false, true);
var origin = (0, _url.parse)(
@@ -230,10 +234,30 @@
};
}
+ function formatTrailingSlash(url) {
+ return (0, _extends2["default"])(
+ (0, _extends2["default"])({}, url),
+ {},
+ {
+ pathname:
+ url.pathname &&
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(
+ url.pathname,
+ !!false
+ )
+ }
+ );
+ }
+
function formatUrl(url) {
- return url && typeof url === "object"
- ? (0, _utils.formatWithValidation)(url)
- : url;
+ return (
+ url &&
+ (0, _utils.formatWithValidation)(
+ formatTrailingSlash(
+ typeof url === "object" ? url : (0, _url.parse)(url)
+ )
+ )
+ );
}
var cachedObserver;
@@ -551,6 +575,32 @@
var _default = Link;
exports["default"] = _default;
+ /***/
+ },
+
+ /***/ pVnL: /***/ function(module, exports) {
+ function _extends() {
+ module.exports = _extends =
+ Object.assign ||
+ function(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
+
+ return target;
+ };
+
+ return _extends.apply(this, arguments);
+ }
+
+ module.exports = _extends;
+
/***/
}
},
Diff for index.html
@@ -24,7 +24,7 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.f733a40f0fc0ecaa4b6c.module.js"
+ href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.b05ce186af7a2566dcea.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -117,13 +117,13 @@
type="module"
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.0ea083186308dcf890b6.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.d500ad3fc59d95594bc1.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.f733a40f0fc0ecaa4b6c.module.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.b05ce186af7a2566dcea.module.js"
async=""
crossorigin="anonymous"
type="module"
Diff for link.html
@@ -24,7 +24,7 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.f733a40f0fc0ecaa4b6c.module.js"
+ href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.b05ce186af7a2566dcea.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -36,7 +36,7 @@
/>
<link
rel="preload"
- href="/_next/static/d5a70ed72905d882658f/pages/link.module.js"
+ href="/_next/static/a9a7a3996ad0d62cb2fd/pages/link.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -122,13 +122,13 @@
type="module"
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.0ea083186308dcf890b6.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.d500ad3fc59d95594bc1.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.f733a40f0fc0ecaa4b6c.module.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.b05ce186af7a2566dcea.module.js"
async=""
crossorigin="anonymous"
type="module"
@@ -146,13 +146,13 @@
type="module"
></script>
<script
- src="/_next/static/e826d21ad4f09aa9e68e/pages/link.js"
+ src="/_next/static/8b761fc6c799fd929630/pages/link.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/d5a70ed72905d882658f/pages/link.module.js"
+ src="/_next/static/a9a7a3996ad0d62cb2fd/pages/link.module.js"
async=""
crossorigin="anonymous"
type="module"
Diff for withRouter.html
@@ -24,7 +24,7 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.f733a40f0fc0ecaa4b6c.module.js"
+ href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.b05ce186af7a2566dcea.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -117,13 +117,13 @@
type="module"
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.0ea083186308dcf890b6.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.d500ad3fc59d95594bc1.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.f733a40f0fc0ecaa4b6c.module.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.b05ce186af7a2566dcea.module.js"
async=""
crossorigin="anonymous"
type="module"
Serverless Mode (Increase detected ⚠️ )
General Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 15.1s | 14.8s | -251ms |
nodeModulesSize | 65.2 MB | 65.2 MB |
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.51 kB | 6.51 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..0538.js gzip | 10.5 kB | N/A | N/A |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
de003c3a9d30..7202.js gzip | N/A | 10.6 kB | N/A |
Overall change | 56.9 kB | 57 kB |
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.6 kB | 5.6 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.93 kB | N/A | N/A |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
de003c3a9d30..dule.js gzip | N/A | 7.01 kB | N/A |
Overall change | 52.4 kB | 52.5 kB |
Legacy Client Bundles (polyfills)
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
_error.js gzip | 3.37 kB | 3.37 kB | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.05 kB | 2.22 kB | |
hooks.js gzip | 881 B | 881 B | ✓ |
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
Overall change | 8.34 kB | 8.51 kB |
Client Pages Modern Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
index.module.js gzip | 223 B | 223 B | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
_error.module.js gzip | 2.21 kB | 2.21 kB | ✓ |
link.module.js gzip | 1.52 kB | 1.71 kB | |
_app.module.js gzip | 604 B | 604 B | ✓ |
Overall change | 5.49 kB | 5.69 kB |
Client Build Manifests
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_buildManifest.js gzip | 270 B | 271 B | |
_buildManife..dule.js gzip | 274 B | 273 B | -1 B |
Overall change | 544 B | 544 B | ✓ |
Serverless bundles Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_error.js | 875 kB | 875 kB | |
404.html | 4.17 kB | 4.17 kB | ✓ |
hooks.html | 3.79 kB | 3.79 kB | ✓ |
index.js | 875 kB | 875 kB | |
link.js | 913 kB | 915 kB | |
routerDirect.js | 905 kB | 906 kB | |
withRouter.js | 905 kB | 906 kB | |
Overall change | 4.48 MB | 4.48 MB |
Failing test suitestest/integration/dynamic-routing/test/index.test.js
Expand output● Dynamic Routing › production mode › should output a routes-manifest correctly
● Dynamic Routing › serverless mode › should output a routes-manifest correctly
|
Stats from current PRDefault Server Mode (Increase detected
|
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 12.4s | 12.6s | |
nodeModulesSize | 65.2 MB | 65.2 MB |
Page Load Tests Overall decrease ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 2.116 | 2.084 | -0.03 |
/ avg req/sec | 1181.35 | 1199.53 | |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.191 | 1.22 | |
/error-in-render avg req/sec | 2098.3 | 2048.9 | -49.4 |
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.51 kB | 6.51 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..0538.js gzip | 10.5 kB | 10.6 kB | |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 56.9 kB | 57 kB |
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.6 kB | 5.6 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.93 kB | 7.01 kB | |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.4 kB | 52.5 kB |
Legacy Client Bundles (polyfills)
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages Overall decrease ✓
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
_error.js gzip | 3.37 kB | 3.37 kB | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.05 kB | N/A | N/A |
hooks.js gzip | 881 B | 881 B | ✓ |
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
Overall change | 8.34 kB | 6.29 kB | -2.05 kB |
Client Pages Modern Overall decrease ✓
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
index.module.js gzip | 223 B | 223 B | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
_error.module.js gzip | 2.21 kB | 2.21 kB | ✓ |
link.module.js gzip | 1.52 kB | N/A | N/A |
_app.module.js gzip | 604 B | 604 B | ✓ |
Overall change | 5.49 kB | 3.98 kB | -1.52 kB |
Client Build Manifests
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_buildManifest.js gzip | 270 B | 271 B | |
_buildManife..dule.js gzip | 274 B | 273 B | -1 B |
Overall change | 544 B | 544 B | ✓ |
Rendered Page Sizes Overall decrease ✓
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
index.html gzip | 956 B | 955 B | -1 B |
link.html gzip | 963 B | 963 B | ✓ |
withRouter.html gzip | 949 B | 948 B | -1 B |
Overall change | 2.87 kB | 2.87 kB | -2 B |
Diffs
Diff for _buildManifest.js
@@ -2,7 +2,7 @@ self.__BUILD_MANIFEST = {
"/": ["static\u002F8f6ec52978e4ed685749\u002Fpages\u002Findex.js"],
"/_error": ["static\u002F280ae3949913ae3eca18\u002Fpages\u002F_error.js"],
"/hooks": ["static\u002F701db499b372d8b4ad8a\u002Fpages\u002Fhooks.js"],
- "/link": ["static\u002Fe826d21ad4f09aa9e68e\u002Fpages\u002Flink.js"],
+ "/link": ["static\u002F8b761fc6c799fd929630\u002Fpages\u002Flink.js"],
"/routerDirect": [
"static\u002F70609b58a7b84ec58870\u002Fpages\u002FrouterDirect.js"
],
Diff for _buildManifest.module.js
@@ -6,7 +6,7 @@ self.__BUILD_MANIFEST = {
"/hooks": [
"static\u002F680ac2d033b0bc870c3a\u002Fpages\u002Fhooks.module.js"
],
- "/link": ["static\u002Fd5a70ed72905d882658f\u002Fpages\u002Flink.module.js"],
+ "/link": ["static\u002Fa9a7a3996ad0d62cb2fd\u002Fpages\u002Flink.module.js"],
"/routerDirect": [
"static\u002Ff4884873d5a5d6e895c1\u002Fpages\u002FrouterDirect.module.js"
],
Diff for de003c3a9d30..8dcf890b6.js
@@ -239,6 +239,25 @@
/***/
},
+ /***/ NkFK: /***/ function(module, exports, __webpack_require__) {
+ "use strict";
+
+ exports.__esModule = true;
+ exports.normalizeTrailingSlash = normalizeTrailingSlash;
+
+ function normalizeTrailingSlash(path, requireSlash) {
+ if (path === "/") {
+ return path;
+ } else if (path.endsWith("/")) {
+ return requireSlash ? path : path.slice(0, -1);
+ } else {
+ return requireSlash ? path + "/" : path;
+ }
+ }
+
+ /***/
+ },
+
/***/ Qetd: /***/ function(module, exports, __webpack_require__) {
"use strict";
var assign = Object.assign.bind(Object);
@@ -728,6 +747,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
var _routeRegex = __webpack_require__("YTqd");
+ var _normalizeTrailingSlash = __webpack_require__("NkFK");
+
function _interopRequireDefault(obj) {
return obj && obj.__esModule
? obj
@@ -762,8 +783,14 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
url =
typeof url === "object" ? (0, _utils.formatWithValidation)(url) : url;
as = typeof as === "object" ? (0, _utils.formatWithValidation)(as) : as;
- url = addBasePath(url);
- as = as ? addBasePath(as) : as;
+ url = addBasePath(
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(url, !!false)
+ );
+ as = as
+ ? addBasePath(
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(as, !!false)
+ )
+ : as;
return {
url: url,
as: as
Diff for de003c3a9d30..6c.module.js
@@ -216,6 +216,25 @@
/***/
},
+ /***/ NkFK: /***/ function(module, exports, __webpack_require__) {
+ "use strict";
+
+ exports.__esModule = true;
+ exports.normalizeTrailingSlash = normalizeTrailingSlash;
+
+ function normalizeTrailingSlash(path, requireSlash) {
+ if (path === "/") {
+ return path;
+ } else if (path.endsWith("/")) {
+ return requireSlash ? path : path.slice(0, -1);
+ } else {
+ return requireSlash ? path + "/" : path;
+ }
+ }
+
+ /***/
+ },
+
/***/ Qetd: /***/ function(module, exports, __webpack_require__) {
"use strict";
var assign = Object.assign.bind(Object);
@@ -600,6 +619,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
var _routeRegex = __webpack_require__("YTqd");
+ var _normalizeTrailingSlash = __webpack_require__("NkFK");
+
function _interopRequireDefault(obj) {
return obj && obj.__esModule
? obj
@@ -633,8 +654,14 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
url =
typeof url === "object" ? (0, _utils.formatWithValidation)(url) : url;
as = typeof as === "object" ? (0, _utils.formatWithValidation)(as) : as;
- url = addBasePath(url);
- as = as ? addBasePath(as) : as;
+ url = addBasePath(
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(url, !!false)
+ );
+ as = as
+ ? addBasePath(
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(as, !!false)
+ )
+ : as;
return {
url,
as
Diff for link.module.js
@@ -65,13 +65,15 @@
/***/ cTJO: /***/ function(module, exports, __webpack_require__) {
"use strict";
- var _interopRequireDefault = __webpack_require__("TqRt");
-
var _interopRequireWildcard = __webpack_require__("284h");
+ var _interopRequireDefault = __webpack_require__("TqRt");
+
exports.__esModule = true;
exports.default = void 0;
+ var _extends2 = _interopRequireDefault(__webpack_require__("pVnL"));
+
var _react = _interopRequireWildcard(__webpack_require__("q1tI"));
var _url = __webpack_require__("QmWs");
@@ -82,6 +84,8 @@
var _router2 = __webpack_require__("elyg");
+ var _normalizeTrailingSlash = __webpack_require__("NkFK");
+
function isLocal(href) {
var url = (0, _url.parse)(href, false, true);
var origin = (0, _url.parse)(
@@ -112,10 +116,30 @@
};
}
+ function formatTrailingSlash(url) {
+ return (0, _extends2.default)(
+ (0, _extends2.default)({}, url),
+ {},
+ {
+ pathname:
+ url.pathname &&
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(
+ url.pathname,
+ !!false
+ )
+ }
+ );
+ }
+
function formatUrl(url) {
- return url && typeof url === "object"
- ? (0, _utils.formatWithValidation)(url)
- : url;
+ return (
+ url &&
+ (0, _utils.formatWithValidation)(
+ formatTrailingSlash(
+ typeof url === "object" ? url : (0, _url.parse)(url)
+ )
+ )
+ );
}
var cachedObserver;
@@ -379,6 +403,32 @@
var _default = Link;
exports.default = _default;
+ /***/
+ },
+
+ /***/ pVnL: /***/ function(module, exports) {
+ function _extends() {
+ module.exports = _extends =
+ Object.assign ||
+ function(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
+
+ return target;
+ };
+
+ return _extends.apply(this, arguments);
+ }
+
+ module.exports = _extends;
+
/***/
}
},
Diff for link.js
@@ -183,13 +183,15 @@
}
}
- var _interopRequireDefault = __webpack_require__("TqRt");
-
var _interopRequireWildcard = __webpack_require__("284h");
+ var _interopRequireDefault = __webpack_require__("TqRt");
+
exports.__esModule = true;
exports["default"] = void 0;
+ var _extends2 = _interopRequireDefault(__webpack_require__("pVnL"));
+
var _react = _interopRequireWildcard(__webpack_require__("q1tI"));
var _url = __webpack_require__("QmWs");
@@ -200,6 +202,8 @@
var _router2 = __webpack_require__("elyg");
+ var _normalizeTrailingSlash = __webpack_require__("NkFK");
+
function isLocal(href) {
var url = (0, _url.parse)(href, false, true);
var origin = (0, _url.parse)(
@@ -230,10 +234,30 @@
};
}
+ function formatTrailingSlash(url) {
+ return (0, _extends2["default"])(
+ (0, _extends2["default"])({}, url),
+ {},
+ {
+ pathname:
+ url.pathname &&
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(
+ url.pathname,
+ !!false
+ )
+ }
+ );
+ }
+
function formatUrl(url) {
- return url && typeof url === "object"
- ? (0, _utils.formatWithValidation)(url)
- : url;
+ return (
+ url &&
+ (0, _utils.formatWithValidation)(
+ formatTrailingSlash(
+ typeof url === "object" ? url : (0, _url.parse)(url)
+ )
+ )
+ );
}
var cachedObserver;
@@ -551,6 +575,32 @@
var _default = Link;
exports["default"] = _default;
+ /***/
+ },
+
+ /***/ pVnL: /***/ function(module, exports) {
+ function _extends() {
+ module.exports = _extends =
+ Object.assign ||
+ function(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
+
+ return target;
+ };
+
+ return _extends.apply(this, arguments);
+ }
+
+ module.exports = _extends;
+
/***/
}
},
Diff for index.html
@@ -24,7 +24,7 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.f733a40f0fc0ecaa4b6c.module.js"
+ href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.b05ce186af7a2566dcea.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -117,13 +117,13 @@
type="module"
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.0ea083186308dcf890b6.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.d500ad3fc59d95594bc1.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.f733a40f0fc0ecaa4b6c.module.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.b05ce186af7a2566dcea.module.js"
async=""
crossorigin="anonymous"
type="module"
Diff for link.html
@@ -24,7 +24,7 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.f733a40f0fc0ecaa4b6c.module.js"
+ href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.b05ce186af7a2566dcea.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -36,7 +36,7 @@
/>
<link
rel="preload"
- href="/_next/static/d5a70ed72905d882658f/pages/link.module.js"
+ href="/_next/static/a9a7a3996ad0d62cb2fd/pages/link.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -122,13 +122,13 @@
type="module"
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.0ea083186308dcf890b6.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.d500ad3fc59d95594bc1.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.f733a40f0fc0ecaa4b6c.module.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.b05ce186af7a2566dcea.module.js"
async=""
crossorigin="anonymous"
type="module"
@@ -146,13 +146,13 @@
type="module"
></script>
<script
- src="/_next/static/e826d21ad4f09aa9e68e/pages/link.js"
+ src="/_next/static/8b761fc6c799fd929630/pages/link.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/d5a70ed72905d882658f/pages/link.module.js"
+ src="/_next/static/a9a7a3996ad0d62cb2fd/pages/link.module.js"
async=""
crossorigin="anonymous"
type="module"
Diff for withRouter.html
@@ -24,7 +24,7 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.f733a40f0fc0ecaa4b6c.module.js"
+ href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.b05ce186af7a2566dcea.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -117,13 +117,13 @@
type="module"
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.0ea083186308dcf890b6.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.d500ad3fc59d95594bc1.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.f733a40f0fc0ecaa4b6c.module.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.b05ce186af7a2566dcea.module.js"
async=""
crossorigin="anonymous"
type="module"
Serverless Mode (Increase detected ⚠️ )
General Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 13.5s | 14.3s | |
nodeModulesSize | 65.2 MB | 65.2 MB |
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.51 kB | 6.51 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..0538.js gzip | 10.5 kB | N/A | N/A |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
de003c3a9d30..7202.js gzip | N/A | 10.6 kB | N/A |
Overall change | 56.9 kB | 57 kB |
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.6 kB | 5.6 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.93 kB | N/A | N/A |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
de003c3a9d30..dule.js gzip | N/A | 7.01 kB | N/A |
Overall change | 52.4 kB | 52.5 kB |
Legacy Client Bundles (polyfills)
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
_error.js gzip | 3.37 kB | 3.37 kB | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.05 kB | 2.22 kB | |
hooks.js gzip | 881 B | 881 B | ✓ |
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
Overall change | 8.34 kB | 8.51 kB |
Client Pages Modern Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
index.module.js gzip | 223 B | 223 B | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
_error.module.js gzip | 2.21 kB | 2.21 kB | ✓ |
link.module.js gzip | 1.52 kB | 1.71 kB | |
_app.module.js gzip | 604 B | 604 B | ✓ |
Overall change | 5.49 kB | 5.69 kB |
Client Build Manifests
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_buildManifest.js gzip | 270 B | 271 B | |
_buildManife..dule.js gzip | 274 B | 273 B | -1 B |
Overall change | 544 B | 544 B | ✓ |
Serverless bundles Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_error.js | 875 kB | 875 kB | |
404.html | 4.17 kB | 4.17 kB | ✓ |
hooks.html | 3.79 kB | 3.79 kB | ✓ |
index.js | 875 kB | 875 kB | |
link.js | 913 kB | 915 kB | |
routerDirect.js | 905 kB | 906 kB | |
withRouter.js | 905 kB | 906 kB | |
Overall change | 4.48 MB | 4.48 MB |
Stats from current PRDefault Server Mode (Increase detected
|
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 10s | 10.2s | |
nodeModulesSize | 67 MB | 67 MB |
Page Load Tests Overall increase ✓
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 1.728 | 1.764 | |
/ avg req/sec | 1446.66 | 1417.05 | -29.61 |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.01 | 0.988 | -0.02 |
/error-in-render avg req/sec | 2476.13 | 2531.64 |
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.51 kB | 6.51 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..4dd5.js gzip | 10.5 kB | 10.6 kB | |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 56.9 kB | 57 kB |
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.6 kB | 5.6 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | 7 kB | |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.4 kB | 52.5 kB |
Legacy Client Bundles (polyfills)
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages Overall decrease ✓
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
_error.js gzip | 3.37 kB | 3.37 kB | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.05 kB | N/A | N/A |
hooks.js gzip | 881 B | 881 B | ✓ |
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
Overall change | 8.34 kB | 6.29 kB | -2.05 kB |
Client Pages Modern Overall decrease ✓
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
index.module.js gzip | 223 B | 223 B | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
_error.module.js gzip | 2.21 kB | 2.21 kB | ✓ |
link.module.js gzip | 1.52 kB | N/A | N/A |
_app.module.js gzip | 604 B | 604 B | ✓ |
Overall change | 5.49 kB | 3.98 kB | -1.52 kB |
Client Build Manifests
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_buildManifest.js gzip | 270 B | 271 B | |
_buildManife..dule.js gzip | 274 B | 273 B | -1 B |
Overall change | 544 B | 544 B | ✓ |
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
index.html gzip | 953 B | 955 B | |
link.html gzip | 960 B | 962 B | |
withRouter.html gzip | 947 B | 948 B | |
Overall change | 2.86 kB | 2.87 kB |
Diffs
Diff for _buildManifest.js
@@ -2,7 +2,7 @@ self.__BUILD_MANIFEST = {
"/": ["static\u002F8f6ec52978e4ed685749\u002Fpages\u002Findex.js"],
"/_error": ["static\u002F280ae3949913ae3eca18\u002Fpages\u002F_error.js"],
"/hooks": ["static\u002F701db499b372d8b4ad8a\u002Fpages\u002Fhooks.js"],
- "/link": ["static\u002Fe826d21ad4f09aa9e68e\u002Fpages\u002Flink.js"],
+ "/link": ["static\u002F8b761fc6c799fd929630\u002Fpages\u002Flink.js"],
"/routerDirect": [
"static\u002F70609b58a7b84ec58870\u002Fpages\u002FrouterDirect.js"
],
Diff for _buildManifest.module.js
@@ -6,7 +6,7 @@ self.__BUILD_MANIFEST = {
"/hooks": [
"static\u002F680ac2d033b0bc870c3a\u002Fpages\u002Fhooks.module.js"
],
- "/link": ["static\u002Fd5a70ed72905d882658f\u002Fpages\u002Flink.module.js"],
+ "/link": ["static\u002Fa9a7a3996ad0d62cb2fd\u002Fpages\u002Flink.module.js"],
"/routerDirect": [
"static\u002Ff4884873d5a5d6e895c1\u002Fpages\u002FrouterDirect.module.js"
],
Diff for de003c3a9d30..ce095b7e0.js
@@ -239,6 +239,25 @@
/***/
},
+ /***/ NkFK: /***/ function(module, exports, __webpack_require__) {
+ "use strict";
+
+ exports.__esModule = true;
+ exports.normalizeTrailingSlash = normalizeTrailingSlash;
+
+ function normalizeTrailingSlash(path, requireSlash) {
+ if (path === "/") {
+ return path;
+ } else if (path.endsWith("/")) {
+ return requireSlash ? path : path.slice(0, -1);
+ } else {
+ return requireSlash ? path + "/" : path;
+ }
+ }
+
+ /***/
+ },
+
/***/ Qetd: /***/ function(module, exports, __webpack_require__) {
"use strict";
var assign = Object.assign.bind(Object);
@@ -726,6 +745,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
var _routeRegex = __webpack_require__("YTqd");
+ var _normalizeTrailingSlash = __webpack_require__("NkFK");
+
function _interopRequireDefault(obj) {
return obj && obj.__esModule
? obj
@@ -760,8 +781,14 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
url =
typeof url === "object" ? (0, _utils.formatWithValidation)(url) : url;
as = typeof as === "object" ? (0, _utils.formatWithValidation)(as) : as;
- url = addBasePath(url);
- as = as ? addBasePath(as) : as;
+ url = addBasePath(
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(url, !!false)
+ );
+ as = as
+ ? addBasePath(
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(as, !!false)
+ )
+ : as;
return {
url: url,
as: as
Diff for de003c3a9d30..84.module.js
@@ -216,6 +216,25 @@
/***/
},
+ /***/ NkFK: /***/ function(module, exports, __webpack_require__) {
+ "use strict";
+
+ exports.__esModule = true;
+ exports.normalizeTrailingSlash = normalizeTrailingSlash;
+
+ function normalizeTrailingSlash(path, requireSlash) {
+ if (path === "/") {
+ return path;
+ } else if (path.endsWith("/")) {
+ return requireSlash ? path : path.slice(0, -1);
+ } else {
+ return requireSlash ? path + "/" : path;
+ }
+ }
+
+ /***/
+ },
+
/***/ Qetd: /***/ function(module, exports, __webpack_require__) {
"use strict";
var assign = Object.assign.bind(Object);
@@ -598,6 +617,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
var _routeRegex = __webpack_require__("YTqd");
+ var _normalizeTrailingSlash = __webpack_require__("NkFK");
+
function _interopRequireDefault(obj) {
return obj && obj.__esModule
? obj
@@ -631,8 +652,14 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
url =
typeof url === "object" ? (0, _utils.formatWithValidation)(url) : url;
as = typeof as === "object" ? (0, _utils.formatWithValidation)(as) : as;
- url = addBasePath(url);
- as = as ? addBasePath(as) : as;
+ url = addBasePath(
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(url, !!false)
+ );
+ as = as
+ ? addBasePath(
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(as, !!false)
+ )
+ : as;
return {
url,
as
Diff for link.module.js
@@ -65,13 +65,15 @@
/***/ cTJO: /***/ function(module, exports, __webpack_require__) {
"use strict";
- var _interopRequireDefault = __webpack_require__("TqRt");
-
var _interopRequireWildcard = __webpack_require__("284h");
+ var _interopRequireDefault = __webpack_require__("TqRt");
+
exports.__esModule = true;
exports.default = void 0;
+ var _extends2 = _interopRequireDefault(__webpack_require__("pVnL"));
+
var _react = _interopRequireWildcard(__webpack_require__("q1tI"));
var _url = __webpack_require__("QmWs");
@@ -82,6 +84,8 @@
var _router2 = __webpack_require__("elyg");
+ var _normalizeTrailingSlash = __webpack_require__("NkFK");
+
function isLocal(href) {
var url = (0, _url.parse)(href, false, true);
var origin = (0, _url.parse)(
@@ -112,10 +116,30 @@
};
}
+ function formatTrailingSlash(url) {
+ return (0, _extends2.default)(
+ (0, _extends2.default)({}, url),
+ {},
+ {
+ pathname:
+ url.pathname &&
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(
+ url.pathname,
+ !!false
+ )
+ }
+ );
+ }
+
function formatUrl(url) {
- return url && typeof url === "object"
- ? (0, _utils.formatWithValidation)(url)
- : url;
+ return (
+ url &&
+ (0, _utils.formatWithValidation)(
+ formatTrailingSlash(
+ typeof url === "object" ? url : (0, _url.parse)(url)
+ )
+ )
+ );
}
var cachedObserver;
@@ -379,6 +403,32 @@
var _default = Link;
exports.default = _default;
+ /***/
+ },
+
+ /***/ pVnL: /***/ function(module, exports) {
+ function _extends() {
+ module.exports = _extends =
+ Object.assign ||
+ function(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
+
+ return target;
+ };
+
+ return _extends.apply(this, arguments);
+ }
+
+ module.exports = _extends;
+
/***/
}
},
Diff for link.js
@@ -183,13 +183,15 @@
}
}
- var _interopRequireDefault = __webpack_require__("TqRt");
-
var _interopRequireWildcard = __webpack_require__("284h");
+ var _interopRequireDefault = __webpack_require__("TqRt");
+
exports.__esModule = true;
exports["default"] = void 0;
+ var _extends2 = _interopRequireDefault(__webpack_require__("pVnL"));
+
var _react = _interopRequireWildcard(__webpack_require__("q1tI"));
var _url = __webpack_require__("QmWs");
@@ -200,6 +202,8 @@
var _router2 = __webpack_require__("elyg");
+ var _normalizeTrailingSlash = __webpack_require__("NkFK");
+
function isLocal(href) {
var url = (0, _url.parse)(href, false, true);
var origin = (0, _url.parse)(
@@ -230,10 +234,30 @@
};
}
+ function formatTrailingSlash(url) {
+ return (0, _extends2["default"])(
+ (0, _extends2["default"])({}, url),
+ {},
+ {
+ pathname:
+ url.pathname &&
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(
+ url.pathname,
+ !!false
+ )
+ }
+ );
+ }
+
function formatUrl(url) {
- return url && typeof url === "object"
- ? (0, _utils.formatWithValidation)(url)
- : url;
+ return (
+ url &&
+ (0, _utils.formatWithValidation)(
+ formatTrailingSlash(
+ typeof url === "object" ? url : (0, _url.parse)(url)
+ )
+ )
+ );
}
var cachedObserver;
@@ -551,6 +575,32 @@
var _default = Link;
exports["default"] = _default;
+ /***/
+ },
+
+ /***/ pVnL: /***/ function(module, exports) {
+ function _extends() {
+ module.exports = _extends =
+ Object.assign ||
+ function(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
+
+ return target;
+ };
+
+ return _extends.apply(this, arguments);
+ }
+
+ module.exports = _extends;
+
/***/
}
},
Diff for index.html
@@ -24,7 +24,7 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.deb50154f80a4044eb84.module.js"
+ href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.5a995b3d16da54ca817d.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -117,13 +117,13 @@
type="module"
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c055dea44cbce095b7e0.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.af7d5c5f7307e8bb510c.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.deb50154f80a4044eb84.module.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.5a995b3d16da54ca817d.module.js"
async=""
crossorigin="anonymous"
type="module"
Diff for link.html
@@ -24,7 +24,7 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.deb50154f80a4044eb84.module.js"
+ href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.5a995b3d16da54ca817d.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -36,7 +36,7 @@
/>
<link
rel="preload"
- href="/_next/static/d5a70ed72905d882658f/pages/link.module.js"
+ href="/_next/static/a9a7a3996ad0d62cb2fd/pages/link.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -122,13 +122,13 @@
type="module"
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c055dea44cbce095b7e0.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.af7d5c5f7307e8bb510c.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.deb50154f80a4044eb84.module.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.5a995b3d16da54ca817d.module.js"
async=""
crossorigin="anonymous"
type="module"
@@ -146,13 +146,13 @@
type="module"
></script>
<script
- src="/_next/static/e826d21ad4f09aa9e68e/pages/link.js"
+ src="/_next/static/8b761fc6c799fd929630/pages/link.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/d5a70ed72905d882658f/pages/link.module.js"
+ src="/_next/static/a9a7a3996ad0d62cb2fd/pages/link.module.js"
async=""
crossorigin="anonymous"
type="module"
Diff for withRouter.html
@@ -24,7 +24,7 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.deb50154f80a4044eb84.module.js"
+ href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.5a995b3d16da54ca817d.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -117,13 +117,13 @@
type="module"
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c055dea44cbce095b7e0.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.af7d5c5f7307e8bb510c.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.deb50154f80a4044eb84.module.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.5a995b3d16da54ca817d.module.js"
async=""
crossorigin="anonymous"
type="module"
Serverless Mode (Increase detected ⚠️ )
General Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 10.8s | 11.3s | |
nodeModulesSize | 67 MB | 67 MB |
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.51 kB | 6.51 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..4dd5.js gzip | 10.5 kB | N/A | N/A |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
de003c3a9d30..d094.js gzip | N/A | 10.6 kB | N/A |
Overall change | 56.9 kB | 57 kB |
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.6 kB | 5.6 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | N/A | N/A |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
de003c3a9d30..dule.js gzip | N/A | 7 kB | N/A |
Overall change | 52.4 kB | 52.5 kB |
Legacy Client Bundles (polyfills)
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
_error.js gzip | 3.37 kB | 3.37 kB | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.05 kB | 2.22 kB | |
hooks.js gzip | 881 B | 881 B | ✓ |
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
Overall change | 8.34 kB | 8.51 kB |
Client Pages Modern Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
index.module.js gzip | 223 B | 223 B | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
_error.module.js gzip | 2.21 kB | 2.21 kB | ✓ |
link.module.js gzip | 1.52 kB | 1.71 kB | |
_app.module.js gzip | 604 B | 604 B | ✓ |
Overall change | 5.49 kB | 5.69 kB |
Client Build Manifests
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_buildManifest.js gzip | 270 B | 271 B | |
_buildManife..dule.js gzip | 274 B | 273 B | -1 B |
Overall change | 544 B | 544 B | ✓ |
Serverless bundles Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_error.js | 875 kB | 875 kB | |
404.html | 4.17 kB | 4.17 kB | ✓ |
hooks.html | 3.79 kB | 3.79 kB | ✓ |
index.js | 875 kB | 875 kB | |
link.js | 914 kB | 915 kB | |
routerDirect.js | 906 kB | 907 kB | |
withRouter.js | 906 kB | 907 kB | |
Overall change | 4.48 MB | 4.49 MB |
Stats from current PRDefault Server Mode (Increase detected
|
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 12.3s | 12.1s | -144ms |
nodeModulesSize | 67.1 MB | 67.1 MB |
Page Load Tests Overall increase ✓
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 2.153 | 2.102 | -0.05 |
/ avg req/sec | 1160.95 | 1189.13 | |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.224 | 1.239 | |
/error-in-render avg req/sec | 2041.95 | 2017.15 | -24.8 |
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.52 kB | 6.52 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
19b7e98f51cc..62e5.js gzip | 10.6 kB | 10.6 kB | |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 57 kB | 57 kB |
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.61 kB | 5.61 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
19b7e98f51cc..dule.js gzip | 6.93 kB | 7.01 kB | |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.4 kB | 52.5 kB |
Legacy Client Bundles (polyfills)
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Build Manifests Overall decrease ✓
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_buildManifest.js gzip | 267 B | 266 B | -1 B |
_buildManife..dule.js gzip | 272 B | 272 B | ✓ |
Overall change | 539 B | 538 B | -1 B |
Rendered Page Sizes Overall decrease ✓
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
index.html gzip | 956 B | 955 B | -1 B |
link.html gzip | 962 B | 961 B | -1 B |
withRouter.html gzip | 946 B | 947 B | |
Overall change | 2.86 kB | 2.86 kB | -1 B |
Diffs
Diff for _buildManifest.js
@@ -2,7 +2,7 @@ self.__BUILD_MANIFEST = {
"/": ["static\u002Fpages\u002Findex-11fe542e59ffe08b9c17.js"],
"/_error": ["static\u002Fpages\u002F_error-3b4c50655cec434681df.js"],
"/hooks": ["static\u002Fpages\u002Fhooks-4bc500c4cb1edb297db7.js"],
- "/link": ["static\u002Fpages\u002Flink-e03b00bf99fc4142d3b8.js"],
+ "/link": ["static\u002Fpages\u002Flink-c9a1ace6466cff976cc5.js"],
"/routerDirect": [
"static\u002Fpages\u002FrouterDirect-d5190aca2cfed21f89ed.js"
],
Diff for _buildManifest.module.js
@@ -2,7 +2,7 @@ self.__BUILD_MANIFEST = {
"/": ["static\u002Fpages\u002Findex-9af5bb863ea5ea898abb.module.js"],
"/_error": ["static\u002Fpages\u002F_error-73fdfd5f8b4aa7735f04.module.js"],
"/hooks": ["static\u002Fpages\u002Fhooks-6506ef7c612d218944dc.module.js"],
- "/link": ["static\u002Fpages\u002Flink-23662bf1d721600d499b.module.js"],
+ "/link": ["static\u002Fpages\u002Flink-fad4ca04f543ec28b3ec.module.js"],
"/routerDirect": [
"static\u002Fpages\u002FrouterDirect-59db351f2f9a8da9cf40.module.js"
],
Diff for 19b7e98f51cc..96.module.js
@@ -216,6 +216,25 @@
/***/
},
+ /***/ NkFK: /***/ function(module, exports, __webpack_require__) {
+ "use strict";
+
+ exports.__esModule = true;
+ exports.normalizeTrailingSlash = normalizeTrailingSlash;
+
+ function normalizeTrailingSlash(path, requireSlash) {
+ if (path === "/") {
+ return path;
+ } else if (path.endsWith("/")) {
+ return requireSlash ? path : path.slice(0, -1);
+ } else {
+ return requireSlash ? path + "/" : path;
+ }
+ }
+
+ /***/
+ },
+
/***/ Qetd: /***/ function(module, exports, __webpack_require__) {
"use strict";
var assign = Object.assign.bind(Object);
@@ -607,6 +626,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
var _routeRegex = __webpack_require__("YTqd");
+ var _normalizeTrailingSlash = __webpack_require__("NkFK");
+
function _interopRequireDefault(obj) {
return obj && obj.__esModule
? obj
@@ -642,8 +663,14 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
url =
typeof url === "object" ? (0, _utils.formatWithValidation)(url) : url;
as = typeof as === "object" ? (0, _utils.formatWithValidation)(as) : as;
- url = addBasePath(url);
- as = as ? addBasePath(as) : as;
+ url = addBasePath(
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(url, !!false)
+ );
+ as = as
+ ? addBasePath(
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(as, !!false)
+ )
+ : as;
return {
url,
as
Diff for 19b7e98f51cc..8bf3c44ba.js
@@ -239,6 +239,25 @@
/***/
},
+ /***/ NkFK: /***/ function(module, exports, __webpack_require__) {
+ "use strict";
+
+ exports.__esModule = true;
+ exports.normalizeTrailingSlash = normalizeTrailingSlash;
+
+ function normalizeTrailingSlash(path, requireSlash) {
+ if (path === "/") {
+ return path;
+ } else if (path.endsWith("/")) {
+ return requireSlash ? path : path.slice(0, -1);
+ } else {
+ return requireSlash ? path + "/" : path;
+ }
+ }
+
+ /***/
+ },
+
/***/ Qetd: /***/ function(module, exports, __webpack_require__) {
"use strict";
var assign = Object.assign.bind(Object);
@@ -737,6 +756,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
var _routeRegex = __webpack_require__("YTqd");
+ var _normalizeTrailingSlash = __webpack_require__("NkFK");
+
function _interopRequireDefault(obj) {
return obj && obj.__esModule
? obj
@@ -772,8 +793,14 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
url =
typeof url === "object" ? (0, _utils.formatWithValidation)(url) : url;
as = typeof as === "object" ? (0, _utils.formatWithValidation)(as) : as;
- url = addBasePath(url);
- as = as ? addBasePath(as) : as;
+ url = addBasePath(
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(url, !!false)
+ );
+ as = as
+ ? addBasePath(
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(as, !!false)
+ )
+ : as;
return {
url: url,
as: as
Diff for index.html
@@ -24,7 +24,7 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.38f50e949e1a74742f96.module.js"
+ href="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.613b0e8259fc167fd0b7.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -117,13 +117,13 @@
type="module"
></script>
<script
- src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.45aa21b8a4d8bf3c44ba.js"
+ src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.e4d6859c2a880f88dd4c.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.38f50e949e1a74742f96.module.js"
+ src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.613b0e8259fc167fd0b7.module.js"
async=""
crossorigin="anonymous"
type="module"
Diff for link.html
@@ -24,7 +24,7 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.38f50e949e1a74742f96.module.js"
+ href="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.613b0e8259fc167fd0b7.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -36,7 +36,7 @@
/>
<link
rel="preload"
- href="/_next/static/pages/link-23662bf1d721600d499b.module.js"
+ href="/_next/static/pages/link-fad4ca04f543ec28b3ec.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -122,13 +122,13 @@
type="module"
></script>
<script
- src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.45aa21b8a4d8bf3c44ba.js"
+ src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.e4d6859c2a880f88dd4c.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.38f50e949e1a74742f96.module.js"
+ src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.613b0e8259fc167fd0b7.module.js"
async=""
crossorigin="anonymous"
type="module"
@@ -146,13 +146,13 @@
type="module"
></script>
<script
- src="/_next/static/pages/link-e03b00bf99fc4142d3b8.js"
+ src="/_next/static/pages/link-c9a1ace6466cff976cc5.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/pages/link-23662bf1d721600d499b.module.js"
+ src="/_next/static/pages/link-fad4ca04f543ec28b3ec.module.js"
async=""
crossorigin="anonymous"
type="module"
Diff for withRouter.html
@@ -24,7 +24,7 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.38f50e949e1a74742f96.module.js"
+ href="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.613b0e8259fc167fd0b7.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -117,13 +117,13 @@
type="module"
></script>
<script
- src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.45aa21b8a4d8bf3c44ba.js"
+ src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.e4d6859c2a880f88dd4c.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.38f50e949e1a74742f96.module.js"
+ src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.613b0e8259fc167fd0b7.module.js"
async=""
crossorigin="anonymous"
type="module"
Serverless Mode (Increase detected ⚠️ )
General Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 13.1s | 12.6s | -525ms |
nodeModulesSize | 67.1 MB | 67.1 MB |
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.52 kB | 6.52 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
19b7e98f51cc..62e5.js gzip | 10.6 kB | N/A | N/A |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
19b7e98f51cc..de4f.js gzip | N/A | 10.6 kB | N/A |
Overall change | 57 kB | 57 kB |
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.61 kB | 5.61 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
19b7e98f51cc..dule.js gzip | 6.93 kB | N/A | N/A |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
19b7e98f51cc..dule.js gzip | N/A | 7.01 kB | N/A |
Overall change | 52.4 kB | 52.5 kB |
Legacy Client Bundles (polyfills)
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Build Manifests Overall decrease ✓
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_buildManifest.js gzip | 267 B | 266 B | -1 B |
_buildManife..dule.js gzip | 272 B | 272 B | ✓ |
Overall change | 539 B | 538 B | -1 B |
Serverless bundles Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_error.js | 875 kB | 875 kB | |
404.html | 4.17 kB | 4.17 kB | ✓ |
hooks.html | 3.79 kB | 3.79 kB | ✓ |
index.js | 875 kB | 875 kB | |
link.js | 914 kB | 915 kB | |
routerDirect.js | 906 kB | 907 kB | |
withRouter.js | 906 kB | 907 kB | |
Overall change | 4.48 MB | 4.49 MB |
…-slashes # Conflicts: # packages/next/next-server/lib/router/router.ts # packages/next/next-server/server/next-server.ts
Stats from current PRDefault Server Mode (Increase detected
|
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 12.2s | 12.4s | |
nodeModulesSize | 67.1 MB | 67.1 MB |
Page Load Tests Overall increase ✓
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 2.057 | 1.985 | -0.07 |
/ avg req/sec | 1215.48 | 1259.7 | |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.33 | 1.203 | -0.13 |
/error-in-render avg req/sec | 1880.21 | 2078.47 |
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.49 kB | 6.49 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
19b7e98f51cc..bcce.js gzip | 10.6 kB | 10.7 kB | |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 57 kB | 57.1 kB |
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.57 kB | 5.57 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
19b7e98f51cc..dule.js gzip | 6.99 kB | 7.07 kB | |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 52.4 kB | 52.5 kB |
Legacy Client Bundles (polyfills)
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Build Manifests Overall decrease ✓
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_buildManifest.js gzip | 267 B | 266 B | -1 B |
_buildManife..dule.js gzip | 272 B | 272 B | ✓ |
Overall change | 539 B | 538 B | -1 B |
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
index.html gzip | 953 B | 954 B | |
link.html gzip | 957 B | 961 B | |
withRouter.html gzip | 945 B | 946 B | |
Overall change | 2.85 kB | 2.86 kB |
Diffs
Diff for _buildManifest.js
@@ -2,7 +2,7 @@ self.__BUILD_MANIFEST = {
"/": ["static\u002Fpages\u002Findex-11fe542e59ffe08b9c17.js"],
"/_error": ["static\u002Fpages\u002F_error-3b4c50655cec434681df.js"],
"/hooks": ["static\u002Fpages\u002Fhooks-4bc500c4cb1edb297db7.js"],
- "/link": ["static\u002Fpages\u002Flink-e03b00bf99fc4142d3b8.js"],
+ "/link": ["static\u002Fpages\u002Flink-c9a1ace6466cff976cc5.js"],
"/routerDirect": [
"static\u002Fpages\u002FrouterDirect-d5190aca2cfed21f89ed.js"
],
Diff for _buildManifest.module.js
@@ -2,7 +2,7 @@ self.__BUILD_MANIFEST = {
"/": ["static\u002Fpages\u002Findex-9af5bb863ea5ea898abb.module.js"],
"/_error": ["static\u002Fpages\u002F_error-73fdfd5f8b4aa7735f04.module.js"],
"/hooks": ["static\u002Fpages\u002Fhooks-6506ef7c612d218944dc.module.js"],
- "/link": ["static\u002Fpages\u002Flink-23662bf1d721600d499b.module.js"],
+ "/link": ["static\u002Fpages\u002Flink-fad4ca04f543ec28b3ec.module.js"],
"/routerDirect": [
"static\u002Fpages\u002FrouterDirect-59db351f2f9a8da9cf40.module.js"
],
Diff for 19b7e98f51cc..78a1ad7fa.js
@@ -263,6 +263,25 @@
/***/
},
+ /***/ NkFK: /***/ function(module, exports, __webpack_require__) {
+ "use strict";
+
+ exports.__esModule = true;
+ exports.normalizeTrailingSlash = normalizeTrailingSlash;
+
+ function normalizeTrailingSlash(path, requireSlash) {
+ if (path === "/") {
+ return path;
+ } else if (path.endsWith("/")) {
+ return requireSlash ? path : path.slice(0, -1);
+ } else {
+ return requireSlash ? path + "/" : path;
+ }
+ }
+
+ /***/
+ },
+
/***/ Qetd: /***/ function(module, exports, __webpack_require__) {
"use strict";
var assign = Object.assign.bind(Object);
@@ -761,6 +780,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
var _routeRegex = __webpack_require__("YTqd");
+ var _normalizeTrailingSlash = __webpack_require__("NkFK");
+
var _getAssetPathFromRoute = _interopRequireDefault(
__webpack_require__("Lab5")
);
@@ -799,8 +820,14 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
url =
typeof url === "object" ? (0, _utils.formatWithValidation)(url) : url;
as = typeof as === "object" ? (0, _utils.formatWithValidation)(as) : as;
- url = addBasePath(url);
- as = as ? addBasePath(as) : as;
+ url = addBasePath(
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(url, !!false)
+ );
+ as = as
+ ? addBasePath(
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(as, !!false)
+ )
+ : as;
return {
url: url,
as: as
Diff for 19b7e98f51cc..bd.module.js
@@ -240,6 +240,25 @@
/***/
},
+ /***/ NkFK: /***/ function(module, exports, __webpack_require__) {
+ "use strict";
+
+ exports.__esModule = true;
+ exports.normalizeTrailingSlash = normalizeTrailingSlash;
+
+ function normalizeTrailingSlash(path, requireSlash) {
+ if (path === "/") {
+ return path;
+ } else if (path.endsWith("/")) {
+ return requireSlash ? path : path.slice(0, -1);
+ } else {
+ return requireSlash ? path + "/" : path;
+ }
+ }
+
+ /***/
+ },
+
/***/ Qetd: /***/ function(module, exports, __webpack_require__) {
"use strict";
var assign = Object.assign.bind(Object);
@@ -631,6 +650,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
var _routeRegex = __webpack_require__("YTqd");
+ var _normalizeTrailingSlash = __webpack_require__("NkFK");
+
var _getAssetPathFromRoute = _interopRequireDefault(
__webpack_require__("Lab5")
);
@@ -669,8 +690,14 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
url =
typeof url === "object" ? (0, _utils.formatWithValidation)(url) : url;
as = typeof as === "object" ? (0, _utils.formatWithValidation)(as) : as;
- url = addBasePath(url);
- as = as ? addBasePath(as) : as;
+ url = addBasePath(
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(url, !!false)
+ );
+ as = as
+ ? addBasePath(
+ (0, _normalizeTrailingSlash.normalizeTrailingSlash)(as, !!false)
+ )
+ : as;
return {
url,
as
Diff for index.html
@@ -24,7 +24,7 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.a305f69ab07958bac8bd.module.js"
+ href="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.49eb0f00d05cbc3d1aae.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -117,13 +117,13 @@
type="module"
></script>
<script
- src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.3bf88d6a54d78a1ad7fa.js"
+ src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.84ae27d08f82341fc613.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.a305f69ab07958bac8bd.module.js"
+ src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.49eb0f00d05cbc3d1aae.module.js"
async=""
crossorigin="anonymous"
type="module"
Diff for link.html
@@ -24,7 +24,7 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.a305f69ab07958bac8bd.module.js"
+ href="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.49eb0f00d05cbc3d1aae.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -36,7 +36,7 @@
/>
<link
rel="preload"
- href="/_next/static/pages/link-23662bf1d721600d499b.module.js"
+ href="/_next/static/pages/link-fad4ca04f543ec28b3ec.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -122,13 +122,13 @@
type="module"
></script>
<script
- src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.3bf88d6a54d78a1ad7fa.js"
+ src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.84ae27d08f82341fc613.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.a305f69ab07958bac8bd.module.js"
+ src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.49eb0f00d05cbc3d1aae.module.js"
async=""
crossorigin="anonymous"
type="module"
@@ -146,13 +146,13 @@
type="module"
></script>
<script
- src="/_next/static/pages/link-e03b00bf99fc4142d3b8.js"
+ src="/_next/static/pages/link-c9a1ace6466cff976cc5.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/pages/link-23662bf1d721600d499b.module.js"
+ src="/_next/static/pages/link-fad4ca04f543ec28b3ec.module.js"
async=""
crossorigin="anonymous"
type="module"
Diff for withRouter.html
@@ -24,7 +24,7 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.a305f69ab07958bac8bd.module.js"
+ href="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.49eb0f00d05cbc3d1aae.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -117,13 +117,13 @@
type="module"
></script>
<script
- src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.3bf88d6a54d78a1ad7fa.js"
+ src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.84ae27d08f82341fc613.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.a305f69ab07958bac8bd.module.js"
+ src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.49eb0f00d05cbc3d1aae.module.js"
async=""
crossorigin="anonymous"
type="module"
Serverless Mode (Increase detected ⚠️ )
General Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
buildDuration | 13.1s | 13.4s | |
nodeModulesSize | 67.1 MB | 67.1 MB |
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.js gzip | 6.49 kB | 6.49 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
19b7e98f51cc..bcce.js gzip | 10.6 kB | N/A | N/A |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
19b7e98f51cc..14a7.js gzip | N/A | 10.7 kB | N/A |
Overall change | 57 kB | 57.1 kB |
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.57 kB | 5.57 kB | ✓ |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
19b7e98f51cc..dule.js gzip | 6.99 kB | N/A | N/A |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
19b7e98f51cc..dule.js gzip | N/A | 7.07 kB | N/A |
Overall change | 52.4 kB | 52.5 kB |
Legacy Client Bundles (polyfills)
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Build Manifests Overall decrease ✓
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_buildManifest.js gzip | 267 B | 266 B | -1 B |
_buildManife..dule.js gzip | 272 B | 272 B | ✓ |
Overall change | 539 B | 538 B | -1 B |
Serverless bundles Overall increase ⚠️
vercel/next.js canary | Janpot/next.js trailing-slashes | Change | |
---|---|---|---|
_error.js | 875 kB | 875 kB | |
404.html | 4.17 kB | 4.17 kB | ✓ |
hooks.html | 3.79 kB | 3.79 kB | ✓ |
index.js | 875 kB | 875 kB | |
link.js | 915 kB | 916 kB | |
routerDirect.js | 907 kB | 908 kB | |
withRouter.js | 907 kB | 908 kB | |
Overall change | 4.49 MB | 4.49 MB |
Discovered while doing vercel#13333. `#` or `?` used to be stripped if there wasn't a value behind
) Extracted from vercel#13333, the same exact code lives in that PR as well, but we can merge this separately if it makes reviewing vercel#13333 easier This PR does 3 things - deduplicate code from build and next-dev-server that loads custom routes from next.config.js (`loadCustomRoutes`) - in `loadCustomRoutes`, load these rewrites, headers and redirects configs concurrently instead of sequentially. - in next-server, make `this.customRoutes` always defined, this allows us to remove the big `if` around its initialization code in `generateRoutes`, which in turn makes it possible to reuse this code for other routing than user defined routes, which is how vercel#13333 adds its redirects.
Co-authored-by: Joe Haddad <joe.haddad@zeit.co> Co-authored-by: Tim Neutkens <timneutkens@me.com>
Fixes #5214
Redirect pages with a trailing slash to their non-trailing slash counterpart. Also introduce a
trailingSlash
option. Whentrue
, all pages will permanently redirect to their path with a trailing slash, whenfalse
the inverse will happen. Links will also be rewritten to automatically include the trailing slash based on this setting.Since people seem to be interested in the progress, things I'm still looking into before this PR can land:
This doesn't seem entirely necessary: https://github.com/vercel/next.js/pull/13333/files#diff-d5da3edd96e627385fc2ed1f54328bc4R601 investigating if it can be (re)moved.The one innormalizePagePath
could be removedrouter.push
: will need to add tests and probably also fix the behaviorcanProbably better in a follow-upexportTrailingSlash
share code with parts of this PR?