[devtools] Stop sending codeframes for ignored frames#90577
Conversation
Tests Passed |
Stats from current PR🔴 1 regression
📊 All Metrics📖 Metrics GlossaryDev Server Metrics:
Build Metrics:
Change Thresholds:
⚡ Dev Server
📦 Dev Server (Webpack) (Legacy)📦 Dev Server (Webpack)
⚡ Production Builds
📦 Production Builds (Webpack) (Legacy)📦 Production Builds (Webpack)
📦 Bundle SizesBundle Sizes⚡ TurbopackClient Main Bundles: **400 kB** → **400 kB** ✅ -2 B80 files with content-based hashes (individual files not comparable between builds) Server Middleware
Build DetailsBuild Manifests
📦 WebpackClient Main Bundles
Polyfills
Pages
Server Edge SSR
Middleware
Build DetailsBuild Manifests
Build Cache
🔄 Shared (bundler-independent)Runtimes
📝 Changed Files (7 files)Files with changes:
View diffsapp-page-exp..ntime.dev.jsfailed to diffapp-page-tur..ntime.dev.jsfailed to diffapp-page-tur..ntime.dev.jsfailed to diffapp-page.runtime.dev.jsfailed to diffapp-route-tu..time.prod.jsDiff too large to display app-route.ru..time.prod.jsDiff too large to display server.runtime.prod.jsDiff too large to display 📎 Tarball URL |
7a5ab90 to
4bcdc13
Compare
These are not used by the Redbox at the moment. As a follow-up, we'll only send the codeframe for the first non-ignored frame to save even more bandwidth. We'll add a dedicated endpoint to fetch codeframes on demand to allow switching codeframes.
4bcdc13 to
e344762
Compare
…or lazy codeframe evaluation Switch from Object.defineProperty to getter method syntax in: - middleware-turbopack.ts - middleware-webpack.ts - patch-error-inspect.ts This is slightly faster (1 fewer shape transition) per review feedback. Co-authored-by: Sebastian "Sebbie" Silbermann <silbermann.sebastian@gmail.com>
| : null, | ||
| }, | ||
| } | ||
| } catch (error) { |
There was a problem hiding this comment.
doesn't this mean that we try to compute it also when there is no stack frame? probably doesn't mattter but reads a little odd
(originalStackFrame?.ignored ?? true) ? null : stackFrame.originalCodeFrame
There was a problem hiding this comment.
same comment below for webpack
There was a problem hiding this comment.
Cursor immediately bent over to do it 😄 I wanted to avoid the additional optional chaining + nullish coalescing but also don't feel strongly enough about it to revert 🤷🏻
Use `(originalStackFrame?.ignored ?? true) ? null : ...` instead of `originalStackFrame?.ignored === false` for clearer semantics when there is no stack frame. Co-authored-by: Sebastian "Sebbie" Silbermann <silbermann.sebastian@gmail.com>
Codeframes for ignored stackframes are not used by the Redbox at the moment and impact performance of the sourcemapping request noticeably (the more ignore-listed frames, the worse).
In
test/development/app-dir/ssr-only-error/the sourcemapping request went down to 600ms from 1.8s for both Webpack and Turbopack. On larger stacks that may be even more noticably.I believe this should reduce flakiness of the
test/development/app-dir/ssr-only-error/ssr-only-error.test.tstest since we currently block the Redbox on the sourcemapping request (which I also want to change later).As a follow-up, we'll only send the codeframe for the first non-ignored frame to save even more I/O and CPU.
We'll add a dedicated endpoint to fetch codeframes on demand to allow switching codeframes for #88867