NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #951 most downloaded on npm
JavaScript parser, mangler/compressor and beautifier toolkit
Last release 2 years ago
no release in 18 months
Ships unpredictably
gaps range from 2 weeks to 1.6 years
Some releases are documented
notes for 35 of the last 60 stable releases
17 versions withdrawn
withdrawn after publishing
16 years old
288 releases · first in 2011
improve compression of logical expressions ( c7152b5 , cd0a8ec )
One column per quarter.
simplify nullish comparison of complex expressions
eliminate side-effect-free property access ( 9c80456 , 95d3ede , 205a1d1 , 124c4d3 )
hoist_vars efficiency (ce8ef52)__proto__ accessor (87c9edb)class field (2c73103, 0a33da4)delete operator (b6b0658)function call (dc7aa32, 722465b)try statement (8dc99fa, 787dfbe)convert const to let when possible
const to let when possible (21aff99)let and var declarations (e5cbd3e)enableHighAccuracy & maximumAge DOM properties (aa7c338)function declaration in ES6+ (e7b9b4a)async generator function (404794f)await operator (0991077)BigInt literal (2b1c321)class field (f40dbd6, 1d400f1)class literal (548f093)function call (e37a148, a437a61)if statement (358faaa)instanceof operator (8d28052)let statement (0cbd5ea)switch statement (34b6143)var statement (2352909)simplify chained boolean & string expressions ( a391897 , ed7051b )
improve precision of escape analysis ( d6d2f5c , 10bc86b )
--mangle-props (9eea3a6, 4653e8a, 5ac6ec5)glob patterns for --in-situ (535212c)arguments object (5b5f6e3)async function (15b608f)class method (001f6f9)export statement (9cdc1ef)return statement (887e086)throw statement (4e4a2f8)var statement (887e086, 4db8106)merge common tail of if statements
if statements (996836b)Object() wrappers (db6fd6d)return statements (08c386f, ab5c7e6, 6667440, e39f33e, 64e3cee, 8076d66, 884842c, a9d9af5)builtin mangling (8a07f12)--expression for ease of handling bookmarklets or JSON expressions (f451a7a)improve elimination of return statements (0207b46d70caeecf332572ed69c0791bcfd733ae, c8d98f4787f402c283cb1b3a31d7ce325d209281)
return statements (0207b46d70caeecf332572ed69c0791bcfd733ae, c8d98f4787f402c283cb1b3a31d7ce325d209281)if statements (d89f0965aac64aa6b3a08c10950ae8eba486b29e, 3dcf098468e08e9809079e1d9b5c68ac7e2ea980, 902292f776d4223e3b603729813e201328dd1b49, b92a89f32573e5dea946957b307769202099f8de)import & export of non-ECMAScript identifiers (d67daa8314c9ce9ab9df6fd810f2cd0a2909c1ed)export statement (b2bc2e1173152c48096c032eb16921bfcbfae33e)import() (0b808f6428d53f4d4baa65b824aafc763d4160e2)import.meta (0b808f6428d53f4d4baa65b824aafc763d4160e2)import statement (b2bc2e1173152c48096c032eb16921bfcbfae33e)improve elimination of return statements (9f579205665c3154fa3748b069fc7a635fbb1a70, 8b464331ba3884a3ea1b7e2a5343ac5e292f0aa6, fcc87edb71901651ebc90c9e
return statements (9f579205665c3154fa3748b069fc7a635fbb1a70, 8b464331ba3884a3ea1b7e2a5343ac5e292f0aa6, fcc87edb71901651ebc90c9e6542514a118aadb4)async generator functions (51deeff72ea538fbe93db1bb88ac55bfb979b771)async function (e1b03d0235c207a40c35d27d94bda372a253efd1)async generator function (f1b3e9df1e4d009a653ae26f1ba51809f3364c95)class field (2426657daa226d5cdab18bf40a668301dff0aa65)function literal (4c227cc6bd795278c085a6b6dfd40a960ec35698)support top-level await via --module (d2bd0d1c1c0ca5d837aeec5f7253a84bc8f333e2, 0c7b016fa780725c3ef7ae6ed157afe6b5a90f07)
await via --module (d2bd0d1c1c0ca5d837aeec5f7253a84bc8f333e2, 0c7b016fa780725c3ef7ae6ed157afe6b5a90f07)class static initialization block (88b4283200fedeb436d34e2be1d72c9eb99408d5, 00665766daeddeee78b1c904b3634679a2305ccc, 4382bfe848f36165459b59ddcb605976c0055187)in & instanceof expressions via unsafe_comps (5d695452991ff356f2886035ebb5fe1d342aa749)class & function (b6f250f5c96be2143df0091a967e84c3af5b45ba)__proto__ accessor (123f9cf9878a8f4533a5cf2b95bd01dd2c8120a0)await operator (be53c4838b407d3edd61be11ba5f7af3d843f97b)class literal (25017978e79fa3080b247d4af4107f6068385557, 053cb27fe33ef6fed6c2d109f6602a2434fac3f1)instanceof operator (139fad0c0577218cdf48a554249002534940b8e1)improve handling of input with mixed sloppy/strict modes (e31bbe329a55adbdd37a953597e297c0da279f07, 2152f00de213f56c5c3e92ff6b0c74c2e1f21726)
async function (27aa85f84bc634430d76f54b9acedbb0b5c3ea57, 3c9e1693d555ac858ead6ed6966d186d8816a3c5)class literal (c2ca7b76595cffc453ce840df515f2064edbdca5, ad3a331ca3ebb27724e56b30caff5e9dd1af7675)export statement (fc6a66836ad1b59dc0c109a3414320b66075b8bf)return statement (94aae05d4503aea1284905058e31451db76ecebd, 3c9e1693d555ac858ead6ed6966d186d8816a3c5)assignment operator (a0c0c294c5c85ada60252c74298e8780d9feb135, 89a35f9fcd3587ee52417458326e2ae398708008)
arguments object (5ebfa78f5610774e393631eea4d11d76d32710cb)try statement (20252c6483ae8a0c404250dbe8b07713002fae57)ensure keep_fnames on function literals assigned to variables
keep_fnames on function literals assigned to variables (8922f08fbf9719393d999eb148247f8968dc66af)class literal (a8e040b133a642a461ea5043b3b489daad1a79be, c624b437394e0ba909a6cd9c3c4066bdd0240a30)for...in loop (01b84074d73a855c374e6ef66f9ce376c61e0e1c)function literal (998c9792dab292545162cd33d79e27aafe35f6c2)var statement (fb5e08e4ec58c227161214f8836191009786f5cd, 21bd4c4a9dfd230ebbf37d646a59e1ee826ddd96)yield keyword (5e30f3a48b2b79c03a32369868447813fe1fddce)var statement (042c228c7b3b8c4de79be348747f3665d1bdcec6, 12a6728c4ea72d9caebafc73ff552552ba6f1b54)
compress efficiency (fdbbef29916f50ba8b98a4b85159e5f100512d8b)arguments object (104d385ba9a9a24715e8cbe47d76ab71e8532799)eval() function (e2b00814a8b23ce9c03260b8a99817593bdd30d0)var statement (042c228c7b3b8c4de79be348747f3665d1bdcec6, 12a6728c4ea72d9caebafc73ff552552ba6f1b54)generalise optimisation on conditional branches (6d0bb58d686150708b2e4f3f60e814cf0b5c8e3b, a14555a39e7074b2161b183fe890a0449da8a064, d5afe16bc8feafa3f
compress efficiency (b6c72c84d40bb4bb9239563fda7e8e9dff1fe1a1)mangle entropy (a7d06167a0fae22dc8a54ade71eb8fd6c7dabbc6)return from discarded calls (dd3b81dec669dd316cfbd7b429d92d49a1d03474)class literal (316245ee12ec73427b5cd9dc9125acbf22b87fb3)function call (313e4974a4a58750c06ad990dfd3e0eeabaf6c5c)function literal (63b92ead4e154b9dc5c42208b64bdbf8f4ac1a32)speed up max_line_len & preserve_line
max_line_len & preserve_line (371d25944d77e783ebd9a2bb1cd374ab528ebcac)return chains (d7eb80b050b9d8c9d4c5067b537d80c6f2a03167, aad5d6e122e490b81fbea67c239e8a4af94dd0ba)arguments object (77552d9e6972ece5340db06e6a2501a343702f85)class literal (e7d6dd2ea24c1566ae3c79f67d74065ae11bbd7c)function literal (3693bde2dde9cbe0aaa7d7e914ee506ded977705)var statement (8ceb4b0492b1ba99cb43f77d3791ddb7a2131dc5, fa30960b8b9b0a10a10cf562bdc304892e26b22f)improve compress performance (7fe7c39a0124cab7efddae50056c86d2c1846410, 509896a41022dbc76cc75b985ce0ec35702279ef)
compress performance (7fe7c39a0124cab7efddae50056c86d2c1846410, 509896a41022dbc76cc75b985ce0ec35702279ef)mangle (2f568b93577461078920b7f7aa00979af9b41617)import statements (9a58270b70a2cf575cdb74aaa6e9a0a899644e4d)--keep-fargs (e24b2553508d70386924532f18dfeb35de4aef08, 866cd4a975baaf761b5f9a156b2f1cabf7b62d68)async function (d96c59f9e66761e7cb30af3aa4893548817a4235)await operator (b636e97e3bafdcaa1ee322a0ab583b19a847934d)class literal (e9d9d5a9d2ca9bbd339a3dbf4c8e88ab2caa824d, 87e8aca2455625098a2cd1b896c4e9a452e40b0e)new operator (86406e71ec93f3f0c44b5d47b261177fbfe43047)typeof operator (f639a30bd2410d1d40f63f5ca0080eb2ba5fe84d, 35d7f316ef964bd85872ed2e1002d53b1de25e94)var statement (58bea676acfccd1d88206656fb370acc9caf113f)improve general performance (b0799105c224926da5ca0b6a6dfa18270e83afd0, 033d8d9405c82d18c221daae9049874f8924d9a2, bc27966a196ecb91f33a53a11497bdf2d85eb
improve compression of logical assignments
enums (3acb5a329e47b753248a3568c24794140ccf50a0, 6e4aa0326f543c12998ba603942f0c3fbbae1910, 77f7ae5ba2449c38751c444263106603edb587ef)merge_vars (3ee1b0d00d9b0d0e2f39ed33fb7e2b5a69a53f53, ea1049890245d0f8b671640038d38a03ca7ef078, 1a8f2ecc65896fcbbe8c6b884352f975af444ea0, 0b6c185818fa77fff0661ef959e5c0bdf8b5100f, 1b4bd7082b3479c07bcae2dc7bc3b00d41b2206f, 3f8f0e246e3cb715901f46b63042e4e1ae04723e)await operator (ae5c3ee8a1cd5edc5dba1178853996e3419ad30d)function call (2d0f8bcff5ea7a3af615762bfda7dd590041e451)yield keyword (ae5c3ee8a1cd5edc5dba1178853996e3419ad30d)eliminate extraneous label on loops
await operator (eb93d923574d4059bfabe812e2b1c95f2b347b35, a841d45bc3acaa10b2b8ca3922227403928bcc6f)class literal (c8b0f685ee62fe4920b2b4bdaa0d6c17c8a4e18f)function call (87b99162fb124bb2a12a3a5babbce27096977d14)let keyword (25801627bec230f9b1ebead3ae18d14808f3c96e)improve function inlining heuristic
arguments object (fdcc6d3a9c74f55b21ceb59953ee90369d3e5e13)function literal (c3aef2361458941a36d217cb3181ade3b777a37e)try statement (02eb8baa1c6c6f1e79a6e01dfe1e3bd68937eedd)### Bug Fixes - assignment operator (6a3fe9d1dfd3ec4543dc71b72e990bed2c6022ef) - destructuring syntax (9b82f9be9129c98bc02614d15abf957b35778745) - fun
function literal (657d525c80e611df9a78812e4b6a35a3eb24d8f4)improve escape analysis on lambda expression (798121c9f3e41df9389af3e5e1d1e7f96dd528d3, 972b9f0bef90844a522f777610e88bf113309025, f4ae2679202ff9d8edd6
beautify of loop statements (668f96623c745a4255766fe5595f1a95052afb77)keep_quoted_props over numeric keys (65adeba55da7eb39daaa21044523141490effd6f)class literal (0668fad5e9000fc8d4857f033c3e90b1cedb4563, 902997b73dd0a6f3a8ada67f5e8bbfed000f5282)for await...of loop (64ebf6efe939f9ea6a7b5bae8762460fdcc39ad7)if statement (611abff49f8c5aa158b0bd43c4af3ef79a875905)finer pruning of switch branch (498ac8354188fac04d688882b58bab63993a343f, bf76e357723daa4fc00004a10b2b3de82a2bf33e, 21fc8f4630bccdb8b0a33747c2de8fd377
switch branch (498ac8354188fac04d688882b58bab63993a343f, bf76e357723daa4fc00004a10b2b3de82a2bf33e, 21fc8f4630bccdb8b0a33747c2de8fd377e83138, 7880568d157fcd1c15c0f392e4646e01de363afd)var bug (82772ccb12cfef97480fa8021032a53f90cd1f45)await operator (6fc7a2ab6a9523a8da1962ba8701bd28f11e417c, e9c902b0449a291469ddaee04dc745cf4706560d)class literal (ce754776706dd6b5ab77e99770ddf05d45faad76, e368d3971588c78413a91d89c23356d2f511c723)function literal (7cbcd114402188d09267d3537894e611d2f13f9a, 1a064b6e741f9c3e98f4e2de8084c48f324c0318, 7621527a5f6a2bef8be44714729a082d4691d2d5)import statement (f8b2215145819ed104ba0be0fd5a6f951c91ef8a)yield keyword (e9c902b0449a291469ddaee04dc745cf4706560d)enhance elision of await operator (ab42a90edb0316d7c5ed1a74b4a7f9167789ce4d, d320a6cde2ef6436874f4f3790c790d65ed0c966, 55a230daa84a004058d8cde0e15543b
await operator (ab42a90edb0316d7c5ed1a74b4a7f9167789ce4d, d320a6cde2ef6436874f4f3790c790d65ed0c966, 55a230daa84a004058d8cde0e15543bb2647dc3c)async function (8cd95dd2635189b27d1956796d917549e2179bf5, d40631fd44165936158633cc81c4d62cc2a6a5a9)arguments object (e3798d9a76704498819cc380166d62f2c8a9ff36)class literal (8d23496e0fdf40f74273e7158417ff992006fe69, b9d5bba5fb8e70c10f25f56ff6e7228739461cfb)get syntax (7fa1dea9d032c1ed282f84507e79cee57294945d)class field (83f7887e5d2eb58b3fdbfc1d0d7dd92ce972a105)improve compression on tagged template literal
class property (5d4e6e3bdc4b37d9430470f6d794bec87a467ba3)arguments object (de376c3d3316fc4a33a876793eb4d693422415a0, df47632eccdc505810073d7bfced21bbf8c2dd98)function scope (eb08fed120ad1d2dcd41a2ae03cec3d3b2885c7b)class property (d2a45ba441ed6975021b3524215c01a011dfb46a)class field (eff45eac0ee284a113d1b587263fcef8e397daa3)throw statement (d6152e6a76908223cace651898e12a3b3c9a445d)improve elimination of unused variables
__proto__ accessor (e13615549ef15954fa7317a504652b82cbb93c1c)support optional chaining operator (f0de9a8b5d577221d3180c9e135d5cbda8a337c3, ce3c35fa8b4c8e9a777d19220915880cdd45f3fb)
__proto__ accessor (d833e66d23cab3c9c03a99a9cf118647bf862868, 8e4a19ffec0506c25aebb05e2c84ec32ff307642, df980db4a887bf6d48d872d8dd61713dc42f7842, 8bbfaacdae0b63987652766b9f3a327ff6d06231, ac1f7d689b7dbd6311a6e8eaa633072db9d9703c)drop unused self-referencing class & function
class & function (bddb5a01026e8295f9271f7d787e70937acba9d8)Map, Set, WeakMap & WeakSet (f46209b7e5ecb33d9596fb946975be5f65c0b727)__PURE__ in ESTree translation (d576495e5a696302340580e999bc0446a1d4c1ca)export statement (80efaa2f331b2c3f3ec35218d1086830a39bec93)for [await]...of loop (acf951a5bc9d79dc2614d880758e3e7f79f975ae)function parameter (a1a212f6393f690180a606c0610a4ca9279522ad)yield keyword (a2b1b96752c5f898539f8e28431461428c4c7731)improve compression on class definition
class definition (aed758ed5cc4ac180c92551ba80f4997f81d1dc4)class field and method (10fbf8e295d6062fbaefe1b716878b95051dce2a)class literal (1947a21824f3cbbb7a3c8267a15fa9c80b91fc59)for loop (a37ca558dd8d7f5243e061e216287793b9108911)import.meta (cf38b52afaa0bd69d4b9e5f43c4d2ee87b65297b)try statement (ca49f6f41a4b515b60a4b5784ae650b1b6cf0322)support logical assignment operator (f9055df44d86c8537afc34f00bd255792f80422f, e7be38b42ab8e18d003589f793c8388e072ba429, 40ef074cb30e0b0114466406f6b9d
function literal (39df3a16802a9cabd5642f85f3aeff76f8b4201d)class field (03c5ecb2e3d17e5919c1ca997f76900f1fa5b4dc)support exponentiation assignment operator
__PURE__ through new annotations option (3b5d5014e09f0158a46e1729f36b5cdf7e7fd0ee)class names via keep_fnames (997d09bb33f95cf414235b8fc3d3b0539d33d2a2)beautify (7d595e2eac14022a66ad501707f3e820b87a617d)import/export { foo as foo }; :arrow_right: import/export { foo }; (241113200e8ad3550efc051b2b7f4d7c9a4573e9)var f = async function*() { ... }; :arrow_right: async function* f() { ... } (b244b4ec21fdb65870068879f02e5471ab371d1d)arguments object (9faee3b66abe7bdfbf8152cec606432cc9ddf703)async function (c36c3cb47053fc83b984d3a37eb3036d6df26cbe)BigInt literal (3016a78d85025e435c55565e645835986db8c98f)delete operator (48c46fa9a72e480ddae721548fc2de929a7e925a, 2508481e33271cb9a402401eecd6a51b2701c265)export statement (6f3ab09319ec1aa4a8e489f83f6724add46bc19c, b872ffee019b73c433f9647e2b3c8169b5dd120a)new.target (352a944868b09c9ce3121a49d4a0bf0afe370a35, 2508481e33271cb9a402401eecd6a51b2701c265)super keyword (77c9116c91e8a758263ab68a7a7f720dcb7e0214)var statement (9a9543013c9d56cfc9593893fb9bfdff2aaa0307)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →