-
Notifications
You must be signed in to change notification settings - Fork 27.5k
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
Fix prerender tags when notFound is called #74577
Conversation
Stats from current PRDefault Build (Increase detected
|
vercel/next.js canary | vercel/next.js ijjk/fix-not-found-tags | Change | |
---|---|---|---|
buildDuration | 24.4s | 21.2s | N/A |
buildDurationCached | 20s | 17.2s | N/A |
nodeModulesSize | 417 MB | 417 MB | |
nextStartRea..uration (ms) | 536ms | 538ms | N/A |
Client Bundles (main, webpack)
vercel/next.js canary | vercel/next.js ijjk/fix-not-found-tags | Change | |
---|---|---|---|
1187-HASH.js gzip | 52.5 kB | 52.5 kB | N/A |
8276.HASH.js gzip | 169 B | 168 B | N/A |
8377-HASH.js gzip | 5.44 kB | 5.44 kB | N/A |
bccd1874-HASH.js gzip | 52.9 kB | 52.9 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.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 ijjk/fix-not-found-tags | 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 ijjk/fix-not-found-tags | 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.57 kB | 4.57 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 ijjk/fix-not-found-tags | Change | |
---|---|---|---|
_buildManifest.js gzip | 749 B | 747 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | vercel/next.js ijjk/fix-not-found-tags | Change | |
---|---|---|---|
index.html gzip | 523 B | 523 B | ✓ |
link.html gzip | 539 B | 537 B | N/A |
withRouter.html gzip | 519 B | 520 B | N/A |
Overall change | 523 B | 523 B | ✓ |
Edge SSR bundle Size
vercel/next.js canary | vercel/next.js ijjk/fix-not-found-tags | Change | |
---|---|---|---|
edge-ssr.js gzip | 128 kB | 128 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 ijjk/fix-not-found-tags | Change | |
---|---|---|---|
middleware-b..fest.js gzip | 668 B | 668 B | ✓ |
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 | 1.51 kB | 1.51 kB | ✓ |
Next Runtimes
vercel/next.js canary | vercel/next.js ijjk/fix-not-found-tags | 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 | 364 kB | 364 kB | N/A |
app-page-exp..prod.js gzip | 129 kB | 129 kB | N/A |
app-page-tur..prod.js gzip | 142 kB | 142 kB | N/A |
app-page-tur..prod.js gzip | 138 kB | 138 kB | N/A |
app-page.run...dev.js gzip | 352 kB | 352 kB | N/A |
app-page.run..prod.js gzip | 125 kB | 125 kB | N/A |
app-route-ex...dev.js gzip | 37.5 kB | 37.5 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.4 kB | 25.4 kB | ✓ |
app-route.ru...dev.js gzip | 39.2 kB | 39.2 kB | ✓ |
app-route.ru..prod.js gzip | 25.4 kB | 25.4 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 | 1.2 MB | 1.2 MB | ✓ |
build cache Overall increase ⚠️
vercel/next.js canary | vercel/next.js ijjk/fix-not-found-tags | Change | |
---|---|---|---|
0.pack gzip | 2.09 MB | 2.08 MB | N/A |
index.pack gzip | 74 kB | 74.2 kB | |
Overall change | 74 kB | 74.2 kB |
Diff details
Diff for main-HASH.js
Diff too large to display
Diff for app-page-exp..ntime.dev.js
Diff too large to display
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
Diff too large to display
Diff for app-page.runtime.prod.js
Diff too large to display
CI failure looks legit. PPR only though: https://github.com/vercel/next.js/actions/runs/12645224589/job/35237080652?pr=74577#step:29:586 |
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.
Did this affect any page that threw or just notFound()
?
Seems sketchy without knowing the underlying implementation that we only have to do this in this single place when we have 16 other occurences in this file where we init tags
.
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.
Did this affect any page that threw or just notFound()
This is fixing for any prerendered case where we throw an internal error e.g. notFound()
, redirect()
or similar. All of these should have the cache tags that were collected before these methods are called still applied to the page for revalidating.
This ensures we don't lose tags added to a page before `notFound()` is called as otherwise a fetch on the page that has been revalidated won't be able to be applied correctly if dropped from a `notFound()` call. This was broken recently in the refactors of handling rendering in app-render as it worked correctly in `v14`. x-ref: [slack thread](https://vercel.slack.com/archives/C04V3E1UYNQ/p1736200963684869) Closes https://linear.app/vercel/issue/ENET-1381 Closes https://linear.app/vercel/issue/NEXT-3946 Closes #73973 Closes #66540
This ensures we don't lose tags added to a page before
notFound()
is called as otherwise a fetch on the page that has been revalidated won't be able to be applied correctly if dropped from anotFound()
call. This was broken recently in the refactors of handling rendering in app-render as it worked correctly inv14
.x-ref: slack thread
Closes https://linear.app/vercel/issue/ENET-1381
Closes https://linear.app/vercel/issue/NEXT-3946
Closes https://linear.app/vercel/issue/NEXT-3936
Closes #73973
Closes #66540