-
Notifications
You must be signed in to change notification settings - Fork 27.2k
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
Skip client-side data-fetching after ssr error #51377
Conversation
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.
Hi, this still should be logged depending on the case. The initial case you mentioned where it's a server-side error in production and the client doesn't have access to it seems like a fair case to not log it but should remain for runtime exceptions and others.
@ijjk thanks for the response. The new solution fixes both aspects of the linked issue -- they turned out to be more closely related than I had originally thought. If a server-side error occurs (e.g. throwing in getInitialProps or during render) the error is logged in its entirety on the server. I will leave this unchanged though that might not be desirable for people using a structured logger / log parser (Insights, for example). The _error page is rendered server-side, so for the hydration pass, the only thing that needs to happen is hydration whereas before, the error page component would be fetched (no-op, already available from the initial request) and re-ran. |
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.
Could we add tests cases for the above to ensure it's behaving as expected?
@ijjk any further feedback on this? |
@ijjk sorry for the repeated bumps but any update on this? Or anything I can do to get this moving along? The JIRA ticket I have assigned to myself at work is looking a little sad / abandoned. |
@ijjk Hi, I am also waiting for this change to be shipped. I would be happy if you could review it. |
@ijjk Hi, any updates about this? |
Tests Passed |
Stats from current PRDefault BuildGeneral Overall increase
|
vercel/next.js canary | tills13/next.js remove-error-page-debug | Change | |
---|---|---|---|
buildDuration | 11s | 11.1s | N/A |
buildDurationCached | 6.2s | 5.5s | N/A |
nodeModulesSize | 318 MB | 318 MB | |
nextStartRea..uration (ms) | 409ms | 407ms | N/A |
Client Bundles (main, webpack)
vercel/next.js canary | tills13/next.js remove-error-page-debug | Change | |
---|---|---|---|
3f784ff6-HASH.js gzip | 53.4 kB | 53.4 kB | N/A |
423.HASH.js gzip | 185 B | 181 B | N/A |
68-HASH.js gzip | 29.6 kB | 29.5 kB | N/A |
framework-HASH.js gzip | 45.2 kB | 45.2 kB | ✓ |
main-app-HASH.js gzip | 238 B | 239 B | N/A |
main-HASH.js gzip | 31.8 kB | 31.8 kB | N/A |
webpack-HASH.js gzip | 1.7 kB | 1.7 kB | ✓ |
Overall change | 46.9 kB | 46.9 kB | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | tills13/next.js remove-error-page-debug | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | tills13/next.js remove-error-page-debug | Change | |
---|---|---|---|
_app-HASH.js gzip | 194 B | 195 B | N/A |
_error-HASH.js gzip | 182 B | 181 B | N/A |
amp-HASH.js gzip | 502 B | 501 B | N/A |
css-HASH.js gzip | 320 B | 322 B | N/A |
dynamic-HASH.js gzip | 2.5 kB | 2.5 kB | N/A |
edge-ssr-HASH.js gzip | 255 B | 256 B | N/A |
head-HASH.js gzip | 350 B | 349 B | N/A |
hooks-HASH.js gzip | 368 B | 369 B | N/A |
image-HASH.js gzip | 4.22 kB | 4.21 kB | N/A |
index-HASH.js gzip | 257 B | 256 B | N/A |
link-HASH.js gzip | 2.62 kB | 2.61 kB | N/A |
routerDirect..HASH.js gzip | 310 B | 311 B | N/A |
script-HASH.js gzip | 384 B | 383 B | N/A |
withRouter-HASH.js gzip | 306 B | 308 B | N/A |
1afbb74e6ecf..834.css gzip | 106 B | 106 B | ✓ |
Overall change | 106 B | 106 B | ✓ |
Client Build Manifests
vercel/next.js canary | tills13/next.js remove-error-page-debug | Change | |
---|---|---|---|
_buildManifest.js gzip | 483 B | 485 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | tills13/next.js remove-error-page-debug | Change | |
---|---|---|---|
index.html gzip | 528 B | 526 B | N/A |
link.html gzip | 541 B | 537 B | N/A |
withRouter.html gzip | 523 B | 521 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Edge SSR bundle Size
vercel/next.js canary | tills13/next.js remove-error-page-debug | Change | |
---|---|---|---|
edge-ssr.js gzip | 94 kB | 94 kB | N/A |
page.js gzip | 149 kB | 149 kB | N/A |
Overall change | 0 B | 0 B | ✓ |
Middleware size
vercel/next.js canary | tills13/next.js remove-error-page-debug | Change | |
---|---|---|---|
middleware-b..fest.js gzip | 621 B | 624 B | N/A |
middleware-r..fest.js gzip | 151 B | 149 B | N/A |
middleware.js gzip | 47.4 kB | 47.4 kB | N/A |
edge-runtime..pack.js gzip | 1.94 kB | 1.94 kB | ✓ |
Overall change | 1.94 kB | 1.94 kB | ✓ |
Next Runtimes
vercel/next.js canary | tills13/next.js remove-error-page-debug | Change | |
---|---|---|---|
app-page-exp...dev.js gzip | 166 kB | 166 kB | ✓ |
app-page-exp..prod.js gzip | 95.1 kB | 95.1 kB | ✓ |
app-page-tur..prod.js gzip | 96.9 kB | 96.9 kB | ✓ |
app-page-tur..prod.js gzip | 91.5 kB | 91.5 kB | ✓ |
app-page.run...dev.js gzip | 135 kB | 135 kB | ✓ |
app-page.run..prod.js gzip | 90 kB | 90 kB | ✓ |
app-route-ex...dev.js gzip | 22 kB | 22 kB | ✓ |
app-route-ex..prod.js gzip | 14.8 kB | 14.8 kB | ✓ |
app-route-tu..prod.js gzip | 14.8 kB | 14.8 kB | ✓ |
app-route-tu..prod.js gzip | 14.6 kB | 14.6 kB | ✓ |
app-route.ru...dev.js gzip | 21.7 kB | 21.7 kB | ✓ |
app-route.ru..prod.js gzip | 14.6 kB | 14.6 kB | ✓ |
pages-api-tu..prod.js gzip | 9.43 kB | 9.43 kB | ✓ |
pages-api.ru...dev.js gzip | 9.7 kB | 9.7 kB | ✓ |
pages-api.ru..prod.js gzip | 9.43 kB | 9.43 kB | ✓ |
pages-turbo...prod.js gzip | 22 kB | 22 kB | ✓ |
pages.runtim...dev.js gzip | 22.7 kB | 22.7 kB | ✓ |
pages.runtim..prod.js gzip | 22 kB | 22 kB | ✓ |
server.runti..prod.js gzip | 49.7 kB | 49.7 kB | ✓ |
Overall change | 922 kB | 922 kB | ✓ |
Diff details
Diff for main-HASH.js
Diff too large to display
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.
Hi, sorry for the delay here, re-triggered the test suite and it seems we have some failing cases. We need to ensure a breaking change isn't occurring here.
I will take a look right now. |
not done yet, just unable to run tests on my machine. Syncing with another machine through Github. |
89d0f10
to
f34ac34
Compare
Hey @ijjk re: #45185 -- seems like Yarn is still needed for e2e tests here: https://github.com/vercel/next.js/blob/canary/test/lib/next-modes/next-dev.ts#L31-L36 The tests / gh actions install yarn here (I believe): https://github.com/vercel/next.js/blob/canary/.github/workflows/build_reusable.yml#L125 Or am I missing something running tests locally? Installing yarn allows me to run tests. |
ready for a re-review |
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.
Thanks for the PR!
Fixes: #47978
When an error occurs in getInitialProps, the error page's getInitialProps is run server-side and returned in
__NEXT_DATA__
. Following, there's no need to re-rungetInitialProps
client-side on the hydrate pass.