-
Notifications
You must be signed in to change notification settings - Fork 27.8k
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
Stop sourcemapping function names #74085
Stop sourcemapping function names #74085
Conversation
This stack of pull requests is managed by Graphite. Learn more about stacking. |
Tests Passed |
Stats from current PRDefault Build (Increase detected
|
vercel/next.js canary | vercel/next.js sebbie/12-18-stop_sourcemapping_function_names | Change | |
---|---|---|---|
buildDuration | 21.7s | 19.7s | N/A |
buildDurationCached | 18.6s | 16.4s | N/A |
nodeModulesSize | 416 MB | 416 MB | |
nextStartRea..uration (ms) | 536ms | 517ms | N/A |
Client Bundles (main, webpack)
vercel/next.js canary | vercel/next.js sebbie/12-18-stop_sourcemapping_function_names | 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 | 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 | 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 sebbie/12-18-stop_sourcemapping_function_names | 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/12-18-stop_sourcemapping_function_names | 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 sebbie/12-18-stop_sourcemapping_function_names | 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 sebbie/12-18-stop_sourcemapping_function_names | Change | |
---|---|---|---|
index.html gzip | 524 B | 524 B | ✓ |
link.html gzip | 539 B | 537 B | N/A |
withRouter.html gzip | 520 B | 521 B | N/A |
Overall change | 524 B | 524 B | ✓ |
Edge SSR bundle Size
vercel/next.js canary | vercel/next.js sebbie/12-18-stop_sourcemapping_function_names | Change | |
---|---|---|---|
edge-ssr.js gzip | 129 kB | 129 kB | N/A |
page.js gzip | 205 kB | 205 kB | N/A |
Overall change | 0 B | 0 B | ✓ |
Middleware size
vercel/next.js canary | vercel/next.js sebbie/12-18-stop_sourcemapping_function_names | Change | |
---|---|---|---|
middleware-b..fest.js gzip | 671 B | 667 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 sebbie/12-18-stop_sourcemapping_function_names | 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 | 356 kB | 356 kB | ✓ |
app-page-exp..prod.js gzip | 129 kB | 129 kB | ✓ |
app-page-tur..prod.js gzip | 142 kB | 142 kB | ✓ |
app-page-tur..prod.js gzip | 137 kB | 137 kB | ✓ |
app-page.run...dev.js gzip | 347 kB | 347 kB | ✓ |
app-page.run..prod.js gzip | 125 kB | 125 kB | ✓ |
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.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 | N/A |
Overall change | 1.51 MB | 1.51 MB | ✓ |
build cache Overall increase ⚠️
vercel/next.js canary | vercel/next.js sebbie/12-18-stop_sourcemapping_function_names | Change | |
---|---|---|---|
0.pack gzip | 2.08 MB | 2.08 MB | |
index.pack gzip | 73.8 kB | 74 kB | |
Overall change | 2.15 MB | 2.16 MB |
Diff details
Diff for main-HASH.js
Diff too large to display
Diff for server.runtime.prod.js
Diff too large to display
ce7ffd2
to
5bff5d5
Compare
Sourcemaps will only give you the name mapping for a specific source position. However, stack traces will point to the actual callsite not the function declaration. So we always ask for the name mapping of the variable not the calling function. We can fix this in v8 by using `getEnclosingColumnNumber() - 1` but this is more involed. Since all the sourcemapping currently targets dev, we just stop sourcemapping assuming most function names are not mangled. That holds at least true for all product code.
5bff5d5
to
8e92870
Compare
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.
This a nice improvement overall, but showing eval
instead of the jsx element name does feel like a small regression.
Yeah, it was accidentally doing the nicer thing. Still wrong though. Just looked more pleasant. |
Sourcemaps will only give you the name mapping for a specific source position.
However, stack traces will point to the actual callsite not the function declaration.
So we always ask for the name mapping of the variable that we called not the name of the calling function.
We can fix this in v8 by using
callsite.getEnclosingColumnNumber() - 1
but this is more involved since we need to stash the callsites inError.prepareStacktrace
for later inspection.Since all the sourcemapping currently targets dev, we just stop sourcemapping functions names assuming most code is not mangled. That holds at least true for all product code.
Turbopack just used to work since it didn't include name mapping in sourcemaps in dev because it's unnecessary for unmangled code. Webpack always included name mapping even if it was 1:1 so that's why all of the discrepancies were observed in Webpack.