-
Notifications
You must be signed in to change notification settings - Fork 28k
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
[metadata] Align prefetch head type with head #74161
Conversation
Tests Passed |
b24b653
to
984e021
Compare
fix default value revert error json
984e021
to
1d70f48
Compare
Stats from current PRDefault Build (Increase detected
|
vercel/next.js canary | vercel/next.js 12-17-separate_prefetch_head | Change | |
---|---|---|---|
buildDuration | 25.1s | 22.6s | N/A |
buildDurationCached | 21.1s | 18.6s | N/A |
nodeModulesSize | 416 MB | 416 MB | |
nextStartRea..uration (ms) | 589ms | 595ms | N/A |
Client Bundles (main, webpack)
vercel/next.js canary | vercel/next.js 12-17-separate_prefetch_head | Change | |
---|---|---|---|
1187-HASH.js gzip | 52.4 kB | 52.4 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 | 52.8 kB | 52.8 kB | N/A |
framework-HASH.js gzip | 57.5 kB | 57.5 kB | N/A |
main-app-HASH.js gzip | 233 B | 235 B | N/A |
main-HASH.js gzip | 34.1 kB | 34.1 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 | vercel/next.js 12-17-separate_prefetch_head | 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 | vercel/next.js 12-17-separate_prefetch_head | 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 | vercel/next.js 12-17-separate_prefetch_head | Change | |
---|---|---|---|
_buildManifest.js gzip | 749 B | 746 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | vercel/next.js 12-17-separate_prefetch_head | Change | |
---|---|---|---|
index.html gzip | 522 B | 524 B | N/A |
link.html gzip | 537 B | 537 B | ✓ |
withRouter.html gzip | 518 B | 520 B | N/A |
Overall change | 537 B | 537 B | ✓ |
Edge SSR bundle Size
vercel/next.js canary | vercel/next.js 12-17-separate_prefetch_head | Change | |
---|---|---|---|
edge-ssr.js gzip | 129 kB | 129 kB | N/A |
page.js gzip | 206 kB | 206 kB | N/A |
Overall change | 0 B | 0 B | ✓ |
Middleware size
vercel/next.js canary | vercel/next.js 12-17-separate_prefetch_head | Change | |
---|---|---|---|
middleware-b..fest.js gzip | 669 B | 666 B | N/A |
middleware-r..fest.js gzip | 155 B | 156 B | N/A |
middleware.js gzip | 31.3 kB | 31.3 kB | N/A |
edge-runtime..pack.js gzip | 844 B | 844 B | ✓ |
Overall change | 844 B | 844 B | ✓ |
Next Runtimes
vercel/next.js canary | vercel/next.js 12-17-separate_prefetch_head | Change | |
---|---|---|---|
274-experime...dev.js gzip | 322 B | 322 B | ✓ |
274.runtime.dev.js gzip | 314 B | 314 B | ✓ |
app-page-exp...dev.js gzip | 359 kB | 359 kB | N/A |
app-page-exp..prod.js gzip | 129 kB | 129 kB | ✓ |
app-page-tur..prod.js gzip | 141 kB | 141 kB | ✓ |
app-page-tur..prod.js gzip | 137 kB | 137 kB | ✓ |
app-page.run...dev.js gzip | 348 kB | 348 kB | ✓ |
app-page.run..prod.js gzip | 125 kB | 125 kB | ✓ |
app-route-ex...dev.js gzip | 37.4 kB | 37.4 kB | ✓ |
app-route-ex..prod.js gzip | 25.5 kB | 25.5 kB | ✓ |
app-route-tu..prod.js gzip | 25.5 kB | 25.5 kB | ✓ |
app-route-tu..prod.js gzip | 25.3 kB | 25.3 kB | ✓ |
app-route.ru...dev.js gzip | 39.1 kB | 39.1 kB | ✓ |
app-route.ru..prod.js gzip | 25.3 kB | 25.3 kB | ✓ |
pages-api-tu..prod.js gzip | 9.69 kB | 9.69 kB | ✓ |
pages-api.ru...dev.js gzip | 11.6 kB | 11.6 kB | ✓ |
pages-api.ru..prod.js gzip | 9.68 kB | 9.68 kB | ✓ |
pages-turbo...prod.js gzip | 21.7 kB | 21.7 kB | ✓ |
pages.runtim...dev.js gzip | 27.5 kB | 27.5 kB | ✓ |
pages.runtim..prod.js gzip | 21.7 kB | 21.7 kB | ✓ |
server.runti..prod.js gzip | 916 kB | 916 kB | ✓ |
Overall change | 2.08 MB | 2.08 MB | ✓ |
build cache Overall increase ⚠️
vercel/next.js canary | vercel/next.js 12-17-separate_prefetch_head | Change | |
---|---|---|---|
0.pack gzip | 2.08 MB | 2.08 MB | |
index.pack gzip | 73.4 kB | 74.4 kB | |
Overall change | 2.15 MB | 2.15 MB |
Diff details
Diff for 1187-HASH.js
Diff too large to display
Diff for main-HASH.js
Diff too large to display
This stack of pull requests is managed by Graphite. Learn more about stacking. |
head: (isLeafSegment ? possiblyPartialPrefetchHead : null) ?? [ | ||
null, | ||
null, | ||
], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm a bit confused: shouldn't we either standardize on null
representing [null, null]
? Or consistently always do [null, null]
?
head: (isLeafSegment ? possiblyPartialPrefetchHead : null) ?? [ | |
null, | |
null, | |
], | |
head: isLeafSegment ? possiblyPartialPrefetchHead : [null, null], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
possiblyPartialPrefetchHead
is still nullable. I tried all in [null, null]
first but feels it's bit redudant as prefetched data doesn't have to always hold a [null, null]
as default value. When you want to check if it's nullable and fallback to current head, [null, null]
would be a bit confusing to represent null and to check the values.
This will be a temeporary state, we'll have the [null, null] for short time then metadata will go to stay with page component. Then head
and prefetchedHead
will be back to single ReactNode
What
Follow up of #73867 where
prefetchHead
should also beHeadData
type like head. The default value ofprefetchHead
can just be null instead of[null, null]
which represents there's no prefetched head, as we're also checking if the value is truthy so that we can do the fallback logic inHead
component