-
Notifications
You must be signed in to change notification settings - Fork 26.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
Update Terser to v5.10.0, fix minification issues #33045
Conversation
@huozhi @ijjk @shuding @timneutkens Just wanted to point out that the issue is still valid. Some more context: Terser 5.7.1 flips a boolean condition under certain circumstances, which in my case caused a serious bug that was almost impossible to detect. This behaviour has been fixed in Terser (terser/terser#1045) and we could easily reap the benefits by bumping the version, which my PR does. I currently have to use experimental swc minification, which could have different shortcomings. |
Stats from current PRDefault Build (Increase detected
|
vercel/next.js canary | dlindenkreuz/next.js bump-terser | Change | |
---|---|---|---|
buildDuration | 19.3s | 19.1s | -176ms |
buildDurationCached | 7.7s | 7.5s | -179ms |
nodeModulesSize | 359 MB | 359 MB |
Page Load Tests Overall decrease ⚠️
vercel/next.js canary | dlindenkreuz/next.js bump-terser | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 3.659 | 3.614 | -0.04 |
/ avg req/sec | 683.22 | 691.75 | +8.53 |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.998 | 2.014 | |
/error-in-render avg req/sec | 1251.5 | 1241.02 |
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary | dlindenkreuz/next.js bump-terser | Change | |
---|---|---|---|
450.HASH.js gzip | 179 B | 179 B | ✓ |
framework-HASH.js gzip | 42.2 kB | 42.2 kB | |
main-HASH.js gzip | 27.3 kB | 27.4 kB | |
webpack-HASH.js gzip | 1.44 kB | 1.44 kB | ✓ |
Overall change | 71.2 kB | 71.2 kB |
Legacy Client Bundles (polyfills)
vercel/next.js canary | dlindenkreuz/next.js bump-terser | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages Overall decrease ✓
vercel/next.js canary | dlindenkreuz/next.js bump-terser | Change | |
---|---|---|---|
_app-HASH.js gzip | 1.37 kB | 1.36 kB | -2 B |
_error-HASH.js gzip | 194 B | 194 B | ✓ |
amp-HASH.js gzip | 312 B | 312 B | ✓ |
css-HASH.js gzip | 326 B | 326 B | ✓ |
dynamic-HASH.js gzip | 2.37 kB | 2.37 kB | ✓ |
head-HASH.js gzip | 350 B | 350 B | ✓ |
hooks-HASH.js gzip | 919 B | 919 B | ✓ |
image-HASH.js gzip | 4.94 kB | 4.94 kB | ✓ |
index-HASH.js gzip | 263 B | 263 B | ✓ |
link-HASH.js gzip | 2.19 kB | 2.19 kB | ✓ |
routerDirect..HASH.js gzip | 321 B | 321 B | ✓ |
script-HASH.js gzip | 383 B | 383 B | ✓ |
withRouter-HASH.js gzip | 318 B | 318 B | ✓ |
85e02e95b279..7e3.css gzip | 107 B | 107 B | ✓ |
Overall change | 14.3 kB | 14.3 kB | -2 B |
Client Build Manifests
vercel/next.js canary | dlindenkreuz/next.js bump-terser | Change | |
---|---|---|---|
_buildManifest.js gzip | 459 B | 459 B | ✓ |
Overall change | 459 B | 459 B | ✓ |
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary | dlindenkreuz/next.js bump-terser | Change | |
---|---|---|---|
index.html gzip | 530 B | 532 B | |
link.html gzip | 545 B | 546 B | |
withRouter.html gzip | 526 B | 527 B | |
Overall change | 1.6 kB | 1.6 kB |
Default Build with SWC (Increase detected ⚠️ )
General Overall increase ⚠️
vercel/next.js canary | dlindenkreuz/next.js bump-terser | Change | |
---|---|---|---|
buildDuration | 23.9s | 23.8s | -71ms |
buildDurationCached | 7.8s | 7.4s | -406ms |
nodeModulesSize | 359 MB | 359 MB |
Page Load Tests Overall increase ✓
vercel/next.js canary | dlindenkreuz/next.js bump-terser | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 3.63 | 3.592 | -0.04 |
/ avg req/sec | 688.71 | 696.06 | +7.35 |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 2.052 | 2.018 | -0.03 |
/error-in-render avg req/sec | 1218.5 | 1238.55 | +20.05 |
Client Bundles (main, webpack, commons)
vercel/next.js canary | dlindenkreuz/next.js bump-terser | Change | |
---|---|---|---|
450.HASH.js gzip | 179 B | 179 B | ✓ |
framework-HASH.js gzip | 42.3 kB | 42.3 kB | ✓ |
main-HASH.js gzip | 27.4 kB | 27.4 kB | ✓ |
webpack-HASH.js gzip | 1.44 kB | 1.44 kB | ✓ |
Overall change | 71.3 kB | 71.3 kB | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | dlindenkreuz/next.js bump-terser | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | dlindenkreuz/next.js bump-terser | Change | |
---|---|---|---|
_app-HASH.js gzip | 1.35 kB | 1.35 kB | ✓ |
_error-HASH.js gzip | 180 B | 180 B | ✓ |
amp-HASH.js gzip | 305 B | 305 B | ✓ |
css-HASH.js gzip | 321 B | 321 B | ✓ |
dynamic-HASH.js gzip | 2.36 kB | 2.36 kB | ✓ |
head-HASH.js gzip | 342 B | 342 B | ✓ |
hooks-HASH.js gzip | 911 B | 911 B | ✓ |
image-HASH.js gzip | 4.97 kB | 4.97 kB | ✓ |
index-HASH.js gzip | 256 B | 256 B | ✓ |
link-HASH.js gzip | 2.21 kB | 2.21 kB | ✓ |
routerDirect..HASH.js gzip | 314 B | 314 B | ✓ |
script-HASH.js gzip | 375 B | 375 B | ✓ |
withRouter-HASH.js gzip | 309 B | 309 B | ✓ |
85e02e95b279..7e3.css gzip | 107 B | 107 B | ✓ |
Overall change | 14.3 kB | 14.3 kB | ✓ |
Client Build Manifests
vercel/next.js canary | dlindenkreuz/next.js bump-terser | Change | |
---|---|---|---|
_buildManifest.js gzip | 459 B | 459 B | ✓ |
Overall change | 459 B | 459 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | dlindenkreuz/next.js bump-terser | Change | |
---|---|---|---|
index.html gzip | 532 B | 532 B | ✓ |
link.html gzip | 546 B | 546 B | ✓ |
withRouter.html gzip | 527 B | 527 B | ✓ |
Overall change | 1.6 kB | 1.6 kB | ✓ |
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!
Bumping Terser from v5.7.1 to v5.10.0 fixes some minification issues: - I specifically encountered this bug, where a boolean condition was flipped when a nullish coalescing operator was involved: terser/terser#1045 - See [Terser's changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md) for more fixes ## Bug - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Errors have helpful link attached, see `contributing.md` ## Feature - [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR. - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Documentation added - [ ] Telemetry added. In case of a feature if it's used or not. - [ ] Errors have helpful link attached, see `contributing.md` ## Documentation / Examples - [x] Make sure the linting passes by running `yarn lint`
Bumping Terser from v5.7.1 to v5.10.0 fixes some minification issues:
Bug
fixes #number
contributing.md
Feature
fixes #number
contributing.md
Documentation / Examples
yarn lint