CHANGELOG-CORE.md
(es/minifier) Preserve for-init sequence order (#11837) (16a56d0)
(es/parser) Parse empty Flow exact object type (#11836) (3d18a26)
(deploy) Build package ts before Linux GNU binding tests (#11806) (a3d3ef3)
(es/flow) Fix Flow type-only modules in script transforms (#11817) (be38316)
(es/flow) Avoid restoring module context when flow syntax is enabled (#11819) (3ed7243)
(es/minifier) Preserve frozen spread registry keys (#11825) (347181c)
(es/parser) Align Flow generic arrow JSX disambiguation (#11821) (28a7fad)
(es/jsx) Preserve quoted JSX attribute newlines (#11796) (9fe56c8)
(es/minifier) Support full ES version parsing in minify (#11800) (af1f08f)
(es/module) Add opt-in symlink-preserving resolver (#11801) (6028240)
(es/parser) Allow return type annotation on Flow constructors (#11790) (d66b29c)
(es/parser) Support Flow anonymous keyof indexers (#11792) (452c4e5)
(es/parser) Add Flow strip RN and RNW regression corpus (#11799) (23a9109)
(es/decorators) Preserve super in moved static members (#11781) (778328e)
(es/decorators) Scope moved static super rewrite (#11782) (f73cacc)
(es/parser) Parse mixed Flow anonymous callable params (#11786) (05e7b69)
(es/minifier) Handle toExponential(undefined) (#11583) (cd94a31)
(es/minifier) Cap deep if_return conditional chains (#11758) (a92fa3e)
(es/minifier) Inline prop shorthand in computed props (#11760) (71feafb)
(es/regexp) Preserve source for wrapped named groups (#11757) (7e56fe5)
(html/codegen) Keep </p> for span-parent paragraphs (#11756) (ede9950)
(swc_common) Make eat_byte unsafe to prevent UTF-8 boundary violation (#11731) (669a659)
(es/minifier) Inline usage analyzer and remove crate (#11750) (7d8d11b)
(react-compiler) Remove compiler impl and keep fast_check (#11753) (f21d336)
(es/decorators) Scope 2023-11 implicit-global rewrite to decorator-lifted exprs (#11743) (1c01bbb)
(es/parser) Parse key Flow forms from #11729 (phase 1) (#11733) (886fe53)
(es/parser) Close remaining Flow parser gaps for #11729 (phase 2) (#11740) (8d36f05)
(es/minifier) Remove useless arguments for non inlined callee (#11645) (bab249e)
(react-compiler) Advance SWC parity for upstream fixtures (#11724) (468da70)
(react-compiler) Tighten core validation parity for upstream fixtures (#11734) (7e2cf8d)
(react-compiler) Improve SWC parity for early-return and hooks validation (#11738) (4739c58)
(react-compiler) M1 memo validators + lint gating alignment (#11739) (7e1ad26)
(react-compiler) Improve Stage A diagnostic parity and validation aggregation (#11745) (0e2075e)
(react-compiler) Continue swc parity for dependency handling (#11747) (83688c8)
(cli) Honor externalHelpers=false in rust binary (#11693) (1be052e)
(cli) Skip mkdir when --out-file targets the current directory (#11720) (f3f4e51)
(es/decorators) Resolve 2022-03 issues #9565/#9078/#9079 and add regressions (#11698) (a025d2b)
(es/flow) Normalize module await bindings for Hermes parity (#11703) (73d8761)
(es/minifier) Fix compatibility for Wasm plugin (swc_ast_unknown) (#11641) (abd0e45)
(es/module) Avoid rewriting unknown relative extensions (#11713) (ed09218)
(es/regexp) Implement transform-named-capturing-groups-regex (#11642) (f62bfa9)
Update lz4_flex to resolve RUSTSEC-2026-0041 (#11701) (7528507)
(agents) Add AGENTS two-pass rules for es crates (#11634) (12af4a1)
Clarify workaround comment requirement in AGENTS (#11700) (e2ad6f6)
(bindings) Enable flow strip support in @swc/core (#11696) (93da89a)
(cli) Enable Flow strip support in swc_cli_impl (#11705) (0ea9950)
(dbg-swc) Add flow strip verification command (#11706) (77b7854)
(es) Add 2-pass transformer and minifier crates (#11632) (f70a4b7)
(es) Add TypeScript + React transforms and tsc corpus tests (#11635) (09a5d8d)
(es/helpers) Prevent recursive instanceof helper transforms (#11609) (cb755a3)
(es/parser) Add with_capacity for Capturing (#11679) (60df582)
(es/parser) Add flow syntax mode and strip integration (#11685) (015bbe8)
(es/parser) Finish flow strip support for core syntax gaps (#11689) (584a12f)
(es/parser) Extend flow declare export strip compatibility (#11691) (a8315aa)
(es/parser) Support Flow declare export default interface strip path (#11692) (588577c)
(es/parser) Add Hermes Flow parity harness and fixes (#11699) (918b6ac)
(es/parser) Complete Hermes Flow stripping parity (#11702) (f041f4c)
(es/proposal) Add decorators 2023-11 support (#11686) (e96eb6a)
(es/react-compiler) Scaffold SWC port of Babel entrypoint (#11687) (4a1d3ce)
(es/react-compiler) Phase1 crate API baseline and fixture harness (#11690) (31364dc)
(es/react-compiler) Strict upstream parity finalization (crate-only, WIP) (#11697) (a3994aa)
(es/react-compiler) Advance strict upstream parity (#11709) (9b3abe0)
(es/react-compiler) Advance upstream fixture parity pipeline (#11716) (33fe6f2)
(es/semantics) Add scope analysis and statement-level cfg (#11623) (86815b1)
(es_parser) Complete parity suite with zero ignores (#11615) (ee3fdd5)
(es_parser) Complete internal parser wiring without ecma runtime dep (#11622) (1c51891)
(react-compiler) Advance SWC upstream fixture parity (#11718) (e8d1696)
(swc_es_parser) Enforce full parity suite and extend grammar surface (#11611) (585f7d0)
(swc_es_parser) Complete lossless modeling for with/TS module/decorators (#11613) (59b1189)
(swc_es_parser) Close parity gaps with full core/large fixture pass-fail parity (#11614) (3085f52)
(es/modules) Avoid export sort key clones (#11669) (e74e17d)
(es/parser) Reduce JSX identifier rescan allocations (#11671) (f9214fe)
(es/parser) Optimize underscore stripping in numeric literal hot path (#11670) (874338b)
(es/transformer) Remove O(n^2) statement mutation hotspots (#11672) (bdc24b7)
(es_parser) Byte-search lexer optimization pass (#11616) (607f2db)
(es_parser) Reduce lookahead and allocation overhead (#11673) (becd9b0)
(ts/fast-strip) Avoid token capture in default transform path (#11668) (06aa0db)
(es/flow) Add flow strip corpus correctness test (#11694) (cd5ed81)
(es/parser) Enforce full ecma fixture parity (#11637) (0bf8a46)
(es/parser) Expand flow strip fixture coverage (#11695) (e231262)
(es_parser) De-arenaize ecma_reuse fixture snapshots (#11639) (aa6727a)
(es_parser) Recover swc_es_parser benchmark coverage (#11640) (0f24ee1)
Expand swc_es_parser snapshot suites (ecma-style) (#11621) (325170f)
(es/module) Preserve explicit index.js import path when baseUrl is set (#11597) (830dbeb)
(html/wasm) Publish @swc/html-wasm for nodejs (#11601) (bd443f5)
Add typescript-eslint AST compatibility note (#11598) (c7bfebe)
Move parser design guidance into AGENTS.md (#11600) (e6e91a3)
(bindings) Add linux ppc64le and s390x support across npm bindings (#11602) (357255d)
(es/ast) Add runtime arena crate and bootstrap swc_es_ast (#11588) (7a06d96)
(agents) Clarify sandbox escalation for progress (#11574) (cb31d0d)
Add submodule update step before test runs (#11576) (81b22c3)
(bindings) Add html wasm binding and publish wiring (#11587) (b3869c3)
(sourcemap) Support safe scopes round-trip metadata (#11581) (de2a348)
cva ecosystem ci temporariliy (55bc966)(errors) Avoid panic on invalid diagnostic spans (#11561) (b24b8e0)
(es/helpers) Fix _object_without_properties crash on primitive values (#11571) (4f35904)
(es/minifier) Preserve array join("") nullish semantics (#11558) (d477f61)
(es/minifier) Inline side-effect-free default params (#11564) (1babda7)
(es/react) Preserve first-line leading whitespace with entities (#11568) (fc62617)
(es/regexp) Transpile unicode property escapes in RegExp constructor (#11554) (476d544)
(es/jsx) Preserve whitespace before HTML entities (#11521) (64be077)
(es/minifier) Do not merge if statements with different local variable values (#11518) (3e63627)
(es/minifier) Prevent convert_tpl_to_str when there's emoji under es5 (#11529) (ff6cf88)
(es/parser) Fix generic arrow function in TSX mode (#11549) (366a16b)
(es/minifier) Add unsafe_hoist_static_method_alias option (#11493) (6e7dbe2)
(es/minifier) Remove unused args for IIFE (#11536) (3cc286b)
(es/parser) Compare token kind rather than strings (#11531) (5872ffa)
(es/typescript) Run typescript transform in two passes (#11532) (b069558)
(es/typescript) Precompute namespace import-equals usage in semantic pass (#11534) (b7e87c7)
(es/codegen) Emit leading comments for JSX elements, fragments, and empty expressions (#11488) (1520633)
(es/decorators) Invoke addInitializer callbacks for decorated fields (#11495) (11cfe4d)
(es/es3) Visit export decl body even if name is not reserved (#11473) (9113fff)
(es/minifier) Treat new expression with empty class as side-effect free (#11455) (a33a45e)
(es/minifier) Escape control characters when converting strings to template literals (#11464) (028551f)
(es/minifier) Handle unused parameters with default values (#11494) (6ed1ee9)
(es/module) Preserve ./ prefix for hidden directory imports (#11489) (a005391)
(es/parser) Validate dynamic import argument count (#11462) (2f67591)
(es/parser) Allow compilation with --no-default-features (#11460) (b70c5f8)
(es/parser) Skip emitting TS1102 in TypeScript mode (#11463) (e6f5b06)
(es/parser) Reject ambiguous generic arrow functions in TSX mode (#11491) (ac00915)
(es/parser) Disallow NumericLiteralSeparator with BigInts (#11510) (6b3644b)
(es/react) Preserve HTML entity-encoded whitespace in JSX (#11474) (7d433a9)
(es/renamer) Prevent duplicate parameter names with destructuring patterns (#11456) (e25a2c8)
(es/testing) Skip update when expected output has invalid code (#11469) (2be6b8a)
(es/typescript) Don't mark enums with opaque members as pure (#11452) (b713fae)
(preset-env) Distinguish unknown browser vs empty config (#11457) (1310957)
(cli) Add --root-mode argument for .swcrc resolution (#11501) (b53a0e2)
(es/module) Make module transforms optional via module feature (#11509) (b94a178)
(es/regexp) Implement unicode property escape transpilation (#11472) (a2e0ba0)
(es/transformer) Merge ES3 hooks into swc_ecma_transformer (#11503) (5efcac9)
(bindings) Optimize string handling by avoiding unnecessary clones (#11490) (81daaaa)
(es/codegen) Make commit_pending_semi explicit in write_punct (#11492) (5a27fc0)
(es/es2015) Port ES2015 transforms to hook-based visitors (#11484) (a54eb0e)
(es/es3) Use hooks pattern for single AST traversal (#11483) (a139fba)
(es/minifier) Add test case for merge_imports order preservation (#11458) (b874a05)
(es/parser) Add error tests for import.source and import.defer with too many args (#11466) (7313462)
(es/parser) Check handler.has_errors() in test error parsing (#11487) (fade647)
Replace deprecated cargo_bin function with cargo_bin! macro (#11461) (73f77b6)
(ci) Handle merged PRs separately in milestone manager (#11409) (3554268)
(es/compat) Preserve this context in nested arrow functions (#11423) (f2bdaf2)
(es/es2017) Replace this in arrow functions during async-to-generator (#11450) (a993da6)
(bindings/wasm) Enable ecma_lints feature to support semantic error detection (#11414) (1faa4a5)
(es/hooks) Implement VisitMutHook for Either type (#11428) (395c85e)
(es/hooks) Implement VisitMutHook for Option<H> (#11429) (0bf1954)
(es/hooks) Add VisitHook trait for immutable AST visitors (#11437) (3efb41d)
(es/minifier) Improve nested template literal evaluation (#11411) (147df2f)
(es/minifier) Remove inlined IIFE arg and param (#11436) (2bc5d40)
(helpers) Replace MagicString with ast-grep's built-in edit API (#11410) (a3f0d33)
(hstr/wtf8) Address legacy FIXME comments by switching to derives (#11416) (f03bfd8)
(es/codegen, es/utils) Migrate to dragonbox_ecma for faster Number::toString (#11412) (b7978cc)
(es/react) Optimize JSX transforms to reduce allocations (#11425) (2a20cb6)
(es) Improve TypeScript transform configuration structure (#11434) (f33a975)
(es/minifier) Migrate MinifierPass to Pass trait (#11442) (a41e631)
(es/transformer) Remove OptionalHook wrapper in favor of Option<H> (#11430) (72da6bd)
(es/transforms) Migrate TypeScript transform to Pass trait (#11439) (dd007c6)
claude[bot] PR review comments (affb6a2)(es/minifier) Evaluate TemplateLiteral in BinaryExpression (#11406) (8d1b6f6)
(es/minifier) More strict check if cannot add ident when invoking IIFE (#11399) (03642aa)
(es/parser) Use byte_search to optimize scan_jsx_token (#11398) (f9b4da2)
Reduce binary size with panic=abort and ICU optimizations (#11401) (18088b2)
(es/minifier) Prevent unsafe sequence merging in super() calls (#11381) (eb02780)
(es/transformer) Fix variable declaration for nullish coalescing in else-if branches (#11384) (6746002)
(es/transforms) Update _ts_rewrite_relative_import_extension helper code (#11382) (1ec444e)
(es/minifier) Support BinaryExpression for Evaluator (#11390) (6c76f0a)
(es/transformer) Merge private_properties_in_object (#11378) (769c9d2)
(es/minifier) Optimize data structures of ProgramData (#11374) (3639523)
(es/parser) Remove Iterator implementation for Lexer (#11393) (5941018)
(es/parser) Optimize do_outside_of_context and do_inside_of_context (#11394) (4210cf1)
(es/parser) Remove is_first in lexer state (#11395) (97d903b)
(es/parser) Support no_paren parser option (#11359) (5b9d77c)
(es/parser) Revert no_paren parser option (#11362) (57a8731)
(es/transformer) Merge async_to_generator (#11358) (25f3a47)
(es/transformer) Merge object_rest_spread (#11357) (752188e)
(es/transformer) Merge nullish_coalescing (#11365) (5fb686a)
(es/compat) Preserve return value for single-property object destructuring (#11334) (847ad22)
(es/compat) Fix generator transform for compound assignments, for-in, and labeled break (#11339) (9b6bedd)
(es/compat) Destructuring evaluation order (#11337) (49d04c7)
(es/helpers) Avoid extra trap calls on excluded keys in object rest spread (#11338) (4662caf)
(es/parser) Small optimization after byte-based lexer (#11340) (c92ea4e)
(es/parser) Use slice rather than matching keywords (#11341) (b6ad2cb)
(es/minifier) Fix optimization pass for merge_imports (#11331) (ca2f7ed)
(es/parser) Don't call bump_bytes in the continue_if of byte_search! (#11328) (583619d)
(es/parser) Support type-only string literal in import specifiers (#11333) (07762f1)
(es/compat) Merge regexp pass into Transformer (#11307) (440b391)
(es/compat) Merge export_namespace_from to Transformer (#11309) (7a528ce)
(es/minifier) Prevent compress.comparisons from transforming expressions with side effects (#11256) (58a9d81)
(es/parser) Make the span of Program start at input start (#11199) (b56e008)
(es/minifier) Drop empty constructors during minification (#11250) (2cea7dd)
(es/visit) Add context parameter to VisitMutHook trait (#11254) (8645d0d)
(es/parser) Inline skip_space (afb824a)
(es/parser) Eliminate the outer loop of skip_block_comment (#11261) (e41c0ac)
(ast) Introduce flexible serialization encoding for AST (#11100) (8ad3647)
(plugin) Switch plugin abi to flexible serialization (#11198) (e5feaf1)
(es/compiler) Merge nullish_coalescing into Compiler (#11157) (dd6f71b)
(es/parser) Add an error for empty type args for generic (#11164) (9a1fa84)
(bindings) Add opt-level = s to more crates (#11191) (ed63413)
(es/parser) Detach swc_ecma_parser from swc_ecma_lexer (#11148) (94f175d)
(bindings) Improve ARM64 and Alpine Linux (musl) binary loading and validation (#11173) (f9be4d7)
(es/helpers) Fix SuppressedError argument order in explicit resource management (#11172) (7693fb9)
(es/minifier) Fix inlining of hoisted functions in param (#11161) (5a4088d)
(es/parser) Support literal computed property names in enums (#11163) (146c77c)
(es/codegen) Encode non-ASCII chars in regex with ascii_only option (#11155) (b6f4d1f)
(es/compat) Preserve AutoAccessor to prevent panic (#11150) (101c3b7)
(es/decorators) Emit correct metadata for enum parameters (#11154) (630484f)
(es/compat) Apply Array.prototype.slice to arguments in loose spread (#11122) (66428a2)
(es/compat) Handle sparse arrays correctly in generator transforms (#11131) (9cd4334)
(es/transforms) Check errors::HANDLER.is_set() before failing (#11130) (1c9ab27)
(es/minifier) Preserve __proto__ shorthand property behavior (#11123) (63dbd1d)
(es/parser) Parse (void) correctly as arrow function return type (#11125) (d3e5dd3)
(es/compat) Preserve comment when transform template with no expr (#11109) (80e8408)
(es/minifier) Inline block stmt into expr (#11107) (72a53a0)
(es/minifier) Allow MultiReplacer to inline multiple times (#11106) (fe8e981)
(es/ast) Fix unicode lone surrogates handling (#10987) (0557609)
(es/compat) Handle super in nested arrow function (#11056) (63c5413)
(es/minifier) Make const_to_let work in arrows again (#11062) (79dc8d4)
(es) Make isModule in test cases available (#11038) (44a5536)
(es/parser) Use relative file name in typescript tests (#11029) (82c6b0f)
(es/minifier) Fix compile error with debug feature (#10999) (831eed5)
(es/minifier) Don't eliminate class expr if some side effects contain this (#11003) (18aeac6)
(es/module) Support optional chaining in import.meta (#10985) (758d8ec)
(es/parser) Allow TS type args to start with LSHIFT (<<) to parse T<<S>() => void> (#10996) (4911ec7)
(ts/isolated-dts) Correct optional marker for class fields generated from constructor parameter (#10992) (0d680fd)
(es/parser) Introduce checkpoint to reduce clone (#11001) (cda08d1)
(es/parser) Remove useless Rc<RefCell<T>> (#11002) (39f5784)
(es/parser) Remove OneDirectionalList and reduce allocation of Vec (#11000) (0088ab8)
(es/minifier) Check exported when optimize last expr (#10939) (f6f15f3)
(es/minifier) Don't optimize Number properties when Number is shadowed (#10947) (40a1e2e)
Opus and allow assigning to the claude-bot (3275b9c)(es/minifier) Recursively check stmt for variable when inlining function (#10896) (e37a93d)
(es/minifier) Termination check when stmts containing switch (#10898) (4429b20)
(es/decorators) Handle empty class members (#10892) (fe44972)
(es/minifier) Hoist props when only props are used (#10891) (452fc98)
(es/parser) Fix parsing of JSX identifiers (#10894) (0047c39)
(es/compat) Properly handle rest assignment in for-in/of RHS (#10883) (5d11851)
(ts/fast-strip) Strip private method overloads (#10886) (cdb6e87)
(es/lexer) Disallow legacy octal literals as BigInt (#10867) (430fbf4)
(es/parser) Mark static as reserved in strict mode (#10861) (5bdddd7)
(es/lexer) Reduce comparison while reading numbers (#10864) (c6ba5c2)
(es/lexer) Remove unnecessary check when reading keywords (#10866) (4aefe0e)
(es/parser) Remove duplicate check for reservedness (#10850) (4897bfd)
(es/parser) Remove span swap operation in parser (#10854) (32f4bb8)
(es/parser) Enable support for dynamic import with defer phase (#10845) (097d29d)
(plugin) Remove bytecheck to make Wasm plugins backward compatible (#10842) (30ad808)
(es/helpers) Make inline helpers optional at compile time (#10808) (53f3881)
(es/parser) Reduce call to parse_decorators (#10846) (356d3a0)
(es/preset-env) Use strpool,phf for corejs2 data (#10803) (1652fd8)
(hstr) Make the deallocation of Atoms explicit (#10813) (406433d)
(es/parser) Make export in NS to not affect file type (#10799) (ae22033)
(es/parser) Correctly check ambient context (#10802) (f97ea03)
(es/lints) Remove warnings without features (#10794) (41d507f)
(es/react) Remove redundant replace calls (#10795) (a670b37)
(es/lexer) Do not scan number if there's no underscore (#10788) (f5d92ee)
(hstr) Do not compare string during creating atoms (#10791) (43a4f11)
(es/preset) Remove deprecated preset_env function and feature module (#10759) (fa0e0ab)
(es/preset-env) Use phf for corejs3 entry (#10712) (658b26d)
(es/minifier) Update the passing test list (#10782) (8aa888b)
(es/parser) Add a test for duplicate labels (#10784) (28fc643)
(es/parser) Reduce query ops of current token (#10766) (4304f91)
(es/parser) Remove useless call in parse_ident (#10770) (4ca12c9)
(es/module) Drop node feature of swc_ecma_loader (#10761) (44471b5)
(plugin/runner) Remove unused feature and dependency (#10764) (a7d8a0a)
(es/minifeir) Inline lazily initialized literals (#10752) (fd5d2e2)
(swc_core) Expose swc_ecma_parser/unstable (#10744) (db0679e)
(es/parser) Reduce the number of context set ops (#10742) (08b4e8b)
(es/parser) Reduce value set operations for context (#10751) (4976b12)
(es/renamer) Reduce time complexity in case of conflict (#10749) (0279914)
(es/lexer) Parse uppercase hex numbers correctly (#10728) (ead6256)
(es/lexer) Allow keywords as jsx attribute names (#10730) (04ef20a)
(es/minifier) Do not drop self-referential class expressions (#10710) (39e6c2e)
(es/parser) Allow non-prop operand in delete (#10733) (38132e0)