-
Notifications
You must be signed in to change notification settings - Fork 27.1k
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
Generate per-segment responses for any static page #73945
base: canary
Are you sure you want to change the base?
Generate per-segment responses for any static page #73945
Conversation
f61f5ab
to
7211398
Compare
Tests Passed |
Stats from current PRDefault Build (Increase detected
|
vercel/next.js canary | acdlite/next.js segment-cache-support-for-any-static-page | Change | |
---|---|---|---|
buildDuration | 19s | 18.8s | N/A |
buildDurationCached | 14.9s | 12.6s | N/A |
nodeModulesSize | 410 MB | 410 MB | N/A |
nextStartRea..uration (ms) | 450ms | 467ms | N/A |
Client Bundles (main, webpack)
vercel/next.js canary | acdlite/next.js segment-cache-support-for-any-static-page | Change | |
---|---|---|---|
1187-HASH.js gzip | 50.9 kB | 50.8 kB | N/A |
8276.HASH.js gzip | 169 B | 168 B | N/A |
8377-HASH.js gzip | 5.36 kB | 5.36 kB | N/A |
bccd1874-HASH.js gzip | 53 kB | 53 kB | N/A |
framework-HASH.js gzip | 57.5 kB | 57.5 kB | N/A |
main-app-HASH.js gzip | 232 B | 235 B | N/A |
main-HASH.js gzip | 34.1 kB | 34 kB | N/A |
webpack-HASH.js gzip | 1.71 kB | 1.71 kB | N/A |
Overall change | 0 B | 0 B | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | acdlite/next.js segment-cache-support-for-any-static-page | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 39.4 kB | 39.4 kB | ✓ |
Client Pages
vercel/next.js canary | acdlite/next.js segment-cache-support-for-any-static-page | Change | |
---|---|---|---|
_app-HASH.js gzip | 193 B | 193 B | ✓ |
_error-HASH.js gzip | 193 B | 193 B | ✓ |
amp-HASH.js gzip | 512 B | 510 B | N/A |
css-HASH.js gzip | 343 B | 342 B | N/A |
dynamic-HASH.js gzip | 1.84 kB | 1.84 kB | ✓ |
edge-ssr-HASH.js gzip | 265 B | 265 B | ✓ |
head-HASH.js gzip | 363 B | 362 B | N/A |
hooks-HASH.js gzip | 393 B | 392 B | N/A |
image-HASH.js gzip | 4.49 kB | 4.49 kB | N/A |
index-HASH.js gzip | 268 B | 268 B | ✓ |
link-HASH.js gzip | 2.35 kB | 2.34 kB | N/A |
routerDirect..HASH.js gzip | 328 B | 328 B | ✓ |
script-HASH.js gzip | 397 B | 397 B | ✓ |
withRouter-HASH.js gzip | 323 B | 326 B | N/A |
1afbb74e6ecf..834.css gzip | 106 B | 106 B | ✓ |
Overall change | 3.59 kB | 3.59 kB | ✓ |
Client Build Manifests
vercel/next.js canary | acdlite/next.js segment-cache-support-for-any-static-page | Change | |
---|---|---|---|
_buildManifest.js gzip | 749 B | 746 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | acdlite/next.js segment-cache-support-for-any-static-page | Change | |
---|---|---|---|
index.html gzip | 521 B | 523 B | N/A |
link.html gzip | 536 B | 537 B | N/A |
withRouter.html gzip | 517 B | 521 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canary | acdlite/next.js segment-cache-support-for-any-static-page | Change | |
---|---|---|---|
edge-ssr.js gzip | 128 kB | 128 kB | N/A |
page.js gzip | 204 kB | 204 kB | |
Overall change | 204 kB | 204 kB |
Middleware size
vercel/next.js canary | acdlite/next.js segment-cache-support-for-any-static-page | Change | |
---|---|---|---|
middleware-b..fest.js gzip | 671 B | 667 B | N/A |
middleware-r..fest.js gzip | 155 B | 156 B | N/A |
middleware.js gzip | 31.2 kB | 31.2 kB | N/A |
edge-runtime..pack.js gzip | 844 B | 844 B | ✓ |
Overall change | 844 B | 844 B | ✓ |
Next Runtimes
vercel/next.js canary | acdlite/next.js segment-cache-support-for-any-static-page | Change | |
---|---|---|---|
523-experime...dev.js gzip | 322 B | 322 B | ✓ |
523.runtime.dev.js gzip | 314 B | 314 B | ✓ |
app-page-exp...dev.js gzip | 323 kB | 323 kB | N/A |
app-page-exp..prod.js gzip | 127 kB | 127 kB | N/A |
app-page-tur..prod.js gzip | 140 kB | 140 kB | N/A |
app-page-tur..prod.js gzip | 135 kB | 135 kB | N/A |
app-page.run...dev.js gzip | 313 kB | 313 kB | N/A |
app-page.run..prod.js gzip | 123 kB | 123 kB | N/A |
app-route-ex...dev.js gzip | 37.4 kB | 37.3 kB | N/A |
app-route-ex..prod.js gzip | 25.5 kB | 25.3 kB | N/A |
app-route-tu..prod.js gzip | 25.5 kB | 25.4 kB | N/A |
app-route-tu..prod.js gzip | 25.3 kB | 25.2 kB | N/A |
app-route.ru...dev.js gzip | 39 kB | 38.9 kB | N/A |
app-route.ru..prod.js gzip | 25.3 kB | 25.2 kB | N/A |
pages-api-tu..prod.js gzip | 9.69 kB | 9.67 kB | N/A |
pages-api.ru...dev.js gzip | 11.6 kB | 11.6 kB | N/A |
pages-api.ru..prod.js gzip | 9.68 kB | 9.67 kB | N/A |
pages-turbo...prod.js gzip | 21.7 kB | 21.7 kB | N/A |
pages.runtim...dev.js gzip | 27.4 kB | 27.4 kB | N/A |
pages.runtim..prod.js gzip | 21.7 kB | 21.7 kB | N/A |
server.runti..prod.js gzip | 916 kB | 916 kB | N/A |
Overall change | 636 B | 636 B | ✓ |
build cache Overall increase ⚠️
vercel/next.js canary | acdlite/next.js segment-cache-support-for-any-static-page | Change | |
---|---|---|---|
0.pack gzip | 2.05 MB | 2.08 MB | |
index.pack gzip | 70.8 kB | 74 kB | |
Overall change | 2.12 MB | 2.15 MB |
Diff details
Diff for middleware.js
Diff too large to display
Diff for edge-ssr.js
Diff too large to display
Diff for 1187-HASH.js
Diff too large to display
Diff for main-HASH.js
Diff too large to display
Diff for app-page-exp..ntime.dev.js
failed to diff
Diff for app-page-exp..time.prod.js
Diff too large to display
Diff for app-page-tur..time.prod.js
Diff too large to display
Diff for app-page-tur..time.prod.js
Diff too large to display
Diff for app-page.runtime.dev.js
failed to diff
Diff for app-page.runtime.prod.js
Diff too large to display
Diff for app-route-ex..ntime.dev.js
Diff too large to display
Diff for app-route-ex..time.prod.js
Diff too large to display
Diff for app-route-tu..time.prod.js
Diff too large to display
Diff for app-route-tu..time.prod.js
Diff too large to display
Diff for app-route.runtime.dev.js
Diff too large to display
Diff for app-route.ru..time.prod.js
Diff too large to display
Diff for pages-api-tu..time.prod.js
Diff too large to display
Diff for pages-api.runtime.dev.js
Diff too large to display
Diff for pages-api.ru..time.prod.js
Diff too large to display
Diff for pages-turbo...time.prod.js
Diff too large to display
Diff for pages.runtime.dev.js
Diff too large to display
Diff for pages.runtime.prod.js
Diff too large to display
Diff for server.runtime.prod.js
Diff too large to display
7211398
to
42ee6a9
Compare
This was an oversight on my part when I originally implemented the per- segment prefetches. `onError` needs to return an error digest.
Originally I gated per-segment prefetch generation on the PPR flag, because I thought the client Segment Cache would require PPR to be enabled on the server. However, since then the strategy has evolved and I do think we can roll out the Segment Cache independently of PPR. Dynamic pages without PPR won't be able to take full advantage of the Segment Cache, but if the page is fully static then there's no reason we can't implement all the same behavior. So during per-segment prerendering, I've changed the feature condition to check for the `clientSegmentCache` flag instead of the PPR one.
42ee6a9
to
a96d7df
Compare
Originally I gated per-segment prefetch generation on the PPR flag, because I thought the client Segment Cache would require PPR to be enabled on the server. However, since then the strategy has evolved and I do think we can roll out the Segment Cache independently of PPR.
Dynamic pages without PPR won't be able to take full advantage of the Segment Cache, but if the page is fully static then there's no reason we can't implement all the same behavior.
So during per-segment prerendering, I've changed the feature condition to check for the
clientSegmentCache
flag instead of the PPR one.Additionally, when I broadened the feature check, a failing test revealed that I neglected to set up error digest decoding correctly, so the first commit in this stack fixes that.