unstale

npm / terser

terser

What changed in terser 5, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-19.

2 breaking1 security7 new APIs and options1 performance5 behavior and defaults12 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli on npm

terser 528 changes

Breaking changes 2

  • Terser no longer evaluates exponentiation of BigInt.

    5.49.0release notes

  • With property mangling enabled and keep_quoted set to strict, foo.bar and foo["bar"] are no longer considered equivalent.

    5.46.2release notes

Security 1

  • Terser produces void 0 instead of undefined because it is safer.

    5.45.0release notes

New APIs and options 7

  • Experimental support for stripping TypeScript types is available.

    5.50.0release notes

  • The ResizeObserver box option is added to domprops, affecting how it is handled by property mangling.

    5.49.0release notes

  • Terser now supports import defer syntax.

    5.48.0release notes

  • Terser now supports import source syntax.

    5.48.0release notes

  • Adds the builtins_ecma option.

    5.47.0release notes

  • Adds the builtins_pure option.

    5.47.0release notes

  • Adds Intl options to domprops.

    5.47.0release notes

Performance 1

  • Evaluation of method chains is no longer extremely slow or seemingly frozen.

    5.46.1release notes

Behavior and default changes 5

  • Terser parses identifiers from newer Unicode versions and escapes them for older runtimes.

    5.49.0release notes

  • The unused option now deletes computed keys of concise methods and getters/setters.

    5.46.2release notes

  • Parentheses are removed from comma expressions in computed property access.

    5.46.1release notes

  • The domprops list now includes observedAttributes, affecting property mangling when using that list.

    5.46.0release notes

  • More domprops were added, mostly related to Temporal, affecting property mangling when using that list.

    5.46.0release notes

Fixes and other changes 12

  • The fix for ambiguously scoped default args was rolled back due to issues without a clear reproduction.

    5.51.2release notes

  • Fixes transforming code in dynamic import arguments.

    5.51.1release notes

  • Functions that use argnames scope ambiguously are pinned (deoptimized), including when default arguments access other arguments or variables outside the function.

    5.51.0release notes

  • Fixes cases where the nullish coalescing operator is considered a boolean operator, causing booleans to be generated in its left side.

    5.51.0release notes

  • Fixed a crash when converting imports in the mozilla AST.

    5.50.0release notes

  • Fixed a crash related to dynamic import expressions.

    5.49.2release notes

  • Correctly parenthesizes tagged template strings when the tag is new something() so the emitted code is valid.

    5.49.1release notes

  • Fixes a crash when using mangle.keep_fnames with destructuring.

    5.47.1release notes

  • Error.cause is now included in the DOM properties list.

    5.46.2release notes

  • Extremely large floating-point number literals are parsed as Infinity.

    5.46.1release notes

  • Fixes bitwise optimization changing the result of && and ||.

    5.44.1release notes

  • Ensures var is extracted from a deleted default case.

    5.44.1release notes