-
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
Track errors where frames are not sourcemapped properly in the Redbox #73006
Track errors where frames are not sourcemapped properly in the Redbox #73006
Conversation
Failing test suitesCommit: f11c84f
Expand output● ReactRefreshRequire › propagates a module that stops accepting in next version
Read more about building and testing Next.js in contributing.md.
Expand output● Error overlay - RSC build errors › should throw an error when error file is a server component with empty error file
Read more about building and testing Next.js in contributing.md.
Expand output● ReactRefreshLogBox app default › server component can recover from error thrown in the module
Read more about building and testing Next.js in contributing.md.
Expand output● basic HMR, nextConfig: { basePath: '', assetPrefix: '' } › Error Recovery › should detect runtime errors on the module scope
● basic HMR, nextConfig: { basePath: '', assetPrefix: '' } › Error Recovery › should recover after exporting an invalid page
● basic HMR, nextConfig: { basePath: '', assetPrefix: '' } › Error Recovery › should recover after a bad return from the render function
● basic HMR, nextConfig: { basePath: '', assetPrefix: '' } › Error Recovery › should recover after undefined exported as default
● basic HMR, nextConfig: { basePath: '', assetPrefix: '' } › Error Recovery › should recover after an error reported via SSR
● basic HMR, nextConfig: { basePath: '', assetPrefix: '/asset-prefix' } › Error Recovery › should detect runtime errors on the module scope
● basic HMR, nextConfig: { basePath: '', assetPrefix: '/asset-prefix' } › Error Recovery › should recover after exporting an invalid page
● basic HMR, nextConfig: { basePath: '', assetPrefix: '/asset-prefix' } › Error Recovery › should recover after a bad return from the render function
● basic HMR, nextConfig: { basePath: '', assetPrefix: '/asset-prefix' } › Error Recovery › should recover after undefined exported as default
● basic HMR, nextConfig: { basePath: '', assetPrefix: '/asset-prefix' } › Error Recovery › should recover from errors in getInitialProps in client
● basic HMR, nextConfig: { basePath: '', assetPrefix: '/asset-prefix' } › Error Recovery › should recover after an error reported via SSR
● basic HMR, nextConfig: { basePath: '/docs', assetPrefix: '' } › Error Recovery › should detect runtime errors on the module scope
● basic HMR, nextConfig: { basePath: '/docs', assetPrefix: '' } › Error Recovery › should recover after exporting an invalid page
● basic HMR, nextConfig: { basePath: '/docs', assetPrefix: '' } › Error Recovery › should recover after a bad return from the render function
● basic HMR, nextConfig: { basePath: '/docs', assetPrefix: '' } › Error Recovery › should recover after undefined exported as default
● basic HMR, nextConfig: { basePath: '/docs', assetPrefix: '' } › Error Recovery › should recover after an error reported via SSR
● basic HMR, nextConfig: { basePath: '/docs', assetPrefix: '/asset-prefix' } › Error Recovery › should detect runtime errors on the module scope
● basic HMR, nextConfig: { basePath: '/docs', assetPrefix: '/asset-prefix' } › Error Recovery › should recover after exporting an invalid page
● basic HMR, nextConfig: { basePath: '/docs', assetPrefix: '/asset-prefix' } › Error Recovery › should recover after a bad return from the render function
● basic HMR, nextConfig: { basePath: '/docs', assetPrefix: '/asset-prefix' } › Error Recovery › should recover after undefined exported as default
● basic HMR, nextConfig: { basePath: '/docs', assetPrefix: '/asset-prefix' } › Error Recovery › should recover from errors in getInitialProps in client
● basic HMR, nextConfig: { basePath: '/docs', assetPrefix: '/asset-prefix' } › Error Recovery › should recover after an error reported via SSR
Read more about building and testing Next.js in contributing.md. |
Stats from current PRDefault Build (Increase detected
|
vercel/next.js canary | vercel/next.js sebbie/11-20-track_errors_where_frames_are_not_sourcemapped_properly_in_the_redbox | Change | |
---|---|---|---|
buildDuration | 27s | 27.4s | |
buildDurationCached | 23.7s | 21s | N/A |
nodeModulesSize | 409 MB | 409 MB | N/A |
nextStartRea..uration (ms) | 583ms | 591ms | N/A |
Client Bundles (main, webpack)
vercel/next.js canary | vercel/next.js sebbie/11-20-track_errors_where_frames_are_not_sourcemapped_properly_in_the_redbox | Change | |
---|---|---|---|
1187-HASH.js gzip | 50.2 kB | 49.2 kB | N/A |
8276.HASH.js gzip | 169 B | 168 B | N/A |
8377-HASH.js gzip | 5.3 kB | 5.3 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 | 33.8 kB | 33.7 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 sebbie/11-20-track_errors_where_frames_are_not_sourcemapped_properly_in_the_redbox | 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 sebbie/11-20-track_errors_where_frames_are_not_sourcemapped_properly_in_the_redbox | Change | |
---|---|---|---|
_app-HASH.js gzip | 193 B | 193 B | ✓ |
_error-HASH.js gzip | 193 B | 193 B | ✓ |
amp-HASH.js gzip | 513 B | 511 B | N/A |
css-HASH.js gzip | 343 B | 342 B | N/A |
dynamic-HASH.js gzip | 1.84 kB | 1.84 kB | N/A |
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.44 kB | 4.43 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 | 1.75 kB | 1.75 kB | ✓ |
Client Build Manifests
vercel/next.js canary | vercel/next.js sebbie/11-20-track_errors_where_frames_are_not_sourcemapped_properly_in_the_redbox | Change | |
---|---|---|---|
_buildManifest.js gzip | 746 B | 747 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | vercel/next.js sebbie/11-20-track_errors_where_frames_are_not_sourcemapped_properly_in_the_redbox | Change | |
---|---|---|---|
index.html gzip | 524 B | 524 B | ✓ |
link.html gzip | 537 B | 537 B | ✓ |
withRouter.html gzip | 520 B | 521 B | N/A |
Overall change | 1.06 kB | 1.06 kB | ✓ |
Edge SSR bundle Size
vercel/next.js canary | vercel/next.js sebbie/11-20-track_errors_where_frames_are_not_sourcemapped_properly_in_the_redbox | Change | |
---|---|---|---|
edge-ssr.js gzip | 128 kB | 128 kB | N/A |
page.js gzip | 203 kB | 200 kB | N/A |
Overall change | 0 B | 0 B | ✓ |
Middleware size
vercel/next.js canary | vercel/next.js sebbie/11-20-track_errors_where_frames_are_not_sourcemapped_properly_in_the_redbox | Change | |
---|---|---|---|
middleware-b..fest.js gzip | 668 B | 663 B | N/A |
middleware-r..fest.js gzip | 155 B | 156 B | N/A |
middleware.js gzip | 31 kB | 31.1 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 sebbie/11-20-track_errors_where_frames_are_not_sourcemapped_properly_in_the_redbox | Change | |
---|---|---|---|
797-experime...dev.js gzip | 322 B | 322 B | ✓ |
797.runtime.dev.js gzip | 314 B | 314 B | ✓ |
app-page-exp...dev.js gzip | 322 kB | 321 kB | N/A |
app-page-exp..prod.js gzip | 127 kB | 126 kB | N/A |
app-page-tur..prod.js gzip | 140 kB | 139 kB | N/A |
app-page-tur..prod.js gzip | 135 kB | 134 kB | N/A |
app-page.run...dev.js gzip | 312 kB | 311 kB | N/A |
app-page.run..prod.js gzip | 122 kB | 122 kB | N/A |
app-route-ex...dev.js gzip | 37.1 kB | 36.8 kB | N/A |
app-route-ex..prod.js gzip | 25.1 kB | 25 kB | N/A |
app-route-tu..prod.js gzip | 25.1 kB | 25 kB | N/A |
app-route-tu..prod.js gzip | 24.9 kB | 24.8 kB | N/A |
app-route.ru...dev.js gzip | 38.7 kB | 38.5 kB | N/A |
app-route.ru..prod.js gzip | 24.9 kB | 24.8 kB | N/A |
pages-api-tu..prod.js gzip | 9.56 kB | 9.56 kB | ✓ |
pages-api.ru...dev.js gzip | 11.4 kB | 11.4 kB | ✓ |
pages-api.ru..prod.js gzip | 9.56 kB | 9.56 kB | ✓ |
pages-turbo...prod.js gzip | 21.3 kB | 21.3 kB | ✓ |
pages.runtim...dev.js gzip | 27 kB | 27 kB | ✓ |
pages.runtim..prod.js gzip | 21.3 kB | 21.3 kB | ✓ |
server.runti..prod.js gzip | 916 kB | 916 kB | N/A |
Overall change | 101 kB | 101 kB | ✓ |
build cache Overall increase ⚠️
vercel/next.js canary | vercel/next.js sebbie/11-20-track_errors_where_frames_are_not_sourcemapped_properly_in_the_redbox | Change | |
---|---|---|---|
0.pack gzip | 2.04 MB | 2.04 MB | |
index.pack gzip | 146 kB | 146 kB | N/A |
Overall change | 2.04 MB | 2.04 MB |
Diff details
Diff for page.js
Diff too large to display
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
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
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 server.runtime.prod.js
Diff too large to display
4114257
to
d39afc7
Compare
061f55a
to
5e4ae87
Compare
d39afc7
to
7da9f3c
Compare
5e4ae87
to
98fdca8
Compare
652fc2c
to
f8ee886
Compare
501b107
to
1c69ecd
Compare
4b21ffe
to
991d29c
Compare
0bb2e1b
to
f031649
Compare
18c98bc
to
9e6d906
Compare
9e6d906
to
367992f
Compare
367992f
to
f11c84f
Compare
This approach is way too flaky due to how flaky our response codes are (due to HMR?) in dev. We're switching |
We now check that every
assertHasRedbox
is not accompanied by any 500 errors in the console. While the error message is generic, all of them are caused by a failure to sourcemap in the dev middleware.The assertion still passes when the
fixmeStackFramesHaveBrokenSourcemaps
option is passed e.g.assertHasRedbox(browser, { fixmeStackFramesHaveBrokenSourcemaps: true })
. This helps us track these bugs since they may have different causes.TODO:
fixmeStackFramesHaveBrokenSourcemaps: true
if it can be replaced withpageResponseCode: 500