Oxc Release Notes
163 release notes curated from 1 source by the Releasebot Team. Last updated: Jul 6, 2026
- Jul 6, 2026
- Date parsed from source:Jul 6, 2026
- First seen by Releasebot:Jul 6, 2026
oxlint_v1.73.0: release(apps): oxlint v1.73.0 && oxfmt v0.58.0 (#24219)
Oxc releases Oxlint and Oxfmt updates with new lint rules, broader rule options, faster type-aware linting, and many bug fixes. Oxfmt also adds formatter core improvements and CSS, GraphQL, and JSON formatting refinements, plus performance gains across the toolchain.
Oxlint
π Features
7db7a29 allocator: Add ReplaceWith trait (#24012) (overlookmotel)
a2c97f3 linter/unicorn: Implement explicit-timer-delay rule (#23612) (Mikhail Baev)
85735cb linter/unicorn: Implement no-confusing-array-with rule (#23638) (ShekhuβΊοΈ)
cb4fbb9 linter/eslint: Implement no-unreachable-loop rule (#23975) (Todor Andonov)
dc32112 linter/eslint/no-constant-binary-expression: Check relational comparisons (#24088) (camc314)
439c344 linter/jsdoc: Added missing options to jsdoc/require-param rule (#23364) (kapobajza)
62af717 linter/unicorn/filename-case: Add lowercase and screamingSnakeCase (#24045) (Boshen)
d963967 linter/unicorn/no-array-sort: Add allowAfterSpread option (#24043) (Boshen)
0a75682 linter: Add per-rule timings for type-aware linting (#22488) (camchenry)
743e222 linter/react: Add disallowedValues option for forbid-dom-props rule (#23970) (Mikhail Baev)
π Bug Fixes
7b80010 linter: Use direct binding symbol ids (#24216) (camc314)
8f94b49 linter/import/no-duplicates: Don't flag a type-only import beside a side-effect import (#24030) (Boshen)
d8c3fee linter/react/rules-of-hooks: Flag useEffectEvent escapes (#23764) (Rayan Salhab)
0a7312b linter/no-deprecated-functions: Map require.requireActual to jest.requireActual (#23627) (Jerry Zhao)
d9e3ab3 linter/eslint/no-useless-return: Handle switch case continuation (#23984) (camc314)
0b25582 ast: Type binding node typeAnnotation as TSTypeAnnotation | null (#23113) (Boshen)
122d112 linter/eslint/no-restricted-imports: Flag dynamic import() expressions (#24029) (Boshen)
59b6b83 linter: Avoid OnceLock re-entry on cyclic export * re-exports (#23632) (Jerry Zhao)
dd09af0 linter/import/namespace: Avoid panic on destructuring of an unresolvable namespace re-export (#23626) (Jerry Zhao)
bdb51c7 linter/jest/prefer-ending-with-an-expect: Validate config patterns (#24122) (camc314)
e383843 linter/unicorn/prefer-modern-dom-apis: Skip fixer for non identifier arguments (#23630) (Jerry Zhao)
0ac4c83 linter: Detect circular config extends (#24115) (camc314)
bae1edf linter/import/namespace: Check namespace imports after named imports (#24094) (camc314)
cd8fdfe linter/eslint/no-eval: Recognize Array.from family thisArg (#24091) (camc314)
851ee43 linter/eslint/no-eval: Resolve this binding for functions returned from an IIFE (#23643) (Jerry Zhao)
002ab35 linter/unicorn: Avoid prefer-array-find rest destructuring false positive (#23654) (ColemanDunn)
01c8775 linter/unicorn/filename-case: Keep digits attached in screamingSnakeCase (#24056) (Boshen)
f256941 linter: Recognize @effect/vitest as a vitest import source (#24025) (Boshen)
73eeb1d linter/import/extensions: Honor per-extension never for explicit extensions (#24031) (Boshen)
d4ebe1f linter: Reject non-object oxlint config files (#24026) (Boshen)
45d607d linter/react/forbid-component-props: Make allow/disallow lists optional in schema (#24024) (Boshen)
54076ad linter/unicorn/no-array-for-each: Suggest entries loop for index callbacks (#24004) (camc314)
d057736 linter/jsdoc: Avoid param root underflow (#23945) (camc314)
29c76bf linter/unicorn/prefer-at: Skip object numeric-key access (#23909) (Gaurav Dubey)
β‘ Performance
657a8fc linter/oxc/bad-array-method-on-arguments: Only run on member expressions instead of all identifiers (#24164) (camchenry)
073d9e7 linter/eslint/prefer-rest-params: Run on functions instead of all identifiers (#24163) (camchenry)
e5a4162 linter/jest/no-confusing-set-timeout: Early exit fast path (#24092) (camc314)
bca7ce5 linter: Only run react-perf rules on JSX attribute nodes (#24083) (camchenry)
6881bf6 linter: Compute apply_overrides rule set lazily (#23648) (Jerry Zhao)
911c106 linter/eslint/no-obj-calls: Use resolved reference instead of scope walk (#23895) (Marius Schulz)
dc8fd9a linter/unicorn/prefer-dom-node-text-content: Change dispatch to run only on less common node types (#23897) (Connor Shea)
fdbd34d linter/eslint/no-useless-call: Fast-path static callees (#24077) (camc314)
b1be114 linter/import/extensions: Skip empty config and borrow extensions (#24075) (camc314)
4781b2d linter/eslint/no-obj-calls: Use direct global matches (#24076) (camc314)
e6cee89 linter: Avoid node-chain allocation for non-Jest calls (#23907) (Yagiz Nizipli)
30dc517 linter/typescript/no-restricted-types: O(1) banned-type lookups (#23827) (Yagiz Nizipli)
π Documentation
6ca9125 linter/typescript: Clarify consistent-type-imports behavior (#23972) (camc314)
Oxfmt
π Features
4f4313e formatter_css: Update oxc-css-parser 0.0.5 (#24120) (leaysgur)
0ccd8a1 formatter_graphql: Update oxc-graphql-parser 0.0.5 (#24106) (leaysgur)
89ec3d9 formatter_core: Add literal line and root indention primitives (#24051) (leaysgur)
213a96b formatter_core: Add no-expand-parent for multiline text (#24050) (leaysgur)
0e5bcc9 formatter_graphql: Update oxc-graphql-parser 0.0.4 (#24039) (leaysgur)
e0b35a1 formatter_css: Update [email protected] (#23974) (leaysgur)
π Bug Fixes
1fe6546 formatter: Omit unneeded ; for type members with no-semi (#24212) (leaysgur)
0ad7316 formatter: Print space for ForStatement.update only if exists (#24211) (leaysgur)
3abbed5 formatter: Print ; before jsdoc type-cast parens with no-semi (#24208) (leaysgur)
9af3833 formatter_css: Make scss formatter consistent (#24207) (leaysgur)
46d7194 formatter_css: Use fill IR for @forward members (#24206) (leaysgur)
e31038f formatter_css: Keep comment inside sass config list (#24205) (leaysgur)
d3b9591 formatter: Add parens around await/yield with <T> (#24202) (leaysgur)
2121a55 oxfmt: Reuse tinypool process during the same LSP process (#24197) (leaysgur)
9bf4b4a formatter_css: Align CSS output to Prettier 3.9.1 (#24100) (leaysgur)
cd2452e formatter_css: Align SCSS output to Prettier 3.9.1 (#24097) (leaysgur)
4ee8745 formatter_css: Keep selector value contain line-break without breaking line (#24055) (leaysgur)
e1ece97 formatter_graphql: Break implements list by print-width (#23997) (leaysgur)
0a6b16c formatter_json: Preserve key and literal value for json-stringify (#23996) (leaysgur)
903ab6e formatter_css: Preserve newlines in css-in-js selector list (#23992) (leaysgur)
ea5d095 oxfmt: Update --migrate prettier (#23963) (leaysgur)
β‘ Performance
468e1e3 formatter_core: Make printer queues cursor-based (#24098) (Boshen)
c59f2fe rust: Return impl ExactSizeIterator from slice-backed accessors (#24144) (Boshen)
c292fb2 formatter: Inline fits element dispatcher (#23982) (camc314)
Co-authored-by: Boshen [email protected]
Original source - Jul 6, 2026
- Date parsed from source:Jul 6, 2026
- First seen by Releasebot:Jul 6, 2026
oxfmt_v0.58.0: release(apps): oxlint v1.73.0 && oxfmt v0.58.0 (#24219)
Oxc releases new lint rules, bug fixes, and performance improvements, including richer React, Unicorn, ESLint, JSDoc, and import checks plus per-rule timing for type-aware linting. Oxfmt also adds formatter core updates, CSS and GraphQL parser upgrades, and multiple formatting fixes.
Oxlint
π Features
7db7a29 allocator: Add ReplaceWith trait (#24012) (overlookmotel)
a2c97f3 linter/unicorn: Implement explicit-timer-delay rule (#23612) (Mikhail Baev)
85735cb linter/unicorn: Implement no-confusing-array-with rule (#23638) (ShekhuβΊοΈ)
cb4fbb9 linter/eslint: Implement no-unreachable-loop rule (#23975) (Todor Andonov)
dc32112 linter/eslint/no-constant-binary-expression: Check relational comparisons (#24088) (camc314)
439c344 linter/jsdoc: Added missing options to jsdoc/require-param rule (#23364) (kapobajza)
62af717 linter/unicorn/filename-case: Add lowercase and screamingSnakeCase (#24045) (Boshen)
d963967 linter/unicorn/no-array-sort: Add allowAfterSpread option (#24043) (Boshen)
0a75682 linter: Add per-rule timings for type-aware linting (#22488) (camchenry)
743e222 linter/react: Add disallowedValues option for forbid-dom-props rule (#23970) (Mikhail Baev)
π Bug Fixes
7b80010 linter: Use direct binding symbol ids (#24216) (camc314)
8f94b49 linter/import/no-duplicates: Don't flag a type-only import beside a side-effect import (#24030) (Boshen)
d8c3fee linter/react/rules-of-hooks: Flag useEffectEvent escapes (#23764) (Rayan Salhab)
0a7312b linter/no-deprecated-functions: Map require.requireActual to jest.requireActual (#23627) (Jerry Zhao)
d9e3ab3 linter/eslint/no-useless-return: Handle switch case continuation (#23984) (camc314)
0b25582 ast: Type binding node typeAnnotation as TSTypeAnnotation | null (#23113) (Boshen)
122d112 linter/eslint/no-restricted-imports: Flag dynamic import() expressions (#24029) (Boshen)
59b6b83 linter: Avoid OnceLock re-entry on cyclic export * re-exports (#23632) (Jerry Zhao)
dd09af0 linter/import/namespace: Avoid panic on destructuring of an unresolvable namespace re-export (#23626) (Jerry Zhao)
bdb51c7 linter/jest/prefer-ending-with-an-expect: Validate config patterns (#24122) (camc314)
e383843 linter/unicorn/prefer-modern-dom-apis: Skip fixer for non identifier arguments (#23630) (Jerry Zhao)
0ac4c83 linter: Detect circular config extends (#24115) (camc314)
bae1edf linter/import/namespace: Check namespace imports after named imports (#24094) (camc314)
cd8fdfe linter/eslint/no-eval: Recognize Array.from family thisArg (#24091) (camc314)
851ee43 linter/eslint/no-eval: Resolve this binding for functions returned from an IIFE (#23643) (Jerry Zhao)
002ab35 linter/unicorn: Avoid prefer-array-find rest destructuring false positive (#23654) (ColemanDunn)
01c8775 linter/unicorn/filename-case: Keep digits attached in screamingSnakeCase (#24056) (Boshen)
f256941 linter: Recognize @effect/vitest as a vitest import source (#24025) (Boshen)
73eeb1d linter/import/extensions: Honor per-extension never for explicit extensions (#24031) (Boshen)
d4ebe1f linter: Reject non-object oxlint config files (#24026) (Boshen)
45d607d linter/react/forbid-component-props: Make allow/disallow lists optional in schema (#24024) (Boshen)
54076ad linter/unicorn/no-array-for-each: Suggest entries loop for index callbacks (#24004) (camc314)
d057736 linter/jsdoc: Avoid param root underflow (#23945) (camc314)
29c76bf linter/unicorn/prefer-at: Skip object numeric-key access (#23909) (Gaurav Dubey)
β‘ Performance
657a8fc linter/oxc/bad-array-method-on-arguments: Only run on member expressions instead of all identifiers (#24164) (camchenry)
073d9e7 linter/eslint/prefer-rest-params: Run on functions instead of all identifiers (#24163) (camchenry)
e5a4162 linter/jest/no-confusing-set-timeout: Early exit fast path (#24092) (camc314)
bca7ce5 linter: Only run react-perf rules on JSX attribute nodes (#24083) (camchenry)
6881bf6 linter: Compute apply_overrides rule set lazily (#23648) (Jerry Zhao)
911c106 linter/eslint/no-obj-calls: Use resolved reference instead of scope walk (#23895) (Marius Schulz)
dc8fd9a linter/unicorn/prefer-dom-node-text-content: Change dispatch to run only on less common node types (#23897) (Connor Shea)
fdbd34d linter/eslint/no-useless-call: Fast-path static callees (#24077) (camc314)
b1be114 linter/import/extensions: Skip empty config and borrow extensions (#24075) (camc314)
4781b2d linter/eslint/no-obj-calls: Use direct global matches (#24076) (camc314)
e6cee89 linter: Avoid node-chain allocation for non-Jest calls (#23907) (Yagiz Nizipli)
30dc517 linter/typescript/no-restricted-types: O(1) banned-type lookups (#23827) (Yagiz Nizipli)
π Documentation
6ca9125 linter/typescript: Clarify consistent-type-imports behavior (#23972) (camc314)
Oxfmt
π Features
4f4313e formatter_css: Update oxc-css-parser 0.0.5 (#24120) (leaysgur)
0ccd8a1 formatter_graphql: Update oxc-graphql-parser 0.0.5 (#24106) (leaysgur)
89ec3d9 formatter_core: Add literal line and root indention primitives (#24051) (leaysgur)
213a96b formatter_core: Add no-expand-parent for multiline text (#24050) (leaysgur)
0e5bcc9 formatter_graphql: Update oxc-graphql-parser 0.0.4 (#24039) (leaysgur)
e0b35a1 formatter_css: Update [email protected] (#23974) (leaysgur)
π Bug Fixes
1fe6546 formatter: Omit unneeded ; for type members with no-semi (#24212) (leaysgur)
0ad7316 formatter: Print space for ForStatement.update only if exists (#24211) (leaysgur)
3abbed5 formatter: Print ; before jsdoc type-cast parens with no-semi (#24208) (leaysgur)
9af3833 formatter_css: Make scss formatter consistent (#24207) (leaysgur)
46d7194 formatter_css: Use fill IR for @forward members (#24206) (leaysgur)
e31038f formatter_css: Keep comment inside sass config list (#24205) (leaysgur)
d3b9591 formatter: Add parens around await/yield with <T> (#24202) (leaysgur)
2121a55 oxfmt: Reuse tinypool process during the same LSP process (#24197) (leaysgur)
9bf4b4a formatter_css: Align CSS output to Prettier 3.9.1 (#24100) (leaysgur)
cd2452e formatter_css: Align SCSS output to Prettier 3.9.1 (#24097) (leaysgur)
4ee8745 formatter_css: Keep selector value contain line-break without breaking line (#24055) (leaysgur)
e1ece97 formatter_graphql: Break implements list by print-width (#23997) (leaysgur)
0a6b16c formatter_json: Preserve key and literal value for json-stringify (#23996) (leaysgur)
903ab6e formatter_css: Preserve newlines in css-in-js selector list (#23992) (leaysgur)
ea5d095 oxfmt: Update --migrate prettier (#23963) (leaysgur)
β‘ Performance
468e1e3 formatter_core: Make printer queues cursor-based (#24098) (Boshen)
c59f2fe rust: Return impl ExactSizeIterator from slice-backed accessors (#24144) (Boshen)
c292fb2 formatter: Inline fits element dispatcher (#23982) (camc314)
Co-authored-by: Boshen [email protected]
Original source All of your release notes in one feed
Join Releasebot and get updates from Oxc and hundreds of other software products.
- Jul 6, 2026
- Date parsed from source:Jul 6, 2026
- First seen by Releasebot:Jul 6, 2026
oxc crates_v0.139.0
Oxc releases a broad update with new AST and allocator traits, minifier improvements for boolean ternaries and dead code cleanup, and mangler support for reserved names. It also tightens transformer and React compiler behavior while delivering performance gains and doc updates.
Features
260425f semantic/examples: Include unresolved references (#24214) (camc314)
2d9b0b3 minifier: Fold boolean-literal ternary branches in value contexts (#24110) (Dunqing)
61fbf10 ast: Implement ReplaceWith on all AST types (#24013) (overlookmotel)
7db7a29 allocator: Add ReplaceWith trait (#24012) (overlookmotel)
4eb074e mangler: Add reserved option for names that must not be mangled (#24041) (Dunqing)
2e62012 data_structures: Add StringExt trait (#24006) (overlookmotel)
60e7160 minifier: Drop side-effect-free IIFEs whose result is unused (#23967) (Dunqing)
26dd9e2 ast: Add method to widen inherited enum ref to parent ref (#23961) (overlookmotel)
Bug Fixes
df62046 transformer: Preserve decorated class read bindings (#24231) (camc314)
ce5f40f transformer: Declare temp for renamed anonymous class (#24230) (camc314)
09bd638 transformer: Scope anonymous decorated class bindings correctly (#24229) (camc314)
4b7fa9c transformer: Preserve namespace strict mode flags (#24227) (camc314)
d8ead84 transformer: Correct scoping flags for lowered enums (#24225) (camc314)
e8b50ee transformer: Clean up semantics for stripped TypeScript syntax (#24180) (camc314)
d966d0b react_compiler: Remove clippy allows (#24168) (Boshen)
854ef8d react_compiler: Compile generic functions instead of over-bailing on type-param hoisting (#24158) (Boshen)
093586c react_compiler: Align memoization cache-slot allocation with Babel (#24157) (Boshen)
09c8f59 react_compiler: Normalize snapshot fixture paths (#24142) (camc314)
f13df97 react_compiler: Drop stray empty statement from catch bindings (#24133) (Boshen)
cb2a505 react_compiler: Codegen destructuring reassignment targets (#24131) (Boshen)
b82c394 react_compiler: Propagate codegen invariants instead of emitting empty bodies (#24128) (Boshen)
5771982 react_compiler: Render unchanged programs as source in fixture snapshots (#24129) (Boshen)
4b16e1a transformer/async-to-generator: Preserve direct eval scope flags (#24136) (camc314)
4e9194f react_compiler: Lower delete obj.prop to Property/ComputedDelete (#24123) (Boshen)
0b25582 ast: Type binding node typeAnnotation as TSTypeAnnotation | null (#23113) (Boshen)
018c0e5 transformer: Hoist lowered async declarations (#22770) (camc314)
652fbaf mangler: Keep names of destructured exported bindings (#24036) (Dunqing)
e274415 minifier: Don't drop global calls that throw despite pure arguments (#23917) (Dunqing)
59abb30 minifier: Only merge string literals in try_fold_add when the inner operator is + (#23622) (Jerry Zhao)
Performance
c5ca77b transformer: Avoid cloning refresh options (#24191) (camc314)
bf1a151 react_compiler: Compile out debug printers (#24184) (Boshen)
abb44a0 transformer: Build fixed object-rest arguments (#24190) (camc314)
a4db731 isolated_declarations: Use ReplaceWith instead of TakeIn (#24016) (overlookmotel)
ff10855 transformer: Use ReplaceWith instead of TakeIn (#24015) (overlookmotel)
bd49aff ecmascript: Avoid heap-allocating Math.min/max/imul operands (#23941) (Lawrence Lin)
e4b708b react_compiler: Skip compiled files before prefilters (#24171) (Boshen)
c59f2fe rust: Return impl ExactSizeIterator from slice-backed accessors (#24144) (Boshen)
5d6d04a codegen: SWAR-skip boring byte runs in sourcemap line/column scan (#24023) (Boshen)
a55e0be traverse: Reduce string operations in get_var_name_from_node (#24007) (overlookmotel)
e6d48e1 transformer/nullish_coalescing: Move cold path into separate function (#23989) (overlookmotel)
c4e35b5 transformer/object_rest_spread: Pre-allocate capacity in Vec (#23988) (overlookmotel)
527b8e5 transformer/decorators: Narrow type earlier (#23987) (overlookmotel)
Documentation
1589f54 semantic: Update docs for Scoping::set_symbol_name (#24223) (camc314)
30d17f5 allocator: Clarify docs for TakeIn::take_in_box (#24093) (overlookmotel)
675e6a8 ast: Correct doc comment for PrivateFieldExpression (#24008) (overlookmotel)
e4c30e6 minifier: Explain what dce mode means (#23994) (Dunqing)
37cbf88 ast_macros: Document fields of StructDetails (#23959) (overlookmotel)
4de3e54 ast: Correct doc comment (#23948) (overlookmotel)
Original source - Jul 6, 2026
- Date parsed from source:Jul 6, 2026
- First seen by Releasebot:Jul 6, 2026
oxlint v1.73.0 & oxfmt v0.58.0
Oxc ships Oxlint v1.73.0 and Oxfmt v0.58.0 with new lint rules, broader formatter support, bug fixes, and performance gains. The release also adds per-rule timing for type-aware linting and updates CSS, GraphQL, and JSON formatting behavior.
Table of Contents
Oxlint v1.73.0
Oxfmt v0.58.0
Oxlint v1.73.0
π Features
7db7a29 allocator: Add ReplaceWith trait (#24012) (overlookmotel)
a2c97f3 linter/unicorn: Implement explicit-timer-delay rule (#23612) (Mikhail Baev)
85735cb linter/unicorn: Implement no-confusing-array-with rule (#23638) (ShekhuβΊοΈ)
cb4fbb9 linter/eslint: Implement no-unreachable-loop rule (#23975) (Todor Andonov)
dc32112 linter/eslint/no-constant-binary-expression: Check relational comparisons (#24088) (camc314)
439c344 linter/jsdoc: Added missing options to jsdoc/require-param rule (#23364) (kapobajza)
62af717 linter/unicorn/filename-case: Add lowercase and screamingSnakeCase (#24045) (Boshen)
d963967 linter/unicorn/no-array-sort: Add allowAfterSpread option (#24043) (Boshen)
0a75682 linter: Add per-rule timings for type-aware linting (#22488) (camchenry)
743e222 linter/react: Add disallowedValues option for forbid-dom-props rule (#23970) (Mikhail Baev)
π Bug Fixes
7b80010 linter: Use direct binding symbol ids (#24216) (camc314)
8f94b49 linter/import/no-duplicates: Don't flag a type-only import beside a side-effect import (#24030) (Boshen)
d8c3fee linter/react/rules-of-hooks: Flag useEffectEvent escapes (#23764) (Rayan Salhab)
0a7312b linter/no-deprecated-functions: Map require.requireActual to jest.requireActual (#23627) (Jerry Zhao)
d9e3ab3 linter/eslint/no-useless-return: Handle switch case continuation (#23984) (camc314)
0b25582 ast: Type binding node typeAnnotation as TSTypeAnnotation | null (#23113) (Boshen)
122d112 linter/eslint/no-restricted-imports: Flag dynamic import() expressions (#24029) (Boshen)
59b6b83 linter: Avoid OnceLock re-entry on cyclic export * re-exports (#23632) (Jerry Zhao)
dd09af0 linter/import/namespace: Avoid panic on destructuring of an unresolvable namespace re-export (#23626) (Jerry Zhao)
bdb51c7 linter/jest/prefer-ending-with-an-expect: Validate config patterns (#24122) (camc314)
e383843 linter/unicorn/prefer-modern-dom-apis: Skip fixer for non identifier arguments (#23630) (Jerry Zhao)
0ac4c83 linter: Detect circular config extends (#24115) (camc314)
bae1edf linter/import/namespace: Check namespace imports after named imports (#24094) (camc314)
cd8fdfe linter/eslint/no-eval: Recognize Array.from family thisArg (#24091) (camc314)
851ee43 linter/eslint/no-eval: Resolve this binding for functions returned from an IIFE (#23643) (Jerry Zhao)
002ab35 linter/unicorn: Avoid prefer-array-find rest destructuring false positive (#23654) (ColemanDunn)
01c8775 linter/unicorn/filename-case: Keep digits attached in screamingSnakeCase (#24056) (Boshen)
f256941 linter: Recognize @effect/vitest as a vitest import source (#24025) (Boshen)
73eeb1d linter/import/extensions: Honor per-extension never for explicit extensions (#24031) (Boshen)
d4ebe1f linter: Reject non-object oxlint config files (#24026) (Boshen)
45d607d linter/react/forbid-component-props: Make allow/disallow lists optional in schema (#24024) (Boshen)
54076ad linter/unicorn/no-array-for-each: Suggest entries loop for index callbacks (#24004) (camc314)
d057736 linter/jsdoc: Avoid param root underflow (#23945) (camc314)
29c76bf linter/unicorn/prefer-at: Skip object numeric-key access (#23909) (Gaurav Dubey)
β‘ Performance
657a8fc linter/oxc/bad-array-method-on-arguments: Only run on member expressions instead of all identifiers (#24164) (camchenry)
073d9e7 linter/eslint/prefer-rest-params: Run on functions instead of all identifiers (#24163) (camchenry)
e5a4162 linter/jest/no-confusing-set-timeout: Early exit fast path (#24092) (camc314)
bca7ce5 linter: Only run react-perf rules on JSX attribute nodes (#24083) (camchenry)
6881bf6 linter: Compute apply_overrides rule set lazily (#23648) (Jerry Zhao)
911c106 linter/eslint/no-obj-calls: Use resolved reference instead of scope walk (#23895) (Marius Schulz)
dc8fd9a linter/unicorn/prefer-dom-node-text-content: Change dispatch to run only on less common node types (#23897) (Connor Shea)
fdbd34d linter/eslint/no-useless-call: Fast-path static callees (#24077) (camc314)
b1be114 linter/import/extensions: Skip empty config and borrow extensions (#24075) (camc314)
4781b2d linter/eslint/no-obj-calls: Use direct global matches (#24076) (camc314)
e6cee89 linter: Avoid node-chain allocation for non-Jest calls (#23907) (Yagiz Nizipli)
30dc517 linter/typescript/no-restricted-types: O(1) banned-type lookups (#23827) (Yagiz Nizipli)
π Documentation
6ca9125 linter/typescript: Clarify consistent-type-imports behavior (#23972) (camc314)
Oxfmt v0.58.0
π Features
4f4313e formatter_css: Update oxc-css-parser 0.0.5 (#24120) (leaysgur)
0ccd8a1 formatter_graphql: Update oxc-graphql-parser 0.0.5 (#24106) (leaysgur)
89ec3d9 formatter_core: Add literal line and root indention primitives (#24051) (leaysgur)
213a96b formatter_core: Add no-expand-parent for multiline text (#24050) (leaysgur)
0e5bcc9 formatter_graphql: Update oxc-graphql-parser 0.0.4 (#24039) (leaysgur)
e0b35a1 formatter_css: Update [email protected] (#23974) (leaysgur)
π Bug Fixes
1fe6546 formatter: Omit unneeded ; for type members with no-semi (#24212) (leaysgur)
0ad7316 formatter: Print space for ForStatement.update only if exists (#24211) (leaysgur)
3abbed5 formatter: Print ; before jsdoc type-cast parens with no-semi (#24208) (leaysgur)
9af3833 formatter_css: Make scss formatter consistent (#24207) (leaysgur)
46d7194 formatter_css: Use fill IR for @forward members (#24206) (leaysgur)
e31038f formatter_css: Keep comment inside sass config list (#24205) (leaysgur)
d3b9591 formatter: Add parens around await/yield with <T> (#24202) (leaysgur)
2121a55 oxfmt: Reuse tinypool process during the same LSP process (#24197) (leaysgur)
9bf4b4a formatter_css: Align CSS output to Prettier 3.9.1 (#24100) (leaysgur)
cd2452e formatter_css: Align SCSS output to Prettier 3.9.1 (#24097) (leaysgur)
4ee8745 formatter_css: Keep selector value contain line-break without breaking line (#24055) (leaysgur)
e1ece97 formatter_graphql: Break implements list by print-width (#23997) (leaysgur)
0a6b16c formatter_json: Preserve key and literal value for json-stringify (#23996) (leaysgur)
903ab6e formatter_css: Preserve newlines in css-in-js selector list (#23992) (leaysgur)
ea5d095 oxfmt: Update --migrate prettier (#23963) (leaysgur)
β‘ Performance
468e1e3 formatter_core: Make printer queues cursor-based (#24098) (Boshen)
c59f2fe rust: Return impl ExactSizeIterator from slice-backed accessors (#24144) (Boshen)
c292fb2 formatter: Inline fits element dispatcher (#23982) (camc314)
Original source - Jun 29, 2026
- Date parsed from source:Jun 29, 2026
- First seen by Releasebot:Jun 30, 2026
oxlint_v1.72.0: release(apps): oxlint v1.72.0 && oxfmt v0.57.0 (#23935)
Oxc ships major Oxlint and Oxfmt updates with breaking changes, new CSS and GraphQL formatter support, a unified AST builder, fresh lint rules, autofixes, and broad performance and bug fixes across the toolchain.
Oxlint
π₯ BREAKING CHANGES
- 88f4455 str: [BREAKING] Str and Ident methods take
&GetAllocator (#23781) (overlookmotel)
π Features
- f2091b3 ast: Unify old and new AstBuilders (#23875) (overlookmotel)
- 1c8f50c linter: Add schema for eslint/no-restricted-import (#23642)
(Sysix)
π Bug Fixes
- 7cb85c4 linter/eslint/no-negated-condition: Add autofix for negated
conditions (#23825) (Yagiz Nizipli) - f7d1f50 oxlint, oxfmt: Enable disable_old_builder Cargo feature for
oxc_ast crate (#23886) (overlookmotel) - d891990 linter/jsx-a11y/role-supports-aria-props: Ignore nullish prop
values (#23865) (Mikhail Baev) - 94b6599 linter: Deduplicate missing plugin errors (#23853) (camc314)
- eff3eff linter/oxc/branches-sharing-code: Avoid else-if false
positives (#23843) (camc314) - 2a2d3b9 linter/eslint/prefer-destructuring: Skip
AssignmentExpression autofixes (#23818) (camc314) - ddc24ae linter/eslint/id-length: Respect checkGeneric for mapped type
keys (#23802) (bab) - cd89202 linter/react/exhaustive-deps: Skip wrapper expression when
analyzing hook initializers (#23793) (camc314) - 20e8285 linter/unicorn/prefer-native-coercion-function: Allow ts type
predicates (#23774) (camc314) - d86f60b lsp: Normalize user config path to watch pattern (#23723)
(Sysix) - 52032cf linter: Newline-terminate tsgolint errors (#23762) (Mikhail
Baev) - 368fda7 linter/eslint/no-warning-comments: Avoid dropping generated
regex patterns (#23741) (camc314) - ce44fbd linter/valid-title: Escape disallowed words regex (#23742)
(camc314) - 3100d11 linter/prefer-called-exactly-once-with: Avoid out-of-bounds
slice panic at end of file (#23625) (Jerry Zhao) - 742be36 refactor/node/handle-callback-err: Reject invalid regex config
(#23740) (camc314) - d7be179 linter/eslint/no-restricted-globals: Handle shadowed locals
(#23736) (camc314) - b3b1ff8 linter/vitest/expect-expect: Handle global vitest detection
correctly (#23734) (camc314)
β‘ Performance
- 68f9472 linter/jsx-a11y: Skip lowercasing non-aria attribute names
(#23906) (Lawrence Lin) - b9312b4 linter/unicorn/prefer-export-from: Use keyed binding lookup
(#23893) (Marius Schulz) - cd5204e linter/typescript/no-unsafe-declaration-merging: Use keyed
binding lookup (#23894) (Marius Schulz) - e948498 linter/eslint/prefer-named-capture-group: Only dispatch for
relevant node types (#23868) (Connor Shea) - 4ac7a8e linter/eslint/max-depth: Derive node types (#23896) (Connor
Shea) - daeed09 linter/eslint/no-restricted-globals: Only scan unresolved
references (#23890) (camc314) - e808514 linter/jest-vitest: Speed up no-standalone-expect (#23883)
(camc314) - 8b165e5 linter/react/exhaustive-deps: Skip non-reactive calls early
(#23882) (camc314) - 54005e7 linter/eslint/no-unused-vars: Precompute exported bindings
(#23881) (camc314) - 9bc2f8c linter/unicorn/prefer-number-properties: Speed up global
checks (#23880) (camc314) - 4ff104f linter: Optimize require-hook and prefer-mock-* rules to
run on specific node types (#23871) (Connor Shea) - cc2213b linter: Run no-underscore-dangle only when relevant node
types are present (#23867) (Connor Shea) - 3e55c21 linter/promise/always-return: Narrow to function node types
(#23878) (Connor Shea) - 7136182 linter/jest-vitest: Speed up no-commented-out-tests (#23864)
(camc314) - f138264 linter/eslint/no-script-url: Match javascript: prefix without
allocating (#23861) (Lawrence Lin) - 7ef6895 linter/react/no-array-index-key: Delay index symbol lookup
(#23857) (camc314) - 26bc171 linter/react/no-array-index-key: Match callback methods
directly (#23856) (camc314) - 44fbbda linter/jsx-a11y/interactive-supports-focus: Check cheap
conditions first (#23854) (camc314) - 84a5aa3 linter/eslint/no-extend-native: Skip lowercase references
early (#23851) (camc314) - 88a74b2 linter/eslint/no-nonoctal-decimal-escape: Scan decimal escapes
as bytes (#23850) (camc314) - fca69a8 linter: Skip traversal without this expressions (#23845)
(camc314) - 838fd63 linter: Reduce preallocation for per-file diagnostics Vec
(#23705) (Marius Schulz) - 417b506 linter/typescript/array-type: Remove full source text clone
(#23751) (Marius Schulz)
π Documentation
- 57e4469 linter/unicorn: Update prefer-dom-node-text-content rationale
(#23933) (Mikhail Baev) - 3d61dea all: Correct capitalization in comments (#23887)
(overlookmotel)
π‘οΈ Security
- 3cdd18f deps: Update npm packages (#23690) (renovate[bot])
Oxfmt
π₯ BREAKING CHANGES
- 259e0cd oxfmt,formatter_graphql: [BREAKING] Support draft syntax
with removing prettier fallback (#23326) (leaysgur) - accbc49 oxfmt: [BREAKING] Format parser:css,less,scss files +
css-in-js by oxc_formatter_css (#23321) (leaysgur)
π Features
- dffa4b3 formatter_css: Implement oxc_formatter_css (#23320)
(leaysgur) - 01de9ec oxfmt: Format parser:graphql files by
oxc_formatter_graphql (#23318) (leaysgur) - 4e66212 formatter_graphql: Implement oxc_formatter_graphql (#23317)
(leaysgur)
π Bug Fixes
- 67325ae formatter_css: Handle frontmatter language (#23819) (leaysgur)
- 3f355e5 formatter_graphql: Improve major prettier diffs (#23419)
(leaysgur) - 48e2d78 formatter_css: Improve major prettier diffs (#23327)
(leaysgur) - 8c07cad all: Enable disable_old_builder Cargo feature for oxc_ast
crate in tests (#23888) (overlookmotel) - f7d1f50 oxlint, oxfmt: Enable disable_old_builder Cargo feature for
oxc_ast crate (#23886) (overlookmotel) - d86f60b lsp: Normalize user config path to watch pattern (#23723)
(Sysix)
β‘ Performance
- 4ddcba0 formatter_core: Add printable-ASCII fast path to TextWidth
(#23913) (Lawrence Lin)
π Documentation
- b4d0dc9 oxfmt,formatter,formatter_css,formatter_core: Update AGENTS.md
(#23814) (leaysgur)
Co-authored-by: Boshen [email protected]
Co-authored-by: Cameron [email protected]
Original source Similar to Oxc with recent updates:
- Zed release notes149 release notes Β· Latest Jul 1, 2026
- Flagsmith release notes103 release notes Β· Latest Jul 3, 2026
- Apple release notes137 release notes Β· Latest Jun 25, 2026
- Cursor release notes111 release notes Β· Latest Jul 2, 2026
- Ghostty release notes9 release notes Β· Latest Mar 13, 2026
- Smokeball release notes135 release notes Β· Latest Jul 2, 2026
- Jun 29, 2026
- Date parsed from source:Jun 29, 2026
- First seen by Releasebot:Jun 30, 2026
oxfmt_v0.57.0: release(apps): oxlint v1.72.0 && oxfmt v0.57.0 (#23935)
Oxc releases major updates to Oxlint and Oxfmt with breaking AST and formatter changes, new CSS and GraphQL formatting support, a new eslint/no-restricted-import schema, broad lint rule fixes, and performance improvements across linting and formatting.
Oxlint
π₯ BREAKING CHANGES
88f4455 str: [BREAKING] Str and Ident methods take
&GetAllocator (#23781) (overlookmotel)π Features
f2091b3 ast: Unify old and new AstBuilders (#23875) (overlookmotel)
1c8f50c linter: Add schema for eslint/no-restricted-import (#23642)
(Sysix)π Bug Fixes
7cb85c4 linter/eslint/no-negated-condition: Add autofix for negated
conditions (#23825) (Yagiz Nizipli)f7d1f50 oxlint, oxfmt: Enable disable_old_builder Cargo feature for
oxc_ast crate (#23886) (overlookmotel)d891990 linter/jsx-a11y/role-supports-aria-props: Ignore nullish prop
values (#23865) (Mikhail Baev)94b6599 linter: Deduplicate missing plugin errors (#23853) (camc314)
eff3eff linter/oxc/branches-sharing-code: Avoid else-if false
positives (#23843) (camc314)2a2d3b9 linter/eslint/prefer-destructuring: Skip
AssignmentExpression autofixes (#23818) (camc314)ddc24ae linter/eslint/id-length: Respect checkGeneric for mapped type
keys (#23802) (bab)cd89202 linter/react/exhaustive-deps: Skip wrapper expression when
analyzing hook initializers (#23793) (camc314)20e8285 linter/unicorn/prefer-native-coercion-function: Allow ts type
predicates (#23774) (camc314)d86f60b lsp: Normalize user config path to watch pattern (#23723)
(Sysix)52032cf linter: Newline-terminate tsgolint errors (#23762) (Mikhail
Baev)368fda7 linter/eslint/no-warning-comments: Avoid dropping generated
regex patterns (#23741) (camc314)ce44fbd linter/valid-title: Escape disallowed words regex (#23742)
(camc314)3100d11 linter/prefer-called-exactly-once-with: Avoid out-of-bounds
slice panic at end of file (#23625) (Jerry Zhao)742be36 refactor/node/handle-callback-err: Reject invalid regex config
(#23740) (camc314)d7be179 linter/eslint/no-restricted-globals: Handle shadowed locals
(#23736) (camc314)b3b1ff8 linter/vitest/expect-expect: Handle global vitest detection
correctly (#23734) (camc314)β‘ Performance
68f9472 linter/jsx-a11y: Skip lowercasing non-aria attribute names
(#23906) (Lawrence Lin)b9312b4 linter/unicorn/prefer-export-from: Use keyed binding lookup
(#23893) (Marius Schulz)cd5204e linter/typescript/no-unsafe-declaration-merging: Use keyed
binding lookup (#23894) (Marius Schulz)e948498 linter/eslint/prefer-named-capture-group: Only dispatch for
relevant node types (#23868) (Connor Shea)4ac7a8e linter/eslint/max-depth: Derive node types (#23896) (Connor
Shea)daeed09 linter/eslint/no-restricted-globals: Only scan unresolved
references (#23890) (camc314)e808514 linter/jest-vitest: Speed up no-standalone-expect (#23883)
(camc314)8b165e5 linter/react/exhaustive-deps: Skip non-reactive calls early
(#23882) (camc314)54005e7 linter/eslint/no-unused-vars: Precompute exported bindings
(#23881) (camc314)9bc2f8c linter/unicorn/prefer-number-properties: Speed up global
checks (#23880) (camc314)4ff104f linter: Optimize require-hook and prefer-mock-* rules to
run on specific node types (#23871) (Connor Shea)cc2213b linter: Run no-underscore-dangle only when relevant node
types are present (#23867) (Connor Shea)3e55c21 linter/promise/always-return: Narrow to function node types
(#23878) (Connor Shea)7136182 linter/jest-vitest: Speed up no-commented-out-tests (#23864)
(camc314)f138264 linter/eslint/no-script-url: Match javascript: prefix without
allocating (#23861) (Lawrence Lin)7ef6895 linter/react/no-array-index-key: Delay index symbol lookup
(#23857) (camc314)26bc171 linter/react/no-array-index-key: Match callback methods
directly (#23856) (camc314)44fbbda linter/jsx-a11y/interactive-supports-focus: Check cheap
conditions first (#23854) (camc314)84a5aa3 linter/eslint/no-extend-native: Skip lowercase references
early (#23851) (camc314)88a74b2 linter/eslint/no-nonoctal-decimal-escape: Scan decimal escapes
as bytes (#23850) (camc314)fca69a8 linter: Skip traversal without this expressions (#23845)
(camc314)838fd63 linter: Reduce preallocation for per-file diagnostics Vec
(#23705) (Marius Schulz)417b506 linter/typescript/array-type: Remove full source text clone
(#23751) (Marius Schulz)π Documentation
57e4469 linter/unicorn: Update prefer-dom-node-text-content rationale
(#23933) (Mikhail Baev)3d61dea all: Correct capitalization in comments (#23887)
(overlookmotel)π‘οΈ Security
3cdd18f deps: Update npm packages (#23690) (renovate[bot])
Oxfmt
π₯ BREAKING CHANGES
259e0cd oxfmt,formatter_graphql: [BREAKING] Support draft syntax
with removing prettier fallback (#23326) (leaysgur)accbc49 oxfmt: [BREAKING] Format parser:css,less,scss files +
css-in-js by oxc_formatter_css (#23321) (leaysgur)π Features
dffa4b3 formatter_css: Implement oxc_formatter_css (#23320)
(leaysgur)01de9ec oxfmt: Format parser:graphql files by
oxc_formatter_graphql (#23318) (leaysgur)4e66212 formatter_graphql: Implement oxc_formatter_graphql (#23317)
(leaysgur)π Bug Fixes
67325ae formatter_css: Handle frontmatter language (#23819) (leaysgur)
3f355e5 formatter_graphql: Improve major prettier diffs (#23419)
(leaysgur)48e2d78 formatter_css: Improve major prettier diffs (#23327)
(leaysgur)8c07cad all: Enable disable_old_builder Cargo feature for oxc_ast
crate in tests (#23888) (overlookmotel)f7d1f50 oxlint, oxfmt: Enable disable_old_builder Cargo feature for
oxc_ast crate (#23886) (overlookmotel)d86f60b lsp: Normalize user config path to watch pattern (#23723)
(Sysix)β‘ Performance
4ddcba0 formatter_core: Add printable-ASCII fast path to TextWidth
(#23913) (Lawrence Lin)π Documentation
b4d0dc9 oxfmt,formatter,formatter_css,formatter_core: Update AGENTS.md
(#23814) (leaysgur)Co-authored-by: Boshen [email protected]
Co-authored-by: Cameron [email protected]
Original source - Jun 29, 2026
- Date parsed from source:Jun 29, 2026
- First seen by Releasebot:Jun 30, 2026
oxc crates_v0.138.0
Oxc releases a major update with breaking AstBuilder and allocator changes, new builder and codegen APIs, and broader parser, transformer, minifier, and semantic improvements. It also brings bug fixes, performance gains, and updated docs for a faster, cleaner developer experience.
π₯ BREAKING CHANGES
94fbacb ast: [BREAKING] Only export AstBuilder and NONE in builder module (#23876) (overlookmotel)
8de5122 ecmascript: [BREAKING] Switch to new AstBuilder (#23834) (overlookmotel)
dc0ef38 transformer: [BREAKING] Switch to new AstBuilder (#23831) (overlookmotel)
88f4455 str: [BREAKING] Str and Ident methods take &GetAllocator (#23781) (overlookmotel)
36009dd allocator: [BREAKING] GetAllocator::allocator take &self (#23676) (overlookmotel)
bd74f9d allocator: [BREAKING] Rename AllocatorAccessor trait to GetAllocator (#23675) (overlookmotel)π Features
326fe25 transformer_plugins: Support typeof define keys (#23605) (Alexander Lichter)
f2091b3 ast: Unify old and new AstBuilders (#23875) (overlookmotel)
cd1fd12 codegen: Expose Codegen::print_string API (#23785) (camc314)
785461b ast: Add custom builder methods to AST types (#23651) (overlookmotel)
05d1357 ast: Add AST creation methods to AST types (#23650) (overlookmotel)
2580eda str: Add Str::from_str_in and Ident::from_str_in methods (#23767) (overlookmotel)
6883fcf minifier: Fold write-once falsy var to false in boolean context (#23540) (Dunqing)
fcbf993 allocator: Add Vec::from_value_in method (#23718) (overlookmotel)
989ddb7 allocator: Add Vec::from_box_in method (#23717) (overlookmotel)
9d1aa7f allocator: Improve PartialEq for Vec (#23716) (overlookmotel)π Bug Fixes
beac5d2 parser: Fix clippy warnings (#23943) (overlookmotel)
dcc9a73 minifier: Treat Object.isExtensible/isFrozen/isSealed as pure (#23916) (Dunqing)
da0e5bf minifier: Don't reorder a closed-over TDZ read when inlining a var (#23771) (Dunqing)
0b3021f allocator: Remove Vec::from_box_in (#23873) (overlookmotel)
0ab64ec ast: Silence deprecation warnings within files defining deprecated AstBuilder methods (#23889) (overlookmotel)
8c07cad all: Enable disable_old_builder Cargo feature for oxc_ast crate in tests (#23888) (overlookmotel)
3800f01 ast: Legacy AstBuilder methods take self not &self (#23891) (overlookmotel)
869ac20 semantic/cfg: Connect for update exit to loop test (#23791) (camc314)
d3e92d5 semantic/cfg: Connect while branches from condition exit (#23790) (camc314)
025045d ast: ExportNamedDeclaration plain builder methods return boxed nodes (#23783) (overlookmotel)
7537c58 ast: Fix name of AstBuilder method for Expression::V8IntrinsicExpression (#23766) (overlookmotel)
3f574f5 traverse: Fix unsoundness in Traverse walk functions (#23745) (overlookmotel)
585760f parser: String in AST reference arena (#23721) (overlookmotel)
7231d55 allocator: Fix unsound lifetime extension in Box::new_in (#23685) (overlookmotel)β‘ Performance
d5c916a semantic: Flatten hoisting_variables to avoid per-scope map allocation (#23927) (Lawrence Lin)
e71609d minifier: Bail member-expr folding before the side-effect walk (#23924) (Lawrence Lin)
e1f89ab minifier: Reduce string allocations folding addition (#23846) (overlookmotel)
9f6ee3b isolated-declarations: Pool scope maps to avoid per-scope alloc/rehash (#23761) (Boshen)
0b07c4c semantic: Avoid heap alloc for catch-clause binding ids (#23911) (Lawrence Lin)
c5eef8b regular_expression: Skip capturing-group pre-parse when pattern has no ( (#23908) (Lawrence Lin)
b4f5b4b isolated_declarations: Remove redundant clone of formal parameter pattern (#23912) (Lawrence Lin)
53d083f isolated_declarations: Use TakeIn not CloneIn (#23847) (overlookmotel)
3ea9304 react_compiler: Use faster API to arena allocate strings (#23849) (overlookmotel)
a6d8e45 parser: Avoid span lookup for arrow expression body (#23788) (camc314)
e1886a0 transformer, minifier: Use static_ident! macro to create static Idents (#23727) (overlookmotel)
5527bef transformer/object-rest-spread: Reduce iteration (#23720) (overlookmotel)
680ffbc transformer: Allocate AST nodes in arena directly (#23711) (overlookmotel)
1c63c66 parser: Allocate AST nodes in arena directly (#23712) (overlookmotel)
3855f0c minifier: Allocate AST nodes in arena directly (#23710) (overlookmotel)
d025887 isolated_declarations: Allocate AST nodes in arena directly (#23709) (overlookmotel)
10b96c6 parser: Remove string search from parsing JSX element name (#23713) (overlookmotel)π Documentation
3d61dea all: Correct capitalization in comments (#23887) (overlookmotel)
aa1ad74 ast: Add #[deprecated] to legacy AstBuilder methods (#23877) (overlookmotel)
a4676db ast: Correct doc comment for NONE (#23765) (overlookmotel)
419ec80 syntax: Fix typo in doc comment (#23674) (overlookmotel)π‘οΈ Security
3cdd18f deps: Update npm packages (#23690) (renovate[bot])
Original source - Jun 29, 2026
- Date parsed from source:Jun 29, 2026
- First seen by Releasebot:Jun 30, 2026
oxlint v1.72.0 & oxfmt v0.57.0
Oxc releases Oxlint v1.72.0 and Oxfmt v0.57.0 with breaking API and formatter changes, new React and GraphQL/CSS formatting support, multiple lint rule fixes and autofixes, plus performance improvements across linting and formatting.
Table of Contents
Oxlint v1.72.0
Oxfmt v0.57.0
Oxlint v1.72.0
π₯ BREAKING CHANGES
88f4455 str: [BREAKING] Str and Ident methods take &GetAllocator (#23781) (overlookmotel)
π Features
2428c50 linter/react: Implement suggestion for no-unknown-property rule (#23936) (Mikhail Baev)
f2091b3 ast: Unify old and new AstBuilders (#23875) (overlookmotel)
1c8f50c linter: Add schema for eslint/no-restricted-import (#23642) (Sysix)π Bug Fixes
d8c6b55 linter/unicorn/custom-error-definition: Handle non-ascii class names (#23939) (camc314)
7cb85c4 linter/eslint/no-negated-condition: Add autofix for negated conditions (#23825) (Yagiz Nizipli)
f7d1f50 oxlint, oxfmt: Enable disable_old_builder Cargo feature for oxc_ast crate (#23886) (overlookmotel)
d891990 linter/jsx-a11y/role-supports-aria-props: Ignore nullish prop values (#23865) (Mikhail Baev)
94b6599 linter: Deduplicate missing plugin errors (#23853) (camc314)
eff3eff linter/oxc/branches-sharing-code: Avoid else-if false positives (#23843) (camc314)
2a2d3b9 linter/eslint/prefer-destructuring: Skip AssignmentExpression autofixes (#23818) (camc314)
ddc24ae linter/eslint/id-length: Respect checkGeneric for mapped type keys (#23802) (bab)
cd89202 linter/react/exhaustive-deps: Skip wrapper expression when analyzing hook initializers (#23793) (camc314)
20e8285 linter/unicorn/prefer-native-coercion-function: Allow ts type predicates (#23774) (camc314)
d86f60b lsp: Normalize user config path to watch pattern (#23723) (Sysix)
52032cf linter: Newline-terminate tsgolint errors (#23762) (Mikhail Baev)
368fda7 linter/eslint/no-warning-comments: Avoid dropping generated regex patterns (#23741) (camc314)
ce44fbd linter/valid-title: Escape disallowed words regex (#23742) (camc314)
3100d11 linter/prefer-called-exactly-once-with: Avoid out-of-bounds slice panic at end of file (#23625) (Jerry Zhao)
742be36 refactor/node/handle-callback-err: Reject invalid regex config (#23740) (camc314)
d7be179 linter/eslint/no-restricted-globals: Handle shadowed locals (#23736) (camc314)
b3b1ff8 linter/vitest/expect-expect: Handle global vitest detection correctly (#23734) (camc314)β‘ Performance
68f9472 linter/jsx-a11y: Skip lowercasing non-aria attribute names (#23906) (Lawrence Lin)
b9312b4 linter/unicorn/prefer-export-from: Use keyed binding lookup (#23893) (Marius Schulz)
cd5204e linter/typescript/no-unsafe-declaration-merging: Use keyed binding lookup (#23894) (Marius Schulz)
e948498 linter/eslint/prefer-named-capture-group: Only dispatch for relevant node types (#23868) (Connor Shea)
4ac7a8e linter/eslint/max-depth: Derive node types (#23896) (Connor Shea)
daeed09 linter/eslint/no-restricted-globals: Only scan unresolved references (#23890) (camc314)
e808514 linter/jest-vitest: Speed up no-standalone-expect (#23883) (camc314)
8b165e5 linter/react/exhaustive-deps: Skip non-reactive calls early (#23882) (camc314)
54005e7 linter/eslint/no-unused-vars: Precompute exported bindings (#23881) (camc314)
9bc2f8c linter/unicorn/prefer-number-properties: Speed up global checks (#23880) (camc314)
4ff104f linter: Optimize require-hook and prefer-mock-* rules to run on specific node types (#23871) (Connor Shea)
cc2213b linter: Run no-underscore-dangle only when relevant node types are present (#23867) (Connor Shea)
3e55c21 linter/promise/always-return: Narrow to function node types (#23878) (Connor Shea)
7136182 linter/jest-vitest: Speed up no-commented-out-tests (#23864) (camc314)
f138264 linter/eslint/no-script-url: Match javascript: prefix without allocating (#23861) (Lawrence Lin)
7ef6895 linter/react/no-array-index-key: Delay index symbol lookup (#23857) (camc314)
26bc171 linter/react/no-array-index-key: Match callback methods directly (#23856) (camc314)
44fbbda linter/jsx-a11y/interactive-supports-focus: Check cheap conditions first (#23854) (camc314)
84a5aa3 linter/eslint/no-extend-native: Skip lowercase references early (#23851) (camc314)
88a74b2 linter/eslint/no-nonoctal-decimal-escape: Scan decimal escapes as bytes (#23850) (camc314)
fca69a8 linter: Skip traversal without this expressions (#23845) (camc314)
838fd63 linter: Reduce preallocation for per-file diagnostics Vec (#23705) (Marius Schulz)
417b506 linter/typescript/array-type: Remove full source text clone (#23751) (Marius Schulz)π Documentation
57e4469 linter/unicorn: Update prefer-dom-node-text-content rationale (#23933) (Mikhail Baev)
3d61dea all: Correct capitalization in comments (#23887) (overlookmotel)π‘οΈ Security
3cdd18f deps: Update npm packages (#23690) (renovate[bot])
Oxfmt v0.57.0
π₯ BREAKING CHANGES
259e0cd oxfmt,formatter_graphql: [BREAKING] Support draft syntax with removing prettier fallback (#23326) (leaysgur)
accbc49 oxfmt: [BREAKING] Format parser:css,less,scss files + css-in-js by oxc_formatter_css (#23321) (leaysgur)π Features
dffa4b3 formatter_css: Implement oxc_formatter_css (#23320) (leaysgur)
01de9ec oxfmt: Format parser:graphql files by oxc_formatter_graphql (#23318) (leaysgur)
4e66212 formatter_graphql: Implement oxc_formatter_graphql (#23317) (leaysgur)π Bug Fixes
67325ae formatter_css: Handle frontmatter language (#23819) (leaysgur)
3f355e5 formatter_graphql: Improve major prettier diffs (#23419) (leaysgur)
48e2d78 formatter_css: Improve major prettier diffs (#23327) (leaysgur)
8c07cad all: Enable disable_old_builder Cargo feature for oxc_ast crate in tests (#23888) (overlookmotel)
f7d1f50 oxlint, oxfmt: Enable disable_old_builder Cargo feature for oxc_ast crate (#23886) (overlookmotel)
d86f60b lsp: Normalize user config path to watch pattern (#23723) (Sysix)β‘ Performance
4ddcba0 formatter_core: Add printable-ASCII fast path to TextWidth (#23913) (Lawrence Lin)
π Documentation
b4d0dc9 oxfmt,formatter,formatter_css,formatter_core: Update AGENTS.md (#23814) (leaysgur)
Original source - Jun 22, 2026
- Date parsed from source:Jun 22, 2026
- First seen by Releasebot:Jun 23, 2026
oxlint_v1.71.0: release(apps): oxlint v1.71.0 && oxfmt v0.56.0 (#23707)
Oxc ships Oxlint and Oxfmt updates with a breaking allocator change, new lint rules and schema support, bug fixes across linting and formatting, plus performance improvements and refreshed documentation.
Oxlint
π₯ BREAKING CHANGES
36009dd allocator: [BREAKING] GetAllocator::allocator take &self (#23676) (overlookmotel)
π Features
ff65285 linter: no-restricted-globals add missing upstream options (#23663) (Sysix)
7b8bd89 linter/typescript: Implement suggestion for no-unnecessary-type-constraint rule (#23646) (Mikhail Baev)
0dc2405 linter: Add schema for eslint/no-restricted-properties (#23619) (Sysix)
b638d0e linter: Add schema for node/callback-return (#23615) (Sysix)
eb8bedc linter: Add schema for import/extensions (#23557) (WaterWhisperer)
46f3625 linter: Implement node/no-sync rule (#23589) (fujitani sora)
b01739a linter: Add schema for unicorn/numeric-separators-style (#23554) (Mikhail Baev)
68afd2e linter/node: Implement no-mixed-requires rule (#23539) (fujitani sora)
59d8893 linter: unicorn/numeric-separators-style support missing options (#23524) (Sysix)
a421215 linter: Add schema for eslint/prefer-destructuring (#23410) (WaterWhisperer)
84438be linter/jsdoc: Added missing options to require-param-description (#23416) (kapobajza)
c145b72 linter/jsdoc/require-param-type: Implement fixer (#23513) (camc314)
51910df linter/jsdoc: Add missing options to require-param-type rule (#23418) (kapobajza)
e90925f linter/unicorn: Implement prefer-number-coercion rule (#23497) (ShekhuβΊοΈ)
dd1c866 linter/vue: Implement no-async-in-computed-properties rule (#23493) (bab)
b02444e linter: Add schema for react/jsx-no-script-url (#23475) (WaterWhisperer)
53509a8 minifier: Treeshake pure typed arrays and Set/Map array literals (#23469) (Dunqing)
a8dce46 linter/unicorn: Implement max-nested-calls rule (#23461) (arieleli01212)
π Bug Fixes
b1948a1 linter/radix: Avoid panic on parseInt with a spread radix argument (#23623) (Jerry Zhao)
f28ccfd linter/prefer-query-selector: Use a compound selector for multiple classes (#23628) (Jerry Zhao)
13f2970 linter/prefer-numeric-literals: Avoid panic on parseInt with a spread radix argument (#23624) (Jerry Zhao)
57612b3 linter: Report invalid capitalized-comments ignore patterns (#23608) (camc314)
800ee2a linter/consistent-vitest-vi: Preserve import aliases when rewriting the import (#23568) (Yunfei He)
f78b5e1 linter/consistent-indexed-object-style: Don't leak a stray comma into the value type (#23566) (Yunfei He)
6b104e8 linter/radix: Detect a trailing comma only after the argument (#23569) (Yunfei He)
2de20cb linter/unicorn/prefer-at: Correct two-argument slice().pop() index (#23565) (Yunfei He)
de778ec linter: unicorn/numeric-separators-style preserve dot for floats without decial part (#23553) (Sysix)
651027c linter/curly: Remove only the block's own braces (#23580) (Yunfei He)
687e835 linter/array-type: Parenthesize a conditional-type element (#23579) (Yunfei He)
9c80dff linter/unicorn/no-unnecessary-await: Don't paste operators into invalid syntax (#23556) (Yunfei He)
46e1463 linter/no-compare-neg-zero: Delete the - of a parenthesized -0 (#23578) (Yunfei He)
d172a97 linter/unicorn/prefer-math-trunk: Skip fixer for LHS with side effects (#23548) (camc314)
1c3a9bd linter/unicorn/prefer-negative-index: Don't report Array#with (#23518) (Yunfei He)
c17db5d linter/unicorn/prefer-spread: Don't report .slice() on non-array receivers (#23520) (Yunfei He)
9cd0c2f linter/unicorn/prefer-date-now: Keep BigInt wrapper when fixing BigInt(new Date()) (#23523) (Yunfei He)
16bb890 linter/unicorn/prefer-array-flat: Skip non-array flatMap receivers (#23527) (Yunfei He)
3e6f90f linter/unicorn/no-zero-fractions: Insert a space after any preceding keyword (#23529) (Yunfei He)
79a7d69 linter/eslint/no-useless-assignment: Handle exceptional control-flow paths (#23544) (camc314)
e8e2741 linter/unicorn/prefer-math-min-max: Preserve operand source text in the fix (#23533) (Yunfei He)
f592154 linter/react/display-name: Ignore lowercase jsx helpers (#23510) (camc314)
df7612f linter/jsx-a11y/no-noninteractive-element-to-interactive-role: Allow custom roles config (#23507) (camc314)
924b931 linter/unicorn/prefer-at: Handle checking all indexes correctly (#23504) (camc314)
ca9686b linter/unicorn/prefer-at: Report zero indexes (#23503) (camc314)
e96a4e3 linter/unicorn/explicit-length-check: Ignore optional chains (#23487) (camc314)
a303c23 linter/jsx-a11y: Align anchor-is-valid config with upstream (#23446) (camc314)
f27a6d1 linter: False positives with non *.setTimeout call in no-confusing-set-timeout (#23444) (camc314)
β‘ Performance
8e0dd65 linter: Emit RuleEnum dispatch match once instead of per timing branch (#23499) (Boshen)
d5c7d99 linter/expect-expect: Avoid recompiling matches on every traversal (#23593) (camc314)
f191520 linter/no-useless-spread: Avoid collecting Vec before iterating (#23546) (camc314)
79340d1 linter: Stream React lifecycle ancestors (#23545) (camc314)
1923169 linter/eslint/max-classes: Gate rule by rule config threshold (#23509) (camc314)
3f60de3 linter: Use bucketed dispatch for all files (#23452) (camc314)
3699971 linter/typescript/no-unnecessary-parameter-property-assignment: Avoid temporary vec allocations (#23492) (camc314)
4ef0ceb linter/eslint/no-useless-switch-case: Avoid temporary vec allocations (#23489) (camc314)
2e09dd3 linter: Avoid JSX fragment child collections (#23486) (camc314)
f30a64c linter/oxc/branches-sharing-code: Borrow shared branch suggestion text (#23484) (camc314)
097a317 linter/eslint/no-control-regex: Retain control regex candidates in place (#23482) (camc314)
b3a093d linter: Reuse rule dispatch buckets (#23450) (camc314)
9f1a985 oxlint: Start Tokio only for LSP (#23447) (camc314)
π Documentation
9e219de linter/plugins: Update usage instruction (#23495) (Tony)
b50bf4d linter: Remove manually written options doc for eslint/arrow-body-style (#23490) (Mikhail Baev)
Oxfmt
π₯ BREAKING CHANGES
36009dd allocator: [BREAKING] GetAllocator::allocator take &self (#23676) (overlookmotel)
π Bug Fixes
f21ed2c formatter_json: Normalize CRLF for suppressed text (#23702) (leaysgur)
7cd1737 formatter: Normalize CRLF for suppressed text (#23701) (leaysgur)
a36e444 formatter: Member chain panic when tail is merged with comment in dev build (#23698) (leaysgur)
600d306 formatter: Preserve parens with default export and type cast (#23697) (leaysgur)
61290f2 formatter: Single-member intersection/union type with comment formatting (#21915) (Leonabcd123)
5a1b0b4 formatter: Parenthesize a type assertion used as the base of ** (#23633) (Jerry Zhao)
91827e2 formatter: Use Ordering::reverse() with order: desc for idempotency (#23543) (leaysgur)
8fa7394 formatter_json: Handle wrapped error span (#23472) (leaysgur)
37a34a1 oxfmt/lsp: Avoid newlines line ending changes (#23463) (Sysix)
β‘ Performance
80f1697 formatter: Avoid arena copy for already-lowercase bigint literals (#23534) (Yunfei He)
1a40b71 formatter: Avoid arena copy for borrowed numeric-literal text (#23512) (Yunfei He)
12e4451 formatter: Avoid arena copy for borrowed string-literal text (#23465) (Yunfei He)
Co-authored-by: Boshen [email protected]
Original source - Jun 22, 2026
- Date parsed from source:Jun 22, 2026
- First seen by Releasebot:Jun 23, 2026
oxfmt_v0.56.0: release(apps): oxlint v1.71.0 && oxfmt v0.56.0 (#23707)
Oxc releases a broad Oxlint and Oxfmt update with breaking allocator changes, many new lint rules and schemas, bug fixes, performance boosts, and formatter improvements including CRLF handling and better type and comment formatting.
Oxlint
π₯ BREAKING CHANGES
36009dd allocator: [BREAKING] GetAllocator::allocator take &self (#23676) (overlookmotel)
π Features
ff65285 linter: no-restricted-globals add missing upstream options (#23663) (Sysix)
7b8bd89 linter/typescript: Implement suggestion for no-unnecessary-type-constraint rule (#23646) (Mikhail Baev)
0dc2405 linter: Add schema for eslint/no-restricted-properties (#23619) (Sysix)
b638d0e linter: Add schema for node/callback-return (#23615) (Sysix)
eb8bedc linter: Add schema for import/extensions (#23557) (WaterWhisperer)
46f3625 linter: Implement node/no-sync rule (#23589) (fujitani sora)
b01739a linter: Add schema for unicorn/numeric-separators-style (#23554) (Mikhail Baev)
68afd2e linter/node: Implement no-mixed-requires rule (#23539) (fujitani sora)
59d8893 linter: unicorn/numeric-separators-style support missing options (#23524) (Sysix)
a421215 linter: Add schema for eslint/prefer-destructuring (#23410) (WaterWhisperer)
84438be linter/jsdoc: Added missing options to require-param-description (#23416) (kapobajza)
c145b72 linter/jsdoc/require-param-type: Implement fixer (#23513) (camc314)
51910df linter/jsdoc: Add missing options to require-param-type rule (#23418) (kapobajza)
e90925f linter/unicorn: Implement prefer-number-coercion rule (#23497) (ShekhuβΊοΈ)
dd1c866 linter/vue: Implement no-async-in-computed-properties rule (#23493) (bab)
b02444e linter: Add schema for react/jsx-no-script-url (#23475) (WaterWhisperer)
53509a8 minifier: Treeshake pure typed arrays and Set/Map array literals (#23469) (Dunqing)
a8dce46 linter/unicorn: Implement max-nested-calls rule (#23461) (arieleli01212)
π Bug Fixes
b1948a1 linter/radix: Avoid panic on parseInt with a spread radix argument (#23623) (Jerry Zhao)
f28ccfd linter/prefer-query-selector: Use a compound selector for multiple classes (#23628) (Jerry Zhao)
13f2970 linter/prefer-numeric-literals: Avoid panic on parseInt with a spread radix argument (#23624) (Jerry Zhao)
57612b3 linter: Report invalid capitalized-comments ignore patterns (#23608) (camc314)
800ee2a linter/consistent-vitest-vi: Preserve import aliases when rewriting the import (#23568) (Yunfei He)
f78b5e1 linter/consistent-indexed-object-style: Don't leak a stray comma into the value type (#23566) (Yunfei He)
6b104e8 linter/radix: Detect a trailing comma only after the argument (#23569) (Yunfei He)
2de20cb linter/unicorn/prefer-at: Correct two-argument slice().pop() index (#23565) (Yunfei He)
de778ec linter: unicorn/numeric-separators-style preserve dot for floats without decial part (#23553) (Sysix)
651027c linter/curly: Remove only the block's own braces (#23580) (Yunfei He)
687e835 linter/array-type: Parenthesize a conditional-type element (#23579) (Yunfei He)
9c80dff linter/unicorn/no-unnecessary-await: Don't paste operators into invalid syntax (#23556) (Yunfei He)
46e1463 linter/no-compare-neg-zero: Delete the - of a parenthesized -0 (#23578) (Yunfei He)
d172a97 linter/unicorn/prefer-math-trunk: Skip fixer for LHS with side effects (#23548) (camc314)
1c3a9bd linter/unicorn/prefer-negative-index: Don't report Array#with (#23518) (Yunfei He)
c17db5d linter/unicorn/prefer-spread: Don't report .slice() on non-array receivers (#23520) (Yunfei He)
9cd0c2f linter/unicorn/prefer-date-now: Keep BigInt wrapper when fixing BigInt(new Date()) (#23523) (Yunfei He)
16bb890 linter/unicorn/prefer-array-flat: Skip non-array flatMap receivers (#23527) (Yunfei He)
3e6f90f linter/unicorn/no-zero-fractions: Insert a space after any preceding keyword (#23529) (Yunfei He)
79a7d69 linter/eslint/no-useless-assignment: Handle exceptional control-flow paths (#23544) (camc314)
e8e2741 linter/unicorn/prefer-math-min-max: Preserve operand source text in the fix (#23533) (Yunfei He)
f592154 linter/react/display-name: Ignore lowercase jsx helpers (#23510) (camc314)
df7612f linter/jsx-a11y/no-noninteractive-element-to-interactive-role: Allow custom roles config (#23507) (camc314)
924b931 linter/unicorn/prefer-at: Handle checking all indexes correctly (#23504) (camc314)
ca9686b linter/unicorn/prefer-at: Report zero indexes (#23503) (camc314)
e96a4e3 linter/unicorn/explicit-length-check: Ignore optional chains (#23487) (camc314)
a303c23 linter/jsx-a11y: Align anchor-is-valid config with upstream (#23446) (camc314)
f27a6d1 linter: False positives with non *.setTimeout call in no-confusing-set-timeout (#23444) (camc314)
β‘ Performance
8e0dd65 linter: Emit RuleEnum dispatch match once instead of per timing branch (#23499) (Boshen)
d5c7d99 linter/expect-expect: Avoid recompiling matches on every traversal (#23593) (camc314)
f191520 linter/no-useless-spread: Avoid collecting Vec before iterating (#23546) (camc314)
79340d1 linter: Stream React lifecycle ancestors (#23545) (camc314)
1923169 linter/eslint/max-classes: Gate rule by rule config threshold (#23509) (camc314)
3f60de3 linter: Use bucketed dispatch for all files (#23452) (camc314)
3699971 linter/typescript/no-unnecessary-parameter-property-assignment: Avoid temporary vec allocations (#23492) (camc314)
4ef0ceb linter/eslint/no-useless-switch-case: Avoid temporary vec allocations (#23489) (camc314)
2e09dd3 linter: Avoid JSX fragment child collections (#23486) (camc314)
f30a64c linter/oxc/branches-sharing-code: Borrow shared branch suggestion text (#23484) (camc314)
097a317 linter/eslint/no-control-regex: Retain control regex candidates in place (#23482) (camc314)
b3a093d linter: Reuse rule dispatch buckets (#23450) (camc314)
9f1a985 oxlint: Start Tokio only for LSP (#23447) (camc314)
π Documentation
9e219de linter/plugins: Update usage instruction (#23495) (Tony)
b50bf4d linter: Remove manually written options doc for eslint/arrow-body-style (#23490) (Mikhail Baev)
Oxfmt
π₯ BREAKING CHANGES
36009dd allocator: [BREAKING] GetAllocator::allocator take &self (#23676) (overlookmotel)
π Bug Fixes
f21ed2c formatter_json: Normalize CRLF for suppressed text (#23702) (leaysgur)
7cd1737 formatter: Normalize CRLF for suppressed text (#23701) (leaysgur)
a36e444 formatter: Member chain panic when tail is merged with comment in dev build (#23698) (leaysgur)
600d306 formatter: Preserve parens with default export and type cast (#23697) (leaysgur)
61290f2 formatter: Single-member intersection/union type with comment formatting (#21915) (Leonabcd123)
5a1b0b4 formatter: Parenthesize a type assertion used as the base of ** (#23633) (Jerry Zhao)
91827e2 formatter: Use Ordering::reverse() with order: desc for idempotency (#23543) (leaysgur)
8fa7394 formatter_json: Handle wrapped error span (#23472) (leaysgur)
37a34a1 oxfmt/lsp: Avoid newlines line ending changes (#23463) (Sysix)
β‘ Performance
80f1697 formatter: Avoid arena copy for already-lowercase bigint literals (#23534) (Yunfei He)
1a40b71 formatter: Avoid arena copy for borrowed numeric-literal text (#23512) (Yunfei He)
12e4451 formatter: Avoid arena copy for borrowed string-literal text (#23465) (Yunfei He)
Co-authored-by: Boshen [email protected]
Original source - Jun 22, 2026
- Date parsed from source:Jun 22, 2026
- First seen by Releasebot:Jun 23, 2026
oxlint v1.71.0 & oxfmt v0.56.0
Oxc releases Oxlint v1.71.0 and Oxfmt v0.56.0 with new lint rule support, expanded schemas and fixers, plus bug fixes and performance improvements across the linter and formatter.
Table of Contents
Oxlint v1.71.0
Oxfmt v0.56.0
Oxlint v1.71.0
π Features
ff65285 linter: no-restricted-globals add missing upstream options (#23663) (Sysix)
7b8bd89 linter/typescript: Implement suggestion for no-unnecessary-type-constraint rule (#23646) (Mikhail Baev)
0dc2405 linter: Add schema for eslint/no-restricted-properties (#23619) (Sysix)
b638d0e linter: Add schema for node/callback-return (#23615) (Sysix)
eb8bedc linter: Add schema for import/extensions (#23557) (WaterWhisperer)
46f3625 linter: Implement node/no-sync rule (#23589) (fujitani sora)
b01739a linter: Add schema for unicorn/numeric-separators-style (#23554) (Mikhail Baev)
68afd2a linter/node: Implement no-mixed-requires rule (#23539) (fujitani sora)
59d8893 linter: unicorn/numeric-separators-style support missing options (#23524) (Sysix)
a421215 linter: Add schema for eslint/prefer-destructuring (#23410) (WaterWhisperer)
84438be linter/jsdoc: Added missing options to require-param-description (#23416) (kapobajza)
c145b72 linter/jsdoc/require-param-type: Implement fixer (#23513) (camc314)
51910df linter/jsdoc: Add missing options to require-param-type rule (#23418) (kapobajza)
e90925f linter/unicorn: Implement prefer-number-coercion rule (#23497) (ShekhuβΊοΈ)
dd1c866 linter/vue: Implement no-async-in-computed-properties rule (#23493) (bab)
b02444e linter: Add schema for react/jsx-no-script-url (#23475) (WaterWhisperer)
53509a8 minifier: Treeshake pure typed arrays and Set/Map array literals (#23469) (Dunqing)
a8dce46 linter/unicorn: Implement max-nested-calls rule (#23461) (arieleli01212)π Bug Fixes
b1948a1 linter/radix: Avoid panic on parseInt with a spread radix argument (#23623) (Jerry Zhao)
f28ccfd linter/prefer-query-selector: Use a compound selector for multiple classes (#23628) (Jerry Zhao)
13f2970 linter/prefer-numeric-literals: Avoid panic on parseInt with a spread radix argument (#23624) (Jerry Zhao)
57612b3 linter: Report invalid capitalized-comments ignore patterns (#23608) (camc314)
800ee2a linter/consistent-vitest-vi: Preserve import aliases when rewriting the import (#23568) (Yunfei He)
f78b5e1 linter/consistent-indexed-object-style: Don't leak a stray comma into the value type (#23566) (Yunfei He)
6b104e8 linter/radix: Detect a trailing comma only after the argument (#23569) (Yunfei He)
2de20cb linter/unicorn/prefer-at: Correct two-argument slice().pop() index (#23565) (Yunfei He)
de778ec linter: unicorn/numeric-separators-style preserve dot for floats without decial part (#23553) (Sysix)
651027c linter/curly: Remove only the block's own braces (#23580) (Yunfei He)
687e835 linter/array-type: Parenthesize a conditional-type element (#23579) (Yunfei He)
9c80dff linter/unicorn/no-unnecessary-await: Don't paste operators into invalid syntax (#23556) (Yunfei He)
46e1463 linter/no-compare-neg-zero: Delete the - of a parenthesized -0 (#23578) (Yunfei He)
d172a97 linter/unicorn/prefer-math-trunk: Skip fixer for LHS with side effects (#23548) (camc314)
1c3a9bd linter/unicorn/prefer-negative-index: Don't report Array#with (#23518) (Yunfei He)
c17db5d linter/unicorn/prefer-spread: Don't report .slice() on non-array receivers (#23520) (Yunfei He)
9cd0c2f linter/unicorn/prefer-date-now: Keep BigInt wrapper when fixing BigInt(new Date()) (#23523) (Yunfei He)
16bb890 linter/unicorn/prefer-array-flat: Skip non-array flatMap receivers (#23527) (Yunfei He)
3e6f90f linter/unicorn/no-zero-fractions: Insert a space after any preceding keyword (#23529) (Yunfei He)
79a7d69 linter/eslint/no-useless-assignment: Handle exceptional control-flow paths (#23544) (camc314)
e8e2741 linter/unicorn/prefer-math-min-max: Preserve operand source text in the fix (#23533) (Yunfei He)
f592154 linter/react/display-name: Ignore lowercase jsx helpers (#23510) (camc314)
df7612f linter/jsx-a11y/no-noninteractive-element-to-interactive-role: Allow custom roles config (#23507) (camc314)
924b931 linter/unicorn/prefer-at: Handle checking all indexes correctly (#23504) (camc314)
ca9686b linter/unicorn/prefer-at: Report zero indexes (#23503) (camc314)
e96a4e3 linter/unicorn/explicit-length-check: Ignore optional chains (#23487) (camc314)
a303c23 linter/jsx-a11y: Align anchor-is-valid config with upstream (#23446) (camc314)
f27a6d1 linter: False positives with non *.setTimeout call in no-confusing-set-timeout (#23444) (camc314)β‘ Performance
8e0dd65 linter: Emit RuleEnum dispatch match once instead of per timing branch (#23499) (Boshen)
d5c7d99 linter/expect-expect: Avoid recompiling matches on every traversal (#23593) (camc314)
f191520 linter/no-useless-spread: Avoid collecting Vec before iterating (#23546) (camc314)
79340d1 linter: Stream React lifecycle ancestors (#23545) (camc314)
1923169 linter/eslint/max-classes: Gate rule by rule config threshold (#23509) (camc314)
3f60de3 linter: Use bucketed dispatch for all files (#23452) (camc314)
3699971 linter/typescript/no-unnecessary-parameter-property-assignment: Avoid temporary vec allocations (#23492) (camc314)
4ef0ceb linter/eslint/no-useless-switch-case: Avoid temporary vec allocations (#23489) (camc314)
2e09dd3 linter: Avoid JSX fragment child collections (#23486) (camc314)
f30a64c linter/oxc/branches-sharing-code: Borrow shared branch suggestion text (#23484) (camc314)
097a317 linter/eslint/no-control-regex: Retain control regex candidates in place (#23482) (camc314)
b3a093d linter: Reuse rule dispatch buckets (#23450) (camc314)
9f1a985 oxlint: Start Tokio only for LSP (#23447) (camc314)π Documentation
9e219de linter/plugins: Update usage instruction (#23495) (Tony)
b50bf4d linter: Remove manually written options doc for eslint/arrow-body-style (#23490) (Mikhail Baev)Oxfmt v0.56.0
π Bug Fixes
f21ed2c formatter_json: Normalize CRLF for suppressed text (#23702) (leaysgur)
7cd1737 formatter: Normalize CRLF for suppressed text (#23701) (leaysgur)
a36e444 formatter: Member chain panic when tail is merged with comment in dev build (#23698) (leaysgur)
600d306 formatter: Preserve parens with default export and type cast (#23697) (leaysgur)
61290f2 formatter: Single-member intersection/union type with comment formatting (#21915) (Leonabcd123)
5a1b0b4 formatter: Parenthesize a type assertion used as the base of ** (#23633) (Jerry Zhao)
91827e2 formatter: Use Ordering::reverse() with order: desc for idempotency (#23543) (leaysgur)
8fa7394 formatter_json: Handle wrapped error span (#23472) (leaysgur)
37a34a1 oxfmt/lsp: Avoid newlines line ending changes (#23463) (Sysix)β‘ Performance
80f1697 formatter: Avoid arena copy for already-lowercase bigint literals (#23534) (Yunfei He)
Original source
1a40b71 formatter: Avoid arena copy for borrowed numeric-literal text (#23512) (Yunfei He)
12e4451 formatter: Avoid arena copy for borrowed string-literal text (#23465) (Yunfei He) - Jun 18, 2026
- Date parsed from source:Jun 18, 2026
- First seen by Releasebot:Jun 18, 2026
oxc crates_v0.137.0
Oxc ships breaking ESTree config changes, adds CodeBuffer::as_str and friendlier JSX parsing errors, and improves minifier, parser, react compiler, and mangler behavior with multiple bug fixes and performance gains.
BREAKING CHANGES
7a76cd3 estree: [BREAKING] Make whether to include TS fields a runtime option (#23574) (overlookmotel)
e7b6b68 estree: [BREAKING] ESTree config use methods not consts (#23573) (overlookmotel)
Features
556cc6d data_structures: Add CodeBuffer::as_str method (#23571) (overlookmotel)
38c4b06 parser: Add friendly error for adjacent JSX elements (#23378) (sapphi-red)
53509a8 minifier: Treeshake pure typed arrays and Set/Map array literals (#23469) (Dunqing)
09762d9 minifier: Inline const value for read-only vars (#22593) (Dunqing)
Bug Fixes
20375f9 react_compiler: Keep imports referenced only by a computed key (#23586) (Boshen)
31bfd9b minifier: Keep Object introspection calls on a possible Proxy (#23483) (Dunqing)
837a395 parser: Treat a line comment after ':' as leading, not trailing (#23515) (Dunqing)
e409fe0 minifier: Keep new Map/WeakSet/WeakMap with a string argument (#23470) (Dunqing)
ae02b4e ci/parser: Use minimal for vitest reporter (#23457) (camc314)
Performance
cf24329 mangler: Compile slot sort once instead of per CAPACITY (#23577) (Boshen)
4058a6a parser: Reduce code bloat from verify_modifiers monomorphization (#23576) (Boshen)
053b0c1 estree: Remove pointless mem::take (#23572) (overlookmotel)
dfb52b6 transformer: Pre-size statement vecs in TS enum & namespace lowering (#23516) (Yunfei He)
970e09a minifier: Compute template-literal inline checks in a single pass (#23467) (Yunfei He)
3170c0e semantic,mangler,minifier: Fix Semantic::stats node count and reuse stats in mangler builds (#23352) (Boshen)
d1fa6e0 minifier: Evaluate ternary branches once in minimize_conditional_expression (#23479) (Yunfei He)
3fa8051 transformer: Pre-size JSX props vec to attribute count (#23466) (Yunfei He)
488b382 react_compiler: Borrow binding names in prefilter instead of allocating (#23471) (Yunfei He)
bcb3894 minifier: Incremental scoping refresh, delete LiveUsageCollector (#23197) (Dunqing)
Documentation
f68641e data_structures: Improve docs on safety contract (#23575) (overlookmotel)
Original source - Jun 15, 2026
- Date parsed from source:Jun 15, 2026
- First seen by Releasebot:Jun 16, 2026
oxlint_v1.70.0: release(apps): oxlint v1.70.0 && oxfmt v0.55.0 (#23442)
Oxc releases a broad update to its linter and formatter with new rule implementations, expanded schema coverage, stronger config validation, bug fixes, performance gains, and refreshed documentation, while Oxfmt adds JSON stringify formatting and improved JSON handling.
Oxlint
π Features
5e1627d linter/unicorn: Flag all Error() calls without new in throw-new-error (#23363) (Cason Kervis)
2e8bda4 linter/vue: Implement no-dupe-keys rule (#23350) (bab)
1490a0a linter/react: Implement react-compiler rule (#23202) (Boshen)
dd560ae linter/unicorn: Implement no-array-fill-with-reference-type rule (#23397) (Mikhail Baev)
af36c2f linter: Add schema for react/jsx-curly-brace-presence (#23400) (WaterWhisperer)
47d34a3 linter: Add schema for react/jsx-handler-names (#23393) (WaterWhisperer)
f4250d0 linter: Add schema for unicorn/import-style (#23386) (WaterWhisperer)
30c74ce linter: Add schema for jsx_a11y/no-noninteractive-element-to-interactive-role (#23384) (Sysix)
cfbe8dc linter: Add schema for jsx_a11y/no-interactive-element-to-noninteractive-role (#23382) (WaterWhisperer)
d15b7ff linter: Add schema for typescript/no-restricted-types (#23381) (WaterWhisperer)
028a811 linter: Add schema for jsx-a11y/media-has-caption (#23377) (Sysix)
b3b1038 linter: Add schema for jsx-a11y/label-has-associated-control (#23376) (Sysix)
7ada6b2 linter: Add schema for jsx_a11y/no-distracting-elements (#23379) (WaterWhisperer)
ee3dd49 linter: Add schema for jsx-a11y/img-redundant-alt (#23374) (Sysix)
df5f8dd linter: Add short descriptions to most lint rules. (#23365) (Connor Shea)
e3fd735 linter: Add schema for jsx_a11y/alt-text (#23369) (Sysix)
0f2fff4 linter: Add schema for react/exhaustive-deps (#23372) (Mikhail Baev)
e3e4e10 linter: Add schema for react_perf/jsx-no-new-object-as-prop (#23368) (Mikhail Baev)
9366d44 linter: Add schema for unicorn/prefer-at (#23366) (WaterWhisperer)
f57b55d linter: Add schema for typescript/array-type (#23355) (Sysix)
0dcf912 linter: Add schema for typescript/ban-ts-comment (#23354) (Sysix)
51fa83e linter: Add schema for react/no-did-update-set-state (#23357) (Mikhail Baev)
59db0bd linter: Add schema for consistent-generic-constructors (#23353) (Sysix)
c4775c0 linter: Add schema for typescript/consistent-type-assertions (#23349) (Sysix)
6e516f7 linter: Add schema for typescript/consistent-type-imports (#23348) (Sysix)
012134d linter: Add schema for react/jsx-no-target-blank (#23345) (WaterWhisperer)
0806aae linter: Add schema for jsx_a11y/no-noninteractive-tabindex (#23337) (Mikhail Baev)
0708b5a linter: Add schema for react/jsx-filename-extension (#23315) (Mikhail Baev)
150bce1 linter: Add schema for typescript/no-empty-object-type (#23309) (Sysix)
f9e36f1 linter: Add schema for typescript/no-duplicate-type-constituents (#23308) (Sysix)
937accf linter: Add schema for typescript/no-invalid-void-type (#23307) (Sysix)
3e042b9 linter: Add schema for typescript/no-misused-promises (#23306) (Sysix)
da212d1 linter: Add schema for typescript/no-unnecessary-condition (#23305) (Sysix)
f8f0d38 linter: Add schema for typescript/parameter-properties (#23304) (Sysix)
2275fc7 linter: Add schema for typescript/prefer-nullish-coalescing (#23302) (Sysix)
d353858 linter: Add schema for typescript/prefer-string-starts-ends-with (#23301) (Sysix)
03060f5 linter: Add schema for typescript/triple-slash-reference (#23300) (Sysix)
6619cee linter: Add schema for promise/param-names (#23298) (Sysix)
8bf108e linter: Add schema for promise/catch-or-return (#23297) (Sysix)
48158d0 linter: Add schema for vitest/consistent-each-for (#23294) (Sysix)
7e74c98 linter: Add schema for vitest/consistent-test-filename (#23293) (Sysix)
ff94d4a linter: Add schema for vitest/consistent-vitest-vi (#23292) (Sysix)
2409a10 linter: Add schema for vitest/prefer-import-in-mock (#23291) (Sysix)
3d782b7 linter: Add schema for react/no-unstable-nested-components (#23287) (Mikhail Baev)
0a0bc2f linter/jsx-a11y: Add allowedRedundantRoles option to no-redundant-roles (#22820) (bab)
80758a5 linter/vue: Implement no-side-effects-in-computed-properties rule (#23282) (bab)
e3869ac linter: Add schema for react/no-object-type-as-default-prop (#23279) (Mikhail Baev)
4480609 linter: Add schema for react/jsx-props-no-spreading (#23276) (Mikhail Baev)
08d68a5 linter/react: Implement jsx-no-literals rule (#23145) (kapobajza)
9a2788b linter/unicorn: Implement prefer-export-from rule (#22935) (AliceLanniste)
bdb723c linter/unicorn: Implement prefer-single-call rule (#23235) (Yuzhe Shi)
31543ed linter: Add schema for vue/define-props-destructuring (#23252) (Sysix)
21b6c3d linter: Add schema for oxc/no-async-endpoint-handlers (#23251) (Sysix)
e77ff81 linter: Add schema for unicorn/prefer-object-from-entries (#23249) (Mikhail Baev)
bcac2d6 linter: Add schema for jest/vitest/no-restricted-matchers (#23247) (Sysix)
539f036 linter: Add schema for jest/vitest/no-restricted-*-methods (#23246) (Sysix)
dd1b927 linter/vue: Implement require-default-prop rule (#22951) (bab)
3f018e7 linter: Add schema for unicorn/no-instanceof-builtins (#23225) (Mikhail Baev)
5b9a793 linter/react-perf: Support nativeAllowList config (#22996) (Cole Ellison)
b4e19d4 linter: Improve promise/catch-or-return termination diagnostics (#23218) (camc314)
9b72a41 linter/promise/catch-or-return: Add support for allowThenStrict option (#23206) (camc314)
e0d0f78 linter: Verify promise/no-callback-in-promise schema (#23141) (beanscg)
123d4f4 linter: Add schema for jest/vitest/valid-expect (#23185) (Sysix)
46c8a21 linter: Add schema for jest/vitest/require-top-level-describe (#23184) (Sysix)
41465cf linter: Add schema for jest/vitest/prefer-snapshot-hint (#23183) (Sysix)
d068b9b linter: Add schema for jest/vitest/prefer-expect-assertions (#23181) (Sysix)
064a1ee linter: Add schema for jest/prefer-ending-with-an-expect (#23180) (Sysix)
d046797 linter: Add schema for jest/vitest/no-standalone-expect (#23179) (Sysix)
137b9a6 linter: Add schema for jest/vitest/no-large-snapshots (#23178) (Sysix)
0f3e4a5 linter: Add schema for jest/vitest/no-hooks (#23177) (Sysix)
00244d8 parser: Report definite property initializer errors (#23160) (camc314)
cd0b384 linter: Add schema for unicorn/explicit-length-check (#23155) (Mikhail Baev)
01b74c4 linter: Add schema for jest/no-deprecated-functions (#23136) (Sysix)
9d6a387 linter: Add schema for unicorn/catch-error-name (#23137) (Mikhail Baev)
0da8efa linter: Add schema for jest/vitest/max-nested-describe (#23131) (Sysix)
d71c9fd linter: Add schema for eslint/no-use-before-define (#23129) (Sysix)
π Bug Fixes
019be2e linter/unicorn: Align throw-new-error parity (#23437) (camc314)
b9e5e51 linter/jest: Validate no-restricted-jest-methods config (#23436) (camc314)
f302f41 linter: Normalize oxlint jsPlugin prefixes (#23335) (konh)
2bdf8ce linter/jest: Validate no-restricted-matchers config (#23434) (camc314)
5c2fb45 linter/eslint: Validate max-depth config (#23430) (camc314)
eafc280 linter/eslint: Validate no-unused-vars config (#23433) (camc314)
25aebb0 linter/typescript: Validate no-empty-object-type config (#23432) (camc314)
7cafe3b linter/unicorn: Validate catch-error-name config (#23431) (camc314)
af1b897 linter/unicorn: Validate prefer-object-from-entries config (#23429) (camc314)
68d48fe linter/eslint: Validate max-classes-per-file config (#23428) (camc314)
02932b6 linter/eslint: Validate complexity config (#23427) (camc314)
375e574 linter/eslint: Use shared id-length regex config (#23426) (camc314)
ba3e2e0 linter/eslint: Preserve used imports in no-unused-vars fixer (#23425) (camc314)
26ddac6 linter: Avoid config schema generation for jsx_a11y/no-noninteractive-element-interactions (#23385) (Sysix)
40556ad linter: Parse jsx-a11y/control-has-associated-label config with DefaultRuleConfig (#23373) (Sysix)
dacbda8 linter/unicorn/prefer-string-starts-ends-with: Mark rule as deprecated (#23342) (camc314)
956309a lsp: Use protocol line breaks for positions (#23329) (konh)
71e9648 linter: Expose no-noninteractive-element-interactions schema (#23283) (camc314)
4c4c19c linter: no-noninteractive-element-interactions fix default values (#23288) (Sysix)
e63a139 linter/jsx-a11y: Restore control label defaults (#22737) (konh)
0e4e59f linter/jsx-a11y: No-redundant-roles attribute-aware implicit roles for <input>, skip ancestor-conditional elements (#23015) (Gaurav Dubey)
06e215e linter/vitest: Validate consistent-each-for config (#23278) (camc314)
cd278e1 linter/promise: Validate param-names config (#23277) (camc314)
7f46013 linter/react/display-name: Handle default export function correctly (#23271) (camc314)
22ff6a6 linter/unicorn: Deserialize filename-case config with serde (#23266) (camc314)
b644da0 linter/eslint: Add fixer for sort_vars (#23262) (Cason Kervis)
778af4d linter/unicorn: Support array of patterns for unicorn/filename-case ignore option (#23260) (kapobajza)
127fb2c linter: Deserialize rule config with serde for unicorn/prefer-object-from-entries (#23253) (Sysix)
f89b909 linter/react/jsx-no-target-blank: Handle compound conditions (#23245) (camc314)
c30419a linter/typescript: Deserialize rule config with serde for consistent-generic-constructors (#23238) (camc314)
7d17d37 linter/react: Report invalid exhaustive-deps config (#23239) (camc314)
1060186 linter/eslint: Add deny_unknown_fields to prefer-destructuring (#23237) (camc314)
fd2e4eb linter/react: Add deny_unknown_fields to exhaustive-deps (#23236) (camc314)
6c3c904 linter/react/jsx-curly-brace-presence: Avoid false positive with comment within braces (#23234) (camc314)
6c86d1c linter/react-perf: Correct nativeAllowList all schema (#23229) (camc314)
c393760 linter/react/rules-of-hooks: Align try/catch semantics (#23221) (camc314)
4dd52de linter/react-perf: Re-generate stale snapshots (#23228) (camc314)
de2d23b linter/unicorn/prefer-dom-node-dataset: Preserve optional chaining in fixer (#23148) (Bruno Carvalho)
d7038de linter/react/exhaustive-deps: Ignore non React namespace hooks (#23175) (camc314)
7111903 linter/react/exhaustive-deps: FP with wrapped literal expressions (#23172) (camc314)
93326e7 linter/react: Align hook errors with anonomous async callbacks (#23158) (camc314)
8f3db61 linter: Allow options for eslint/capitalized-comments (#23139) (Sysix)
f533565 linter: Support nofunc string option in no-use-before-define (#23115) (bab)
β‘ Performance
f09707e linter: jest/no-deprecated-functions store config version as usize (#23138) (Sysix)
da1a6c6 diagnostics: Migrate to allocation-optimized oxc-miette (#23094) (Boshen)
π Documentation
f682e25 linter: Remove manually written options doc for eslint/prefer-arrow-callback (#23438) (Mikhail Baev)
64c942c linter: Remove manually written options doc for eslint/no-sequences (#23420) (Mikhail Baev)
d6d1189 linter: Add short_descriptions to more rules (#23417) (Connor Shea)
b979722 linter: Clarify valid-define-emits description (#23408) (camc314)
ccd0a69 linter: Clarify only-used-in-recursion description (#23407) (camc314)
b0fd30b linter: Clarify no-sync-scripts description (#23406) (camc314)
c23290d linter: Clarify no-cycle description (#23405) (camc314)
3612e0b linter: Clarify no-nodejs-modules description (#23403) (camc314)
c67c5b1 linter: Clarify no-misused-new description (#23402) (camc314)
88bf0bc linter: Clarify require-render-return description (#23401) (camc314)
9fff263 linter: Add short descriptions to more rules that lacked them (#23389) (Connor Shea)
ac69042 linter: Add short_description fields to more lint rules (#23391) (Connor Shea)
99a3c78 linter: Add info for more skipped rule schemas (#23380) (Sysix)
c966384 linter: Fix the example of unicorn/prefer-string-replace-all (#23367) (Liang)
2120ecf linter: Describe problems on not verified rules schema (#23351) (Sysix)
14abf32 linter/react-perf: Use autogenerated docs (#23227) (camc314)
Oxfmt
π Features
9a2788b linter/unicorn: Implement prefer-export-from rule (#22935) (AliceLanniste)
0c6fb23 oxfmt: Format parser:json-stringify files by oxc_formatter_json (#23194) (leaysgur)
8cc82c4 formatter_json: Implement json-stringify variant (#23192) (leaysgur)
π Bug Fixes
956309a lsp: Use protocol line breaks for positions (#23329) (konh)
769de65 oxfmt: Handle compound json extensions (#23198) (leaysgur)
b0b5d39 formatter_json: Support JSON5/JSON6 value in json/jsonc/json5 (#23193) (leaysgur)
π Documentation
4986613 formatter_json: Update AGENTS.md (#23199) (leaysgur)
Co-authored-by: Boshen [email protected]
Original source - Jun 15, 2026
- Date parsed from source:Jun 15, 2026
- First seen by Releasebot:Jun 16, 2026
oxfmt_v0.55.0: release(apps): oxlint v1.70.0 && oxfmt v0.55.0 (#23442)
Oxc releases a broad linting and formatting update, adding many new rule schemas and implementations across React, Vue, TypeScript, Unicorn, Jest, Vitest, and accessibility, plus parser, diagnostics, and performance fixes. Oxfmt also gains JSON stringify formatting support and related improvements.
Oxlint
π Features
- 5e1627d linter/unicorn: Flag all Error() calls without new in throw-new-error (#23363) (Cason Kervis)
- 2e8bda4 linter/vue: Implement no-dupe-keys rule (#23350) (bab)
- 1490a0a linter/react: Implement react-compiler rule (#23202) (Boshen)
- dd560ae linter/unicorn: Implement no-array-fill-with-reference-type rule (#23397) (Mikhail Baev)
- af36c2f linter: Add schema for react/jsx-curly-brace-presence (#23400) (WaterWhisperer)
- 47d34a3 linter: Add schema for react/jsx-handler-names (#23393) (WaterWhisperer)
- f4250d0 linter: Add schema for unicorn/import-style (#23386) (WaterWhisperer)
- 30c74ce linter: Add schema for jsx_a11y/no-noninteractive-element-to-interactive-role (#23384) (Sysix)
- cfbe8dc linter: Add schema for jsx_a11y/no-interactive-element-to-noninteractive-role (#23382) (WaterWhisperer)
- d15b7ff linter: Add schema for typescript/no-restricted-types (#23381) (WaterWhisperer)
- 028a811 linter: Add schema for jsx-a11y/media-has-caption (#23377) (Sysix)
- b3b1038 linter: Add schema for jsx-a11y/label-has-associated-control (#23376) (Sysix)
- 7ada6b2 linter: Add schema for jsx_a11y/no-distracting-elements (#23379) (WaterWhisperer)
- ee3dd49 linter: Add schema for jsx-a11y/img-redundant-alt (#23374) (Sysix)
- df5f8dd linter: Add short descriptions to most lint rules. (#23365) (Connor Shea)
- e3fd735 linter: Add schema for jsx_a11y/alt-text (#23369) (Sysix)
- 0f2fff4 linter: Add schema for react/exhaustive-deps (#23372) (Mikhail Baev)
- e3e4e10 linter: Add schema for react_perf/jsx-no-new-object-as-prop (#23368) (Mikhail Baev)
- 9366d44 linter: Add schema for unicorn/prefer-at (#23366) (WaterWhisperer)
- f57b55d linter: Add schema for typescript/array-type (#23355) (Sysix)
- 0dcf912 linter: Add schema for typescript/ban-ts-comment (#23354) (Sysix)
- 51fa83e linter: Add schema for react/no-did-update-set-state (#23357) (Mikhail Baev)
- 59db0bd linter: Add schema for consistent-generic-constructors (#23353) (Sysix)
- c4775c0 linter: Add schema for typescript/consistent-type-assertions (#23349) (Sysix)
- 6e516f7 linter: Add schema for typescript/consistent-type-imports (#23348) (Sysix)
- 012134d linter: Add schema for react/jsx-no-target-blank (#23345) (WaterWhisperer)
- 0806aae linter: Add schema for jsx_a11y/no-noninteractive-tabindex (#23337) (Mikhail Baev)
- 0708b5a linter: Add schema for react/jsx-filename-extension (#23315) (Mikhail Baev)
- 150bce1 linter: Add schema for typescript/no-empty-object-type (#23309) (Sysix)
- f9e36f1 linter: Add schema for typescript/no-duplicate-type-constituents (#23308) (Sysix)
- 937accf linter: Add schema for typescript/no-invalid-void-type (#23307) (Sysix)
- 3e042b9 linter: Add schema for typescript/no-misused-promises (#23306) (Sysix)
- da212d1 linter: Add schema for typescript/no-unnecessary-condition (#23305) (Sysix)
- f8f0d38 linter: Add schema for typescript/parameter-properties (#23304) (Sysix)
- 2275fc7 linter: Add schema for typescript/prefer-nullish-coalescing (#23302) (Sysix)
- d353858 linter: Add schema for typescript/prefer-string-starts-ends-with (#23301) (Sysix)
- 03060f5 linter: Add schema for typescript/triple-slash-reference (#23300) (Sysix)
- 6619cee linter: Add schema for promise/param-names (#23298) (Sysix)
- 8bf108e linter: Add schema for promise/catch-or-return (#23297) (Sysix)
- 48158d0 linter: Add schema for vitest/consistent-each-for (#23294) (Sysix)
- 7e74c98 linter: Add schema for vitest/consistent-test-filename (#23293) (Sysix)
- ff94d4a linter: Add schema for vitest/consistent-vitest-vi (#23292) (Sysix)
- 2409a10 linter: Add schema for vitest/prefer-import-in-mock (#23291) (Sysix)
- 3d782b7 linter: Add schema for react/no-unstable-nested-components (#23287) (Mikhail Baev)
- 0a0bc2f linter/jsx-a11y: Add allowedRedundantRoles option to no-redundant-roles (#22820) (bab)
- 80758a5 linter/vue: Implement no-side-effects-in-computed-properties rule (#23282) (bab)
- e3869ac linter: Add schema for react/no-object-type-as-default-prop (#23279) (Mikhail Baev)
- 4480609 linter: Add schema for react/jsx-props-no-spreading (#23276) (Mikhail Baev)
- 08d68a5 linter/react: Implement jsx-no-literals rule (#23145) (kapobajza)
- 9a2788b linter/unicorn: Implement prefer-export-from rule (#22935) (AliceLanniste)
- bdb723c linter/unicorn: Implement prefer-single-call rule (#23235) (Yuzhe Shi)
- 31543ed linter: Add schema for vue/define-props-destructuring (#23252) (Sysix)
- 21b6c3d linter: Add schema for oxc/no-async-endpoint-handlers (#23251) (Sysix)
- e77ff81 linter: Add schema for unicorn/prefer-object-from-entries (#23249) (Mikhail Baev)
- bcac2d6 linter: Add schema for jest/vitest/no-restricted-matchers (#23247) (Sysix)
- 539f036 linter: Add schema for jest/vitest/no-restricted-*-methods (#23246) (Sysix)
- dd1b927 linter/vue: Implement require-default-prop rule (#22951) (bab)
- 3f018e7 linter: Add schema for unicorn/no-instanceof-builtins (#23225) (Mikhail Baev)
- 5b9a793 linter/react-perf: Support nativeAllowList config (#22996) (Cole Ellison)
- b4e19d4 linter: Improve promise/catch-or-return termination diagnostics (#23218) (camc314)
- 9b72a41 linter/promise/catch-or-return: Add support for allowThenStrict option (#23206) (camc314)
- e0d0f78 linter: Verify promise/no-callback-in-promise schema (#23141) (beanscg)
- 123d4f4 linter: Add schema for jest/vitest/valid-expect (#23185) (Sysix)
- 46c8a21 linter: Add schema for jest/vitest/require-top-level-describe (#23184) (Sysix)
- 41465cf linter: Add schema for jest/vitest/prefer-snapshot-hint (#23183) (Sysix)
- d068b9b linter: Add schema for jest/vitest/prefer-expect-assertions (#23181) (Sysix)
- 064a1ee linter: Add schema for jest/prefer-ending-with-an-expect (#23180) (Sysix)
- d046797 linter: Add schema for jest/vitest/no-standalone-expect (#23179) (Sysix)
- 137b9a6 linter: Add schema for jest/vitest/no-large-snapshots (#23178) (Sysix)
- 0f3e4a5 linter: Add schema for jest/vitest/no-hooks (#23177) (Sysix)
- 00244d8 parser: Report definite property initializer errors (#23160) (camc314)
- cd0b384 linter: Add schema for unicorn/explicit-length-check (#23155) (Mikhail Baev)
- 01b74c4 linter: Add schema for jest/no-deprecated-functions (#23136) (Sysix)
- 9d6a387 linter: Add schema for unicorn/catch-error-name (#23137) (Mikhail Baev)
- 0da8efa linter: Add schema for jest/vitest/max-nested-describe (#23131) (Sysix)
- d71c9fd linter: Add schema for eslint/no-use-before-define (#23129) (Sysix)
π Bug Fixes
- 019be2e linter/unicorn: Align throw-new-error parity (#23437) (camc314)
- b9e5e51 linter/jest: Validate no-restricted-jest-methods config (#23436) (camc314)
- f302f41 linter: Normalize oxlint jsPlugin prefixes (#23335) (konh)
- 2bdf8ce linter/jest: Validate no-restricted-matchers config (#23434) (camc314)
- 5c2fb45 linter/eslint: Validate max-depth config (#23430) (camc314)
- eafc280 linter/eslint: Validate no-unused-vars config (#23433) (camc314)
- 25aebb0 linter/typescript: Validate no-empty-object-type config (#23432) (camc314)
- 7cafe3b linter/unicorn: Validate catch-error-name config (#23431) (camc314)
- af1b897 linter/unicorn: Validate prefer-object-from-entries config (#23429) (camc314)
- 68d48fe linter/eslint: Validate max-classes-per-file config (#23428) (camc314)
- 02932b6 linter/eslint: Validate complexity config (#23427) (camc314)
- 375e574 linter/eslint: Use shared id-length regex config (#23426) (camc314)
- ba3e2e0 linter/eslint: Preserve used imports in no-unused-vars fixer (#23425) (camc314)
- 26ddac6 linter: Avoid config schema generation for jsx_a11y/no-noninteractive-element-interactions (#23385) (Sysix)
- 40556ad linter: Parse jsx-a11y/control-has-associated-label config with DefaultRuleConfig (#23373) (Sysix)
- dacbda8 linter/unicorn/prefer-string-starts-ends-with: Mark rule as deprecated (#23342) (camc314)
- 956309a lsp: Use protocol line breaks for positions (#23329) (konh)
- 71e9648 linter: Expose no-noninteractive-element-interactions schema (#23283) (camc314)
- 4c4c19c linter: no-noninteractive-element-interactions fix default values (#23288) (Sysix)
- e63a139 linter/jsx-a11y: Restore control label defaults (#22737) (konh)
- 0e4e59f linter/jsx-a11y: No-redundant-roles attribute-aware implicit roles for <input>, skip ancestor-conditional elements (#23015) (Gaurav Dubey)
- 06e215e linter/vitest: Validate consistent-each-for config (#23278) (camc314)
- cd278e1 linter/promise: Validate param-names config (#23277) (camc314)
- 7f46013 linter/react/display-name: Handle default export function correctly (#23271) (camc314)
- 22ff6a6 linter/unicorn: Deserialize filename-case config with serde (#23266) (camc314)
- b644da0 linter/eslint: Add fixer for sort_vars (#23262) (Cason Kervis)
- 778af4d linter/unicorn: Support array of patterns for unicorn/filename-case ignore option (#23260) (kapobajza)
- 127fb2c linter: Deserialize rule config with serde for unicorn/prefer-object-from-entries (#23253) (Sysix)
- f89b909 linter/react/jsx-no-target-blank: Handle compound conditions (#23245) (camc314)
- c30419a linter/typescript: Deserialize rule config with serde for consistent-generic-constructors (#23238) (camc314)
- 7d17d37 linter/react: Report invalid exhaustive-deps config (#23239) (camc314)
- 1060186 linter/eslint: Add deny_unknown_fields to prefer-destructuring (#23237) (camc314)
- fd2e4eb linter/react: Add deny_unknown_fields to exhaustive-deps (#23236) (camc314)
- 6c3c904 linter/react/jsx-curly-brace-presence: Avoid false positive with comment within braces (#23234) (camc314)
- 6c86d1c linter/react-perf: Correct nativeAllowList all schema (#23229) (camc314)
- c393760 linter/react/rules-of-hooks: Align try/catch semantics (#23221) (camc314)
- 4dd52de linter/react-perf: Re-generate stale snapshots (#23228) (camc314)
- de2d23b linter/unicorn/prefer-dom-node-dataset: Preserve optional chaining in fixer (#23148) (Bruno Carvalho)
- d7038de linter/react/exhaustive-deps: Ignore non React namespace hooks (#23175) (camc314)
- 7111903 linter/react/exhaustive-deps: FP with wrapped literal expressions (#23172) (camc314)
- 93326e7 linter/react: Align hook errors with anonomous async callbacks (#23158) (camc314)
- 8f3db61 linter: Allow options for eslint/capitalized-comments (#23139) (Sysix)
- f533565 linter: Support nofunc string option in no-use-before-define (#23115) (bab)
β‘ Performance
- f09707e linter: jest/no-deprecated-functions store config version as usize (#23138) (Sysix)
- da1a6c6 diagnostics: Migrate to allocation-optimized oxc-miette (#23094) (Boshen)
π Documentation
- f682e25 linter: Remove manually written options doc for eslint/prefer-arrow-callback (#23438) (Mikhail Baev)
- 64c942c linter: Remove manually written options doc for eslint/no-sequences (#23420) (Mikhail Baev)
- d6d1189 linter: Add short_descriptions to more rules (#23417) (Connor Shea)
- b979722 linter: Clarify valid-define-emits description (#23408) (camc314)
- ccd0a69 linter: Clarify only-used-in-recursion description (#23407) (camc314)
- b0fd30b linter: Clarify no-sync-scripts description (#23406) (camc314)
- c23290d linter: Clarify no-cycle description (#23405) (camc314)
- 3612e0b linter: Clarify no-nodejs-modules description (#23403) (camc314)
- c67c5b1 linter: Clarify no-misused-new description (#23402) (camc314)
- 88bf0bc linter: Clarify require-render-return description (#23401) (camc314)
- 9fff263 linter: Add short descriptions to more rules that lacked them (#23389) (Connor Shea)
- ac69042 linter: Add short_description fields to more lint rules (#23391) (Connor Shea)
- 99a3c78 linter: Add info for more skipped rule schemas (#23380) (Sysix)
- c966384 linter: Fix the example of unicorn/prefer-string-replace-all (#23367) (Liang)
- 2120ecf linter: Describe problems on not verified rules schema (#23351) (Sysix)
- 14abf32 linter/react-perf: Use autogenerated docs (#23227) (camc314)
Oxfmt
π Features
- 9a2788b linter/unicorn: Implement prefer-export-from rule (#22935) (AliceLanniste)
- 0c6fb23 oxfmt: Format parser:json-stringify files by oxc_formatter_json (#23194) (leaysgur)
- 8cc82c4 formatter_json: Implement json-stringify variant (#23192) (leaysgur)
π Bug Fixes
- 956309a lsp: Use protocol line breaks for positions (#23329) (konh)
- 769de65 oxfmt: Handle compound json extensions (#23198) (leaysgur)
- b0b5d39 formatter_json: Support JSON5/JSON6 value in json/jsonc/json5 (#23193) (leaysgur)
π Documentation
- 4986613 formatter_json: Update AGENTS.md (#23199) (leaysgur)
Co-authored-by: Boshen [email protected]
Original source - Jun 15, 2026
- Date parsed from source:Jun 15, 2026
- First seen by Releasebot:Jun 16, 2026
oxc crates_v0.136.0
Oxc releases breaking changes, new React Compiler support, stronger TypeScript diagnostics, and a batch of parser, transformer, codegen, and performance improvements, along with bug fixes and updated developer documentation.
BREAKING CHANGES
7a24911 codegen: [BREAKING] Borrow sourcemaps from codegen (#23422) (Boshen)
bb0ed44 transformer: [BREAKING] Disable styled-components transpileTemplateLiterals by default (#23171) (Boshen)
Features
1490a0a linter/react: Implement react-compiler rule (#23202) (Boshen)
6c0bdf0 transformer/react-refresh: Support module.property.useHook() (#23190) (Dunqing)
47991bd semantic: Report TS1228 for invalid type predicates (#23174) (camc314)
1d3af58 parser: Add TS2398 parameter property diagnostic (#23216) (camc314)
44313da semantic: Add scope_is_descendant_of api (#22313) (camc314)
e5050c0 parser: Improve diagnostic for rest initializer (#23205) (camc314)
ec266bb transformer: Run React Compiler as a feature-gated transform pass (#23201) (Boshen)
e7374fe parser: Report error for const modifier on interface type parameter (#23173) (camc314)
a7c1c9b parser: Report ambient definite variable assertions (#23165) (camc314)
d169fcd parser: Report invalid class definite assertions (#23164) (camc314)
00244d8 parser: Report definite property initializer errors (#23160) (camc314)
Bug Fixes
52d0c31 transformer: Replace ambient dot defines (#23231) (camc314)
2c28748 transformer/class: Parent generated constructors to class scope (#23222) (camc314)
8edd234 parser: Report accessor definite assertion on token (#23203) (camc314)
de38a3f react_compiler: Keep imports referenced only by a local re-export (#23176) (Boshen)
f5721c2 codegen: Preserve parentheses around intrinsic type reference (#23156) (Boshen)
e89f81d parser: Don't emit TS1477 for parenthesized instantiation expression (#23147) (Boshen)
8a04149 parser: Reject module-referencing imports/exports in a namespace body (#22829) (Boshen)
Performance
2783295 parser: Table-driven operator precedence lookup (#23346) (Boshen)
231d5de parser: Single-match member expression dispatch (#23347) (Boshen)
e89729b codegen: Accept one-shot wrap closures (#23265) (camc314)
a6c11fa parser: Force-inline read_non_decimal to fold per-digit number dispatch (#23157) (Boshen)
d74964c parser: Store class definite assertion offset (#23170) (camc314)
f0fda4d parser: Shrink-wrap cold diagnostic tails out of hot frames (#23159) (Boshen)
a082180 parser: Store definite assertion offset (#23167) (camc314)
534f9c6 oxc: Conditionally rebuild semantic in compiler pipeline (#23153) (Boshen)
b435c6a parser: Skip checkpoint for infer T extends U constraint in disallow context (#23128) (Boshen)
7464dce parser: Peek instead of checkpoint/rewind for export default modifier (#23124) (Boshen)
80a9a32 parser: Fast-path single-keyword TS declarations (#23083) (Boshen)
da1a6c6 diagnostics: Migrate to allocation-optimized oxc-miette (#23094) (Boshen)
b7b08ce parser: Peek once for the static modifier disambiguation (#23079) (Boshen)
e7e07a3 parser: Fold unary dispatch into a single match (#23076) (Boshen)
Documentation
d241add semantic: Add AGENTS.md test guidance for agents (#23441) (camc314)
026f1ae parser: Add AGENTS.md test guidance for agents (#23440) (camc314)
09755ac transformer: Add AGENTS.md test guidance for agents (#23439) (camc314)
e6bdfd4 lexer: Correct reference link for byte_handlers! (#23313) (Dunqing)
65b6d7a allocator: Fix memory leaks in Arena examples (#23257) (overlookmotel)
Original source
Curated by the Releasebot team
Releasebot is an aggregator of official release notes from hundreds of software vendors and thousands of sources.
Our editorial process involves the manual review and audit of release notes procured with the help of automated systems.