# What changed in terser

> 28 changes in terser 5 from its official release notes, upgrade guides and advisories: 2 breaking, 1 security, 7 new APIs and options. Each one cited. Sources checked 2026-10-19. HTML: https://unstale.sh/npm/terser/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## terser 5

### Breaking changes

- Terser no longer evaluates exponentiation of BigInt. (5.49.0) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5490)
- With property mangling enabled and keep_quoted set to strict, foo.bar and foo["bar"] are no longer considered equivalent. (5.46.2) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5462)

### Security

- Terser produces `void 0` instead of `undefined` because it is safer. (5.45.0) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5450)

### New APIs and options

- Experimental support for stripping TypeScript types is available. (5.50.0) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5500)
- The ResizeObserver box option is added to domprops, affecting how it is handled by property mangling. (5.49.0) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5490)
- Terser now supports import defer syntax. (5.48.0) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5480)
- Terser now supports import source syntax. (5.48.0) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5480)
- Adds the builtins_ecma option. (5.47.0) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5470)
- Adds the builtins_pure option. (5.47.0) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5470)
- Adds Intl options to domprops. (5.47.0) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5470)

### Performance

- Evaluation of method chains is no longer extremely slow or seemingly frozen. (5.46.1) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5461)

### Behavior and default changes

- Terser parses identifiers from newer Unicode versions and escapes them for older runtimes. (5.49.0) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5490)
- The unused option now deletes computed keys of concise methods and getters/setters. (5.46.2) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5462)
- Parentheses are removed from comma expressions in computed property access. (5.46.1) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5461)
- The domprops list now includes observedAttributes, affecting property mangling when using that list. (5.46.0) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5460)
- More domprops were added, mostly related to Temporal, affecting property mangling when using that list. (5.46.0) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5460)

### Fixes and other changes

- The fix for ambiguously scoped default args was rolled back due to issues without a clear reproduction. (5.51.2) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5512)
- Fixes transforming code in dynamic import arguments. (5.51.1) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5511)
- Functions that use argnames scope ambiguously are pinned (deoptimized), including when default arguments access other arguments or variables outside the function. (5.51.0) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5510)
- Fixes cases where the nullish coalescing operator is considered a boolean operator, causing booleans to be generated in its left side. (5.51.0) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5510)
- Fixed a crash when converting imports in the mozilla AST. (5.50.0) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5500)
- Fixed a crash related to dynamic import expressions. (5.49.2) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5492)
- Correctly parenthesizes tagged template strings when the tag is new something() so the emitted code is valid. (5.49.1) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5491)
- Fixes a crash when using mangle.keep_fnames with destructuring. (5.47.1) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5471)
- Error.cause is now included in the DOM properties list. (5.46.2) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5462)
- Extremely large floating-point number literals are parsed as `Infinity`. (5.46.1) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5461)
- Fixes bitwise optimization changing the result of && and ||. (5.44.1) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5441)
- Ensures var is extracted from a deleted default case. (5.44.1) — [release notes](https://github.com/terser/terser/blob/de65694f330398627d0a16522f3ab6d3ce48b94c/CHANGELOG.md#v5441)
