Oxc Release Notes
Last updated: Apr 7, 2026
- Apr 7, 2026
- Date parsed from source:Apr 7, 2026
- First seen by Releasebot:Apr 7, 2026
oxlint_v1.59.0: release(apps): oxlint v1.59.0 && oxfmt v0.44.0 (#21085)
Oxc releases a broad linting and formatting update with breaking LSP changes, new rules and code actions, smoother autofix behavior, bug fixes, faster parsing and decoding, plus Oxfmt improvements for config handling and formatting edge cases.
Oxlint
๐ฅ BREAKING CHANGES
22ce6af oxlint/lsp: [BREAKING] Show/fix safe suggestions by default (#19816) (Sysix)
๐ Features
7a7b7b8 oxlint/lsp: Add source.fixAllDangerous.oxc code action kind (#20526) (bab)
9cfe57e linter/unicorn: Implement prefer-import-meta-properties rule (#20662) (Irfan - ุฆูุฑูุงู)
1edb391 linter/eslint: Implement no-restricted-exports rule (#20592) (Nicolas Le Cam)
0f12bcd linter/react: Implement hook-use-state rule (#20986) (Khaled Labeb)
1513a9f oxlint/lsp: Show note field for lsp diagnostic (#20983) (Sysix)
7fdf722 linter/unicorn: Implement no-useless-iterator-to-array rule (#20945) (Mikhail Baev)
39c8f2c linter/jest: Implement padding-around-after-all-blocks (#21034) (Sapphire)
ac39e51 linter/eslint-vitest-plugin: Prefer importing vitest globals (#20960) (Said Atrahouch)
0b84de1 oxlint: Support allow option for prefer-promise-reject-errors (#20934) (camc314)
23db851 linter/consistent-return: Move rule from nursery to suspicious (#20920) (camc314)
9a27e32 linter/no-unnecessary-type-conversion: Move rule from nursery to suspicious (#20919) (camc314)
1ca7b58 linter/dot-notation: Move rule from nursery to style (#20918) (camc314)
73ba81a linter/consistent-type-exports: Move rule from nursery to style (#20917) (camc314)
b9199b1 linter/unicorn: Implement switch-case-break-position (#20872) (Mikhail Baev)
3435ff8 linter: Implements prefer-snapshot-hint rule in Jest and Vitest (#20870) (Said Atrahouch)
98510d2 linter: Implement react/prefer-function-component (#19652) (Connor Shea)
871f9d9 linter: Implement no-useless-assignment (#15466) (Zhaoting Zhou)
0f01fbd linter: Implement eslint/object-shorthand (#17688) (yue)
๐ Bug Fixes
dd2df87 npm: Export package.json for oxlint and oxfmt (#20784) (kazuya kawaguchi)
9bc77dd linter/no-unused-private-class-members: False positive with await expr (#21067) (camc314)
60a57cd linter/const-comparisons: Detect equality contradictions (#21065) (camc314)
2bb2be2 linter/no-array-index-key: False positive when index is passed as function argument (#21012) (bab)
6492953 linter/no-this-in-sfc: Only flag this used as member expression object (#20961) (bab)
9446dcc oxlint/lsp: Skip node_modules in oxlint config walker (#21004) (copilot-swe-agent)
af89923 linter/no-namespace: Support glob pattern matching against basename (#21031) (bab)
64a1a7e oxlint: Don't search for nested config outside base config (#21051) (Sysix)
3b953bc linter/button-has-type: Ignore document.createElement calls (#21008) (Said Atrahouch)
8c36070 linter/unicorn: Add support for Array.from() for prefer-set-size rule (#21016) (Mikhail Baev)
c1a48f0 linter: Detect vitest import from vite-plus/test (#20976) (Said Atrahouch)
5c32fd1 lsp: Prevent corrupted autofix output from overlapping text edits (#19793) (Peter Wagenet)
ca79960 linter/no-array-index-key: Move span to key property (#20947) (camc314)
2098274 linter: Add suggestion for jest/prefer-equality-matcher (#20925) (eryue0220)
6eb77ec linter: Allow default-import barrels in import/named (#20757) (Bazyli Brzรณska)
9c218ef linter/eslint-vitest-plugin: Remove pending fix status for require-local-test-context-for-concurrent-snapshot (#20890) (Said Atrahouch)
โก Performance
fb52383 napi/parser, linter/plugins: Clear buffers and source texts earlier (#21025) (overlookmotel)
3b7dec4 napi/parser, linter/plugins: Use utf8Slice for decoding UTF-8 strings (#21022) (overlookmotel)
012c924 napi/parser, linter/plugins: Speed up decoding strings in raw transfer (#21021) (overlookmotel)
55e1e9b napi/parser, linter/plugins: Initialize vars as 0 (#21020) (overlookmotel)
c25ef02 napi/parser, linter/plugins: Simplify branch condition in deserializeStr (#21019) (overlookmotel)
9f494c3 napi/parser, linter/plugins: Raw transfer use String.fromCharCode in string decoding (#21018) (overlookmotel)
0503a78 napi/parser, linter/plugins: Faster deserialization of raw fields (#20923) (overlookmotel)
a24f75e napi/parser: Optimize string deserialization for non-ASCII sources (#20834) (Joshua Tuddenham)
๐ Documentation
af72b80 oxlint: Fix typo for --tsconfig (#20889) (leaysgur)
70c53b1 linter: Highlight that tsconfig is not respected in type aware linting (#20884) (camc314)
Oxfmt
๐ Features
35cf6e8 oxfmt: Add node version hint for ts config import failures (#21046) (camc314)
๐ Bug Fixes
dd2df87 npm: Export package.json for oxlint and oxfmt (#20784) (kazuya kawaguchi)
9d45511 oxfmt: Propagate file write errors instead of panicking (#20997) (leaysgur)
139ddd9 formatter: Handle leading comment after array elision (#20987) (leaysgur)
4216380 oxfmt: Support .editorconfig tab_width fallback (#20988) (leaysgur)
d10df39 formatter: Resolve pending space in fits measurer before expanded-mode early exit (#20954) (Dunqing)
f9ef1bd formatter: Avoid breaking after => when arrow body has JSDoc type cast (#20857) (bab)
Co-authored-by: Boshen [email protected]
Original source Report a problem - Apr 7, 2026
- Date parsed from source:Apr 7, 2026
- First seen by Releasebot:Apr 7, 2026
oxfmt_v0.44.0: release(apps): oxlint v1.59.0 && oxfmt v0.44.0 (#21085)
Oxc releases broader linting, LSP, and formatting updates, adding new rules and code actions, default safe suggestion fixes, faster parser performance, and multiple bug fixes across oxlint and oxfmt.
Oxlint
๐ฅ BREAKING CHANGES
22ce6af oxlint/lsp: [BREAKING] Show/fix safe suggestions by default (#19816) (Sysix)
๐ Features
7a7b7b8 oxlint/lsp: Add source.fixAllDangerous.oxc code action kind (#20526) (bab)
9cfe57e linter/unicorn: Implement prefer-import-meta-properties rule (#20662) (Irfan - ุฆูุฑูุงู)
1edb391 linter/eslint: Implement no-restricted-exports rule (#20592) (Nicolas Le Cam)
0f12bcd linter/react: Implement hook-use-state rule (#20986) (Khaled Labeb)
1513a9f oxlint/lsp: Show note field for lsp diagnostic (#20983) (Sysix)
7fdf722 linter/unicorn: Implement no-useless-iterator-to-array rule (#20945) (Mikhail Baev)
39c8f2c linter/jest: Implement padding-around-after-all-blocks (#21034) (Sapphire)
ac39e51 linter/eslint-vitest-plugin: Prefer importing vitest globals (#20960) (Said Atrahouch)
0b84de1 oxlint: Support allow option for prefer-promise-reject-errors (#20934) (camc314)
23db851 linter/consistent-return: Move rule from nursery to suspicious (#20920) (camc314)
9a27e32 linter/no-unnecessary-type-conversion: Move rule from nursery to suspicious (#20919) (camc314)
1ca7b58 linter/dot-notation: Move rule from nursery to style (#20918) (camc314)
73ba81a linter/consistent-type-exports: Move rule from nursery to style (#20917) (camc314)
b9199b1 linter/unicorn: Implement switch-case-break-position (#20872) (Mikhail Baev)
3435ff8 linter: Implements prefer-snapshot-hint rule in Jest and Vitest (#20870) (Said Atrahouch)
98510d2 linter: Implement react/prefer-function-component (#19652) (Connor Shea)
871f9d9 linter: Implement no-useless-assignment (#15466) (Zhaoting Zhou)
0f01fbd linter: Implement eslint/object-shorthand (#17688) (yue)
๐ Bug Fixes
dd2df87 npm: Export package.json for oxlint and oxfmt (#20784) (kazuya kawaguchi)
9bc77dd linter/no-unused-private-class-members: False positive with await expr (#21067) (camc314)
60a57cd linter/const-comparisons: Detect equality contradictions (#21065) (camc314)
2bb2be2 linter/no-array-index-key: False positive when index is passed as function argument (#21012) (bab)
6492953 linter/no-this-in-sfc: Only flag this used as member expression object (#20961) (bab)
9446dcc oxlint/lsp: Skip node_modules in oxlint config walker (#21004) (copilot-swe-agent)
af89923 linter/no-namespace: Support glob pattern matching against basename (#21031) (bab)
64a1a7e oxlint: Don't search for nested config outside base config (#21051) (Sysix)
3b953bc linter/button-has-type: Ignore document.createElement calls (#21008) (Said Atrahouch)
8c36070 linter/unicorn: Add support for Array.from() for prefer-set-size rule (#21016) (Mikhail Baev)
c1a48f0 linter: Detect vitest import from vite-plus/test (#20976) (Said Atrahouch)
5c32fd1 lsp: Prevent corrupted autofix output from overlapping text edits (#19793) (Peter Wagenet)
ca79960 linter/no-array-index-key: Move span to key property (#20947) (camc314)
2098274 linter: Add suggestion for jest/prefer-equality-matcher (#20925) (eryue0220)
6eb77ec linter: Allow default-import barrels in import/named (#20757) (Bazyli Brzรณska)
9c218ef linter/eslint-vitest-plugin: Remove pending fix status for require-local-test-context-for-concurrent-snapshot (#20890) (Said Atrahouch)
โก Performance
fb52383 napi/parser, linter/plugins: Clear buffers and source texts earlier (#21025) (overlookmotel)
3b7dec4 napi/parser, linter/plugins: Use utf8Slice for decoding UTF-8 strings (#21022) (overlookmotel)
012c924 napi/parser, linter/plugins: Speed up decoding strings in raw transfer (#21021) (overlookmotel)
55e1e9b napi/parser, linter/plugins: Initialize vars as 0 (#21020) (overlookmotel)
c25ef02 napi/parser, linter/plugins: Simplify branch condition in deserializeStr (#21019) (overlookmotel)
9f494c3 napi/parser, linter/plugins: Raw transfer use String.fromCharCode in string decoding (#21018) (overlookmotel)
0503a78 napi/parser, linter/plugins: Faster deserialization of raw fields (#20923) (overlookmotel)
a24f75e napi/parser: Optimize string deserialization for non-ASCII sources (#20834) (Joshua Tuddenham)
๐ Documentation
af72b80 oxlint: Fix typo for --tsconfig (#20889) (leaysgur)
70c53b1 linter: Highlight that tsconfig is not respected in type aware linting (#20884) (camc314)
Oxfmt
๐ Features
35cf6e8 oxfmt: Add node version hint for ts config import failures (#21046) (camc314)
๐ Bug Fixes
dd2df87 npm: Export package.json for oxlint and oxfmt (#20784) (kazuya kawaguchi)
9d45511 oxfmt: Propagate file write errors instead of panicking (#20997) (leaysgur)
139ddd9 formatter: Handle leading comment after array elision (#20987) (leaysgur)
4216380 oxfmt: Support .editorconfig tab_width fallback (#20988) (leaysgur)
d10df39 formatter: Resolve pending space in fits measurer before expanded-mode early exit (#20954) (Dunqing)
f9ef1bd formatter: Avoid breaking after => when arrow body has JSDoc type cast (#20857) (bab)
Co-authored-by: Boshen [email protected]
Original source Report a problem All of your release notes in one feed
Join Releasebot and get updates from Oxc and hundreds of other software products.
- Apr 7, 2026
- Date parsed from source:Apr 7, 2026
- First seen by Releasebot:Apr 7, 2026
oxc crates_v0.124.0
Oxc fixes bugs and speeds up parsing with a batch of allocator, napi/parser, and linter/plugin improvements, including faster string decoding, earlier buffer cleanup, and a larger initial chunk size. It also includes documentation and comment cleanup.
๐ Bug Fixes
- fc7f60c allocator: Revert changes to get_current_chunk_footer_field_offset (#20964) (overlookmotel)
- 31316c8 semantic: Rebind class expressions before identifier checks (#20916) (camc314)
โก Performance
- fb52383 napi/parser, linter/plugins: Clear buffers and source texts earlier (#21025) (overlookmotel)
- 3b7dec4 napi/parser, linter/plugins: Use utf8Slice for decoding UTF-8 strings (#21022) (overlookmotel)
- 012c924 napi/parser, linter/plugins: Speed up decoding strings in raw transfer (#21021) (overlookmotel)
- 55e1e9b napi/parser, linter/plugins: Initialize vars as 0 (#21020) (overlookmotel)
- c25ef02 napi/parser, linter/plugins: Simplify branch condition in deserializeStr (#21019) (overlookmotel)
- 9f494c3 napi/parser, linter/plugins: Raw transfer use String.fromCharCode in string decoding (#21018) (overlookmotel)
- 91cf105 allocator: Increase initial chunk size from 512B to 16KB (#20968) (overlookmotel)
- cbc0c21 allocator: Add #[cold] to to error handling functions (#20967) (overlookmotel)
- 0503a78 napi/parser, linter/plugins: Faster deserialization of raw fields (#20923) (overlookmotel)
- a24f75e napi/parser: Optimize string deserialization for non-ASCII sources (#20834) (Joshua Tuddenham)
๐ Documentation
- c78a57a syntax: Fix typo (#21044) (camc314)
- f5e228f allocator: Fix typo in comment (#20972) (overlookmotel)
- 7159d51 allocator: Improve doc comment examples for vec2::Vec (#20969) (overlookmotel)
- b1da750 allocator, data_structures: Correct comments (#20966) (overlookmotel)
- Apr 7, 2026
- Date parsed from source:Apr 7, 2026
- First seen by Releasebot:Apr 7, 2026
oxlint v1.59.0 & oxfmt v0.44.0
Oxc releases Oxlint v1.59.0 and Oxfmt v0.44.0 with new lint rules, safer LSP suggestions by default, expanded autofix and diagnostic support, bug fixes, performance improvements, and formatter updates for comments, editorconfig, and file write handling.
Table of Contents
Oxlint v1.59.0
Oxfmt v0.44.0
Oxlint v1.59.0
๐ฅ BREAKING CHANGES
22ce6af oxlint/lsp: [BREAKING] Show/fix safe suggestions by default (#19816) (Sysix)
๐ Features
7a7b7b8 oxlint/lsp: Add source.fixAllDangerous.oxc code action kind (#20526) (bab)
9cfe57e linter/unicorn: Implement prefer-import-meta-properties rule (#20662) (Irfan - ุฆูุฑูุงู)
1edb391 linter/eslint: Implement no-restricted-exports rule (#20592) (Nicolas Le Cam)
0f12bcd linter/react: Implement hook-use-state rule (#20986) (Khaled Labeb)
1513a9f oxlint/lsp: Show note field for lsp diagnostic (#20983) (Sysix)
7fdf722 linter/unicorn: Implement no-useless-iterator-to-array rule (#20945) (Mikhail Baev)
39c8f2c linter/jest: Implement padding-around-after-all-blocks (#21034) (Sapphire)
ac39e51 linter/eslint-vitest-plugin: Prefer importing vitest globals (#20960) (Said Atrahouch)
0b84de1 oxlint: Support allow option for prefer-promise-reject-errors (#20934) (camc314)
23db851 linter/consistent-return: Move rule from nursery to suspicious (#20920) (camc314)
9a27e32 linter/no-unnecessary-type-conversion: Move rule from nursery to suspicious (#20919) (camc314)
1ca7b58 linter/dot-notation: Move rule from nursery to style (#20918) (camc314)
73ba81a linter/consistent-type-exports: Move rule from nursery to style (#20917) (camc314)
b9199b1 linter/unicorn: Implement switch-case-break-position (#20872) (Mikhail Baev)
3435ff8 linter: Implements prefer-snapshot-hint rule in Jest and Vitest (#20870) (Said Atrahouch)
98510d2 linter: Implement react/prefer-function-component (#19652) (Connor Shea)
871f9d9 linter: Implement no-useless-assignment (#15466) (Zhaoting Zhou)
0f01fbd linter: Implement eslint/object-shorthand (#17688) (yue)
๐ Bug Fixes
8be4de7 linter/unicorn: Do not report on optionals in prefer-array-flat-map (#21082) (Mikhail Baev)
dd2df87 npm: Export package.json for oxlint and oxfmt (#20784) (kazuya kawaguchi)
9bc77dd linter/no-unused-private-class-members: False positive with await expr (#21067) (camc314)
60a57cd linter/const-comparisons: Detect equality contradictions (#21065) (camc314)
2bb2be2 linter/no-array-index-key: False positive when index is passed as function argument (#21012) (bab)
6492953 linter/no-this-in-sfc: Only flag this used as member expression object (#20961) (bab)
9446dcc oxlint/lsp: Skip node_modules in oxlint config walker (#21004) (copilot-swe-agent)
af89923 linter/no-namespace: Support glob pattern matching against basename (#21031) (bab)
64a1a7e oxlint: Don't search for nested config outside base config (#21051) (Sysix)
3b953bc linter/button-has-type: Ignore document.createElement calls (#21008) (Said Atrahouch)
8c36070 linter/unicorn: Add support for Array.from() for prefer-set-size rule (#21016) (Mikhail Baev)
c1a48f0 linter: Detect vitest import from vite-plus/test (#20976) (Said Atrahouch)
5c32fd1 lsp: Prevent corrupted autofix output from overlapping text edits (#19793) (Peter Wagenet)
ca79960 linter/no-array-index-key: Move span to key property (#20947) (camc314)
2098274 linter: Add suggestion for jest/prefer-equality-matcher (#20925) (eryue0220)
6eb77ec linter: Allow default-import barrels in import/named (#20757) (Bazyli Brzรณska)
9c218ef linter/eslint-vitest-plugin: Remove pending fix status for require-local-test-context-for-concurrent-snapshot (#20890) (Said Atrahouch)
โก Performance
fb52383 napi/parser, linter/plugins: Clear buffers and source texts earlier (#21025) (overlookmotel)
3b7dec4 napi/parser, linter/plugins: Use utf8Slice for decoding UTF-8 strings (#21022) (overlookmotel)
012c924 napi/parser, linter/plugins: Speed up decoding strings in raw transfer (#21021) (overlookmotel)
55e1e9b napi/parser, linter/plugins: Initialize vars as 0 (#21020) (overlookmotel)
c25ef02 napi/parser, linter/plugins: Simplify branch condition in deserializeStr (#21019) (overlookmotel)
9f494c3 napi/parser, linter/plugins: Raw transfer use String.fromCharCode in string decoding (#21018) (overlookmotel)
0503a78 napi/parser, linter/plugins: Faster deserialization of raw fields (#20923) (overlookmotel)
a24f75e napi/parser: Optimize string deserialization for non-ASCII sources (#20834) (Joshua Tuddenham)
๐ Documentation
af72b80 oxlint: Fix typo for --tsconfig (#20889) (leaysgur)
70c53b1 linter: Highlight that tsconfig is not respected in type aware linting (#20884) (camc314)
Oxfmt v0.44.0
๐ Features
35cf6e8 oxfmt: Add node version hint for ts config import failures (#21046) (camc314)
๐ Bug Fixes
dd2df87 npm: Export package.json for oxlint and oxfmt (#20784) (kazuya kawaguchi)
9d45511 oxfmt: Propagate file write errors instead of panicking (#20997) (leaysgur)
139ddd9 formatter: Handle leading comment after array elision (#20987) (leaysgur)
4216380 oxfmt: Support .editorconfig tab_width fallback (#20988) (leaysgur)
d10df39 formatter: Resolve pending space in fits measurer before expanded-mode early exit (#20954) (Dunqing)
f9ef1bd formatter: Avoid breaking after => when arrow body has JSDoc type cast (#20857) (bab)
Original source Report a problem - Mar 30, 2026
- Date parsed from source:Mar 30, 2026
- First seen by Releasebot:Apr 1, 2026
oxlint_v1.58.0: release(apps): oxlint v1.58.0 && oxfmt v0.43.0 (#20867)
Oxc releases major Oxlint and Oxfmt updates with breaking lint rule changes, new vitest and import diagnostics, smarter fixes and config setup, plus expanded formatter support for bool object styles and markdown or angular in JS substitution.
Oxlint
๐ฅ BREAKING CHANGES
- c0ebbce linter: [BREAKING] Report error on unknown builtin rule (#20464) (camc314)
๐ Features
- 04f85e5 linter/no-unused-vars: Add safe-fix option for import fixes (#20839) (Marcell Toth)
- 32a3706 linter/eslint-vitest-plugin: Implements require-test-timeout rule (#20806) (Said Atrahouch)
- ae03653 linter: Implement suggestion for eslint/no-useless-computed-key rule (#20805) (Mikhail Baev)
- 6624513 linter/prefer-string-starts-ends-with: Move rule from nursery to style (#20797) (camc314)
- 58941f8 linter/prefer-readonly: Move rule from nursery to style (#20796) (camc314)
- 8837ffd linter/prefer-regexp-exec: Move rule from nursery to style (#20795) (camc314)
- 7e88871 linter/prefer-find: Move rule out of nursery (#20794) (camc314)
- ca6e5bc linter/vitest: Implement prefer-called-exactly-once-with (#17562) (Said Atrahouch)
- e80c0bf linter/eslint-plugin-vitest: Implement require-mock-type-parameters (#20785) (Said Atrahouch)
- cec8b8f linter/vitest: Implement require-awaited-expect-poll rule (#20702) (Said Atrahouch)
- d8e9d01 linter/eslint-plugin-vitest: Set prefer-to-have-been-called-times compatible with jest (#20703) (Said Atrahouch)
- caf8231 linter: Enhance import plugin diagnostics with help messages (#20766) (็ฆป่ฐฑ)
- f44adfa linter: Improve the oxlint config generated by --init. (#20632) (connorshea)
- 43f4827 linter: Add help text to jest and promise diagnostics (#20640) (kszongic)
- 16516de linter: Enhance types for DummyRule (#20751) (camc314)
- 27374e8 linter: Add hint about node version when ts config fail to import (#20570) (camc314)
- 8e34150 linter/eslint-plugin-vitest: Sync rule with JS implementation (#20679) (Said Atrahouch)
๐ Bug Fixes
- df057d5 linter/no-noninteractive-tabindex: Add missing composite widget โฆ (#20860) (bab)
- bb34073 linter: Mark vitest/valid-title as a compatible jest rules (#20463) (Nicolas Le Cam)
- bd2c76b linter: Handle shadowed locals in no-restricted-globals (#20811) (Ulrich Stark)
- 62e39be linter: Sort nested object keys in fix of eslint/sort-keys in one pass (#20838) (Ulrich Stark)
- 3ef37da oxlint/lsp: Error on unknown command (#20841) (Sysix)
- ab1070d oxlint/cli: Skip parsing base config again for nested config search (#20809) (Sysix)
- 2be3728 oxlint/lsp: Skip parsing base config again for nested config search (#20808) (Sysix)
- 6171217 oxlint: Respect NO_COLOR env for format=stylish (#20804) (Sysix)
- d89ae8f linter/plugins: Patch WeakMap to emulate WeakMaps keyed by sourceCode (#20799) (overlookmotel)
- c610666 linter/no-shadow: Respect env settings when builtinGlobals is enabled (#20429) (vvnikita74)
- 6bb502f linter/no-invalid-void-type: Allow void generic args in heritage clauses (#20780) (camc314)
- 365bb7d linter: Skip typed nested literals in explicit-module-boundary-types (#20776) (camc314)
- 0aa1ff0 linter/plugins: Ensure after hook is always called in ESLint compat mode (#20721) (overlookmotel)
- 31145a9 linter/plugins: Fire after hook after CFG events in ESLint compat (#20720) (overlookmotel)
- c09a5ab diagnostics: Skip minified fallback for single-line reporters (#20716) (camc314)
- e4dc9a1 linter: Isolate --init config writes from parallel tests (#20717) (camc314)
- 7e394ec linter: Clarify empty replacement fixer help text (#20698) (camc314)
- d15a99c linter/jsx-curly-brace-presence: Flag empty string literals (#20690) (camc314)
๐ Documentation
- c722495 linter: Update JS Plugins + LS references (#20843) (camc314)
- e1f9748 linter/jsdoc/require-property: Fix typo (#20792) (Benjaming61001)
- be3dcc1 linter: Add note about node version + custom TS plugin (#19381) (camc314)
Oxfmt
๐ Features
- 6ef440a oxfmt: Support bool for object style options (#20853) (leaysgur)
- 23050fa oxfmt: Support markdown-in-js substitution (#20683) (leaysgur)
- 4087295 oxfmt: Support angular-in-js substitution (#20676) (leaysgur)
- Mar 30, 2026
- Date parsed from source:Mar 30, 2026
- First seen by Releasebot:Apr 1, 2026
oxfmt_v0.43.0: release(apps): oxlint v1.58.0 && oxfmt v0.43.0 (#20867)
Oxc ships breaking lint changes, new Vitest and ESLint rule support, better diagnostics and config handling, plus bug fixes across the linter and LSP. Oxfmt also expands with new object style and markdown, angular substitution support.
Oxlint
๐ฅ BREAKING CHANGES
- c0ebbce linter: [BREAKING] Report error on unknown builtin rule (#20464) (camc314)
๐ Features
- 04f85e5 linter/no-unused-vars: Add safe-fix option for import fixes (#20839) (Marcell Toth)
- 32a3706 linter/eslint-vitest-plugin: Implements require-test-timeout rule (#20806) (Said Atrahouch)
- ae03653 linter: Implement suggestion for eslint/no-useless-computed-key rule (#20805) (Mikhail Baev)
- 6624513 linter/prefer-string-starts-ends-with: Move rule from nursery to style (#20797) (camc314)
- 58941f8 linter/prefer-readonly: Move rule from nursery to style (#20796) (camc314)
- 8837ffd linter/prefer-regexp-exec: Move rule from nursery to style (#20795) (camc314)
- 7e88871 linter/prefer-find: Move rule out of nursery (#20794) (camc314)
- ca6e5bc linter/vitest: Implement prefer-called-exactly-once-with (#17562) (Said Atrahouch)
- e80c0bf linter/eslint-plugin-vitest: Implement require-mock-type-parameters (#20785) (Said Atrahouch)
- cec8b8f linter/vitest: Implement require-awaited-expect-poll rule (#20702) (Said Atrahouch)
- d8e9d01 linter/eslint-plugin-vitest: Set prefer-to-have-been-called-times compatible with jest (#20703) (Said Atrahouch)
- caf8231 linter: Enhance import plugin diagnostics with help messages (#20766) (็ฆป่ฐฑ)
- f44adfa linter: Improve the oxlint config generated by --init. (#20632) (connorshea)
- 43f4827 linter: Add help text to jest and promise diagnostics (#20640) (kszongic)
- 16516de linter: Enhance types for DummyRule (#20751) (camc314)
- 27374e8 linter: Add hint about node version when ts config fail to import (#20570) (camc314)
- 8e34150 linter/eslint-plugin-vitest: Sync rule with JS implementation (#20679) (Said Atrahouch)
๐ Bug Fixes
- df057d5 linter/no-noninteractive-tabindex: Add missing composite widget โฆ (#20860) (bab)
- bb34073 linter: Mark vitest/valid-title as a compatible jest rules (#20463) (Nicolas Le Cam)
- bd2c76b linter: Handle shadowed locals in no-restricted-globals (#20811) (Ulrich Stark)
- 62e39be linter: Sort nested object keys in fix of eslint/sort-keys in one pass (#20838) (Ulrich Stark)
- 3ef37da oxlint/lsp: Error on unknown command (#20841) (Sysix)
- ab1070d oxlint/cli: Skip parsing base config again for nested config search (#20809) (Sysix)
- 2be3728 oxlint/lsp: Skip parsing base config again for nested config search (#20808) (Sysix)
- 6171217 oxlint: Respect NO_COLOR env for format=stylish (#20804) (Sysix)
- d89ae8f linter/plugins: Patch WeakMap to emulate WeakMaps keyed by sourceCode (#20799) (overlookmotel)
- c610666 linter/no-shadow: Respect env settings when builtinGlobals is enabled (#20429) (vvnikita74)
- 6bb502f linter/no-invalid-void-type: Allow void generic args in heritage clauses (#20780) (camc314)
- 365bb7d linter: Skip typed nested literals in explicit-module-boundary-types (#20776) (camc314)
- 0aa1ff0 linter/plugins: Ensure after hook is always called in ESLint compat mode (#20721) (overlookmotel)
- 31145a9 linter/plugins: Fire after hook after CFG events in ESLint compat (#20720) (overlookmotel)
- c09a5ab diagnostics: Skip minified fallback for single-line reporters (#20716) (camc314)
- e4dc9a1 linter: Isolate --init config writes from parallel tests (#20717) (camc314)
- 7e394ec linter: Clarify empty replacement fixer help text (#20698) (camc314)
- d15a99c linter/jsx-curly-brace-presence: Flag empty string literals (#20690) (camc314)
๐ Documentation
- c722495 linter: Update JS Plugins + LS references (#20843) (camc314)
- e1f9748 linter/jsdoc/require-property: Fix typo (#20792) (Benjaming61001)
- be3dcc1 linter: Add note about node version + custom TS plugin (#19381) (camc314)
Oxfmt
๐ Features
- 6ef440a oxfmt: Support bool for object style options (#20853) (leaysgur)
- 23050fa oxfmt: Support markdown-in-js substitution (#20683) (leaysgur)
- 4087295 oxfmt: Support angular-in-js substitution (#20676) (leaysgur)
- Mar 30, 2026
- Date parsed from source:Mar 30, 2026
- First seen by Releasebot:Mar 31, 2026
oxc crates_v0.123.0
Oxc releases parser, minifier, semantic, transformer, diagnostics, and codegen updates with new comment handling, clearer static block error reporting, smarter JSX pragma detection, and several performance improvements across parsing and modifier processing.
Features
59fd797 parser: Mark pure comments that cannot be applied (#20687) (Boshen)
2917bb2 minifier: Minify x ? 1 : 0 to +x or +!!x (#20594) (John Costa)Bug Fixes
1a370a6 minifier: Inline single-use vars past non-computed object keys (#20810) (Ulrich Stark)
ffacf99 semantic: Report error on await inside block inside static block (#20750) (camc314)
ccf9301 semantic: Report error on for-await inside block inside static block (#20749) (camc314)
9a5ff73 semantic: Hoist Annex B block-scoped function declarations to var scope (#20728) (Dunqing)
2bad7f5 semantic: Report error on await-using inside nested static block (#20746) (camc314)
77abf54 codegen: Preserve coverage comments before ConditionalExpression alternate and between SwitchCases (#20718) (Boshen)
c09a5ab diagnostics: Skip minified fallback for single-line reporters (#20716) (camc314)
3375627 transformer: Remove false positive duplicate __source/__self prop error (#20678) (Dunqing)
3931b98 transformer: Ignore @jsxImportSource inside inline code spans in comments (#20674) (Dunqing)Performance
f72f108 parser: Move kinds field of Modifiers to first (#20833) (overlookmotel)
2a06835 parser: Add Modifiers::contains_accessibility (#20832) (overlookmotel)
5995339 parser: Make Modifiers::accessibility branchless (#20827) (overlookmotel)
2208114 parser: Add #[inline] to trivial modifier methods (#20826) (overlookmotel)
055a7ac parser: Defer calculation of Modifier spans (#20823) (overlookmotel)
2e7e6bd parser: Remove branch from parse_modifiers (#20821) (overlookmotel)
eb02c88 parser: Reduce Kind to ModifierKind conversions in eat_modifiers_before_declaration (#20820) (overlookmotel)
1f57448 parser: Fast path for no syntax errors when checking modifiers (#20748) (overlookmotel)
4e8b817 parser: Remove a lookahead from eat_modifiers_before_declaration (#20755) (overlookmotel)
5f9bee5 parser: Store Modifiers on stack (#20742) (overlookmotel)
511d5e5 parser: Add Modifiers::get method (#20741) (overlookmotel)
bd10021 transformer: Only scan comments before first statement for JSX pragmas (#20675) (Dunqing)
611fca5 parser: Pre-allocate extends vec with 1 cap (#20667) (camc314)
ad58dd7 parser: Avoid re-allocating when parsing import stmt (#20666) (camc314)
2b2794b parser: Avoid vec clone in parse_heritage_clause (#20665) (camc314)
89a5374 allocator: Remove op from StringBuilder::grow_one (#20650) (overlookmotel)Documentation
868448e ast: Correct comment (#20837) (overlookmotel)
Original source Report a problem
a147878 span: Remove Atom from README (#20836) (overlookmotel) - Mar 24, 2026
- Date parsed from source:Mar 24, 2026
- First seen by Releasebot:Mar 24, 2026
oxlint_v1.57.0
Oxc releases oxlint v1.57.0 and oxfmt v0.42.0 with an apps update.
- Mar 24, 2026
- Date parsed from source:Mar 24, 2026
- First seen by Releasebot:Mar 24, 2026
oxfmt_v0.42.0
Oxc releases oxlint v1.57.0 and oxfmt v0.42.0.
- Mar 24, 2026
- Date parsed from source:Mar 24, 2026
- First seen by Releasebot:Mar 24, 2026
oxlint v1.57.0 & oxfmt v0.42.0
Oxc ships Oxlint v1.57.0 and Oxfmt v0.42.0 with new lint rules, broader formatting support, and a long list of bug fixes and performance improvements. The release also tightens docs and improves formatter behavior for JSDoc, html-in-js, and comment handling.
Table of Contents
Oxlint v1.57.0
Oxfmt v0.42.0
Oxlint v1.57.0
๐ Features
2244984 linter: Implement vitest/prefer-strict-boolean-matchers rule (#20603) (Mikhail Baev)
c5f0ed3 linter/array-callback-return: Use CFG for analysis (#20498) (camc314)
f9a63ca linter: Implement unicorn/custom-error-definition rule (#20520) (Mikhail Baev)
๐ Bug Fixes
5e893d7 jsdoc: Parse tags after interval notation in descriptions (#20046) (camc314)
532c921 linter/plugins: Include loc when call JSON.stringify on Tokens and Comments (#20512) (overlookmotel)
c3d9e91 linter/plugins: Fix memory leak in tokens and comments (#20477) (overlookmotel)
525c398 linter: Detect no-cycle with auto-discovered tsconfig paths (#20566) (camc314)
9519380 linter/no-noninteractive-tabindex: Handle numeric tabIndex values on non-interactive elements (#20538) (camc314)
04c84bb linter: Fix cloning on Windows by reducing the size of a problematic snapshot filename. (#20511) (connorshea)
65a7c3c linter/hex-escape: False positive for String.raw (#20497) (camc314)
d3cdc82 linter/escape-case: False positive for String.raw (#20496) (camc314)
50d59e9 linter/explicit-function-return-type: False negative with HOF detection (#20495) (camc314)
d78c55d linter/no-unused-vars: Handle loop-carried self-reassignments (#20457) (camc314)
6a307d1 linter/explicit-module-boundary-types: Fix false positives for satisfies-wrapped members (#20439) (camc314)
0c57312 tsgolint: Use primary span for the disable directive (#20436) (camc314)
4791b2e linter: Add summary output to GitHub formatter (#20404) (Hideyasu-Ozawa)
โก Performance
30891bd linter/plugins: Share empty Uint32Array across multiple places (#20509) (overlookmotel)
336f7f7 linter/plugins: Faster conversion of span to Location (#20507) (overlookmotel)
a187333 linter/plugins: Reuse descriptor objects for Object.defineProperty calls (#20505) (overlookmotel)
5984a66 linter/plugins: Recycle Location objects (#20491) (overlookmotel)
8729614 linter/plugins: Reduce operations in binary search (#20490) (overlookmotel)
9cfc312 linter/plugins: Reduce allocations for tokens and comments with accessed loc (#20480) (overlookmotel)
9c7a267 linter/plugins: Reduce allocations for regex tokens (#20479) (overlookmotel)
4ee80ac linter/plugins: Remove bounds checks on regex tokens (#20478) (overlookmotel)
4a22f60 linter/plugins: Remove regex from getCommentsBefore + getCommentsAfter (#20475) (overlookmotel)
9a622c7 linter/plugins: Lazy deserialize tokens and comments (#20474) (overlookmotel)
c6ea0a0 ast: Place NodeId field after Span in structs (#20584) (overlookmotel)
d176ecc napi/parser, oxlint/plugins: Shorten deserializer for WithClause (#20575) (overlookmotel)
57b2e82 linter/no-required-prop-with-default: Restructure so lintgen works (#20537) (camc314)
9ddfb42 linter/no-const-assign: Use BindingPattern::get_symbol_ids (#20533) (camc314)
๐ Documentation
f064f80 linter/plugins: Correct comment about offset to line-column conversion (#20506) (overlookmotel)
4047e71 linter/plugins: Improve docs for conformance tests (#20528) (overlookmotel)
6022ddb linter: Add note about options to react/jsx_key (#20484) (connorshea)
5c104ff linter/curly: Fix incorrect examples code (#20421) (KUAI)
Oxfmt v0.42.0
๐ Features
416865a formatter,oxfmt: Add doc comments for JsdocConfig (#20644) (leaysgur)
4fec907 formatter: Add JSDoc comment formatting support (#19828) (Dunqing)
c21c5a7 oxfmt: Support html-in-js substitution (#20193) (leaysgur)
c5aeae4 formatter,oxfmt: Support /* LANG */ comment for gql|html-in-js (#20224) (leaysgur)
๐ Bug Fixes
399e629 formatter: Align more trailing comment cases with prettier (#20636) (#20643) (Andreas Lubbe)
909fb4d formatter: Remove unnecessary parens around TSConstructorType in arrow function return type (#20573) (bab)
828b56a oxfmt: Re-export all nested types (#20636) (leaysgur)
c1b461b oxfmt/lsp: Revert #19977, prefer file extension over languageId for format strategy (#20623) (Sysix)
d35b25f formatter,oxfmt: Remove redundant space after soft_line_break_or_space (#20562) (leaysgur)
f8c452a formatter,oxfmt: Handle css-in-js comment inside template (#20452) (leaysgur)
7c233f4 formatter,oxfmt: Handle nested BinaryExpression for tailwind trailing spaces (#20450) (leaysgur)
71628e6 formatter,oxfmt: Sort imports should not flush Empty line (#20443) (leaysgur)
Original source Report a problem