Linting and Formatting Release Notes

Release notes for code linting, formatting and type-checking tools

Products (5)

Latest Linting and Formatting Updates

  • Apr 13, 2026
    • Date parsed from source:
      Apr 13, 2026
    • First seen by Releasebot:
      Apr 13, 2026
    Oxc logo

    Oxc

    oxlint_v1.60.0: release(apps): oxlint v1.60.0 && oxfmt v0.45.0 (#21375)

    Oxc releases major Oxlint and Oxfmt updates with breaking changes, new lint rules and fixes, a type-check-only flag, prettier 3.8.2 support in Oxfmt, and broader performance improvements across parsing, linting, and formatting.

    Oxlint

    πŸ’₯ BREAKING CHANGES

    382958a span: [BREAKING] Remove re-exports of string types from oxc_span crate (#21246) (overlookmotel)

    c4aedfa str: [BREAKING] Add static_ident! macro (#21245) (overlookmotel)

    7354f3c linter: [BREAKING] Error on no matched files (#21144) (camc314)

    πŸš€ Features

    91f2c79 linter/eslint-jest-plugin: Implemented prefer-importing-jest-globals rule (#21303) (Said Atrahouch)

    a02f32c linter: Add release version for existing rules (#21363) (camchenry)

    b9e93da linter: Allow tagging rules with release version (#21362) (camchenry)

    f99ecda oxlint: Gate vite.config.ts recognition behind VP_VERSION env var (#21298) (leaysgur)

    cf459d3 linter: Implement suggestion for no-empty-function rule (#21347) (Mikhail Baev)

    7213d61 linter: Adding pending suggestions fix to valid_expect rules. (#21249) (Said Atrahouch)

    ae45312 linter: Introduce --type-check-only flag (#21184) (camc314)

    1ce8b90 linter: Implemented valid-expect-in-promise vitest and jest rule (#21170) (Said Atrahouch)

    39f7fda linter: Add auto-fix to unicorn/prefer-default-parameters (#21166) (yefan)

    15574bc linter/unicorn: Implement consistent-template-literal-escape (#21126) (AliceLanniste)

    c5c8c03 linter/prefer-readonly-parameter-types: Move rule from nursery to pedantic (#21114) (camc314)

    1893be1 linter/no-useless-default-assignment: Move rule from nursery to correctness (#21113) (camc314)

    5462ff9 linter/strict-void-return: Move rule from nursery to pedantic (#21115) (camc314)

    c2989bd linter/no-unnecessary-type-parameters: Move rule from nursery to suspicious (#21112) (camc314)

    79d339a linter/no-unnecessary-qualifier: Move rule from nursery to style (#21111) (camc314)

    πŸ› Bug Fixes

    b577efc linter/unicorn: Handle optional chaining in prefer-array-flat and no-invalid-remove-event-listener (#21299) (Mikhail Baev)

    5e55735 oxlint/lsp: Skip .git directories in LSP walkers (#21316) (camc314)

    ec7f6ed oxlint, oxfmt: Apply check_for_writer_error to .flush() (#21343) (Craig Morrison)

    a17a08a linter/no-useless-assignment: Handle continue edges in loop analysis (#21358) (camc314)

    a0eac12 linter/array-type: Move match to first stmt (#21357) (camc314)

    1b3abc3 linter: Exclude boundary tokens from JSXText whitespace check in isSpaceBetweenTokens (#21313) (bab)

    ecbcf5e linter: More info to summary output for GitHub formatter (#21330) (ThΓ©o LUDWIG)

    a0a8c62 linter/no-fallthrough: Check from start of switch case for empty lines (#21324) (Josh Cartmell)

    36f0bc4 linter/no-cycle: Report all cyclic dependencies inside a file (#21259) (camc314)

    3f80536 linter: Ignore regex flags other than g/u/v in prefer-string-replace-all (#21203) (bab)

    f21d3aa linter/unicorn: Report on optional in require-number-to-fixed-digits-argument rule (#21207) (Mikhail Baev)

    af8e122 linter: Render each config error as a separate diagnostic (#21120) (bab)

    a950f55 linter/unicorn: Do not report on optionals in no-single-promise-in-promise-methods (#21157) (Mikhail Baev)

    472f8ee linter: Mark complete comment for unused disable directives + lsp fix (#21092) (copilot-swe-agent)

    edd0865 linter/no-array-index-key: False positive when index is inside an expression within a template literal (#21123) (bab)

    7e8d520 linter/unicorn: Report on optional foo?.postMessage in require-post-message-target-origin rule (#21104) (Mikhail Baev)

    ⚑ Performance

    addcd02 napi/parser, linter/plugins: Raw transfer deserializer for Vecs use shift instead of multiply where possible (#21142) (overlookmotel)

    3068ded napi/parser, linter/plugins: Shift before add when calculating positions in raw transfer deserializer (#21141) (overlookmotel)

    eb400b8 napi/parser, linter/plugins: Remove uint32 buffer view (#21140) (overlookmotel)

    7a86613 linter/plugins: Use Int32Arrays for tokens and comments buffers (#21136) (overlookmotel)

    8c51121 napi/parser, linter/plugins: Raw transfer deserialize Span fields as i32s (#21135) (overlookmotel)

    bc1bcdd napi/parser, linter/plugins: Inline trivial raw transfer field deserializers into node object definitions (#21134) (overlookmotel)

    c0278ab napi/parser, linter/plugins: Use Int32Array in raw transfer deserializer (#21132) (overlookmotel)

    43482c7 linter/plugins: Use >> not >>> in binary search loops (#21129) (overlookmotel)

    πŸ“š Documentation

    7888280 linter: Move config docs for no-restricted-exports (#21360) (camchenry)

    162d26c linter: Improve docs for typescript/array-type (#21356) (camchenry)

    a2dbaec linter: Add missing docs for options for typescript/class-literal-property-style (#21355) (camchenry)

    79593eb linter: Improve docs for typescript/consistent-type-assertions (#21353) (camchenry)

    f9d20d2 linter: Move config option docs for typescript/no-empty-object-type (#21352) (camchenry)

    a8f650d linter: Add missing config option docs for prefer-string-start-ends-with (#21332) (camchenry)

    cfd8a4f linter: Don't rely on old eslint doc for available globals (#21334) (Nicolas Le Cam)

    03865fa linter: Jest/prefer-snapshot-hint: add doc comment for snapshot hint mode (#21290) (camchenry)

    a6fe09b linter: Add missing docs for config options in react plugin (#21289) (camchenry)

    60eaf47 linter: Add missing docs for config options in unicorn plugin (#21288) (camchenry)

    c3c2055 linter: jsx-a11y/label-has-associated-control: document the assert options (#21287) (camchenry)

    a928ed9 linter: Add missing config docs for vitest plugin rules (#21285) (camchenry)

    7e07c7c linter: id-length: move enum docs to doc comments (#21281) (camchenry)

    9746bdf linter: Add missing docs for class-methods-use-this config (#21278) (camchenry)

    6ffe7a5 linter: Move docs for Target variant onto enum (#21277) (camchenry)

    305350d linter/plugins: Correct comments (#21130) (overlookmotel)

    Oxfmt

    πŸ’₯ BREAKING CHANGES

    382958a span: [BREAKING] Remove re-exports of string types from oxc_span crate (#21246) (overlookmotel)

    πŸš€ Features

    e3081e1 oxfmt: Gate vite.config.ts recognition behind VP_VERSION env var (#21295) (leaysgur)

    5b0b573 oxfmt: Update prettier to 3.8.2 (#21294) (leaysgur)

    0d67834 oxfmt: Show hint for all files are ignored case (#21154) (leaysgur)

    πŸ› Bug Fixes

    2871fc2 oxfmt: Non idempotent formatting on comments in TS (#20449) (Cat Chen)

    ec7f6ed oxlint, oxfmt: Apply check_for_writer_error to .flush() (#21343) (Craig Morrison)

    1a8c225 formatter: Preserve newline between self-closing JSX element and single-char text (#21149) (Justin Mecham)

    407b725 oxfmt: Indent dangling comments in empty enum with block indent (#21163) (Leonabcd123)

    d13fd37 formatter: Remove extra outer parentheses on return with JSDoc type cast (#21109) (bab)

    22babde oxfmt: Fix unicode char escaping (#21162) (leaysgur)

    4da53e5 formatter: Preserve trailing comma in TSX arrow functions with default type params (#21151) (Justin Mecham)

    94fe774 oxfmt: Handle paths with consecutive leading slashes (#21155) (leaysgur)

    50c389b oxfmt: Support .editorconfig quote_type (#20989) (leaysgur)

    ⚑ Performance

    0ce619f formatter: Use Allocator::alloc_concat_strs_array instead of StringBuilder::from_strs_array_in (#21339) (overlookmotel)

    Original source Report a problem
  • Apr 13, 2026
    • Date parsed from source:
      Apr 13, 2026
    • First seen by Releasebot:
      Apr 13, 2026
    Oxc logo

    Oxc

    oxfmt_v0.45.0: release(apps): oxlint v1.60.0 && oxfmt v0.45.0 (#21375)

    Oxc releases Oxlint and Oxfmt updates with breaking span changes, new linter rules and flags, stronger bug fixes, performance gains, and refreshed docs. Oxfmt also adds Prettier 3.8.2 support, better file handling, and formatting fixes.

    Oxlint

    πŸ’₯ BREAKING CHANGES

    382958a span: [BREAKING] Remove re-exports of string types from
    oxc_span crate (#21246) (overlookmotel)

    c4aedfa str: [BREAKING] Add static_ident! macro (#21245)
    (overlookmotel)

    7354f3c linter: [BREAKING] Error on no matched files (#21144)
    (camc314)

    πŸš€ Features

    91f2c79 linter/eslint-jest-plugin: Implemented
    prefer-importing-jest-globals rule (#21303) (Said Atrahouch)

    a02f32c linter: Add release version for existing rules (#21363)
    (camchenry)

    b9e93da linter: Allow tagging rules with release version (#21362)
    (camchenry)

    f99ecda oxlint: Gate vite.config.ts recognition behind VP_VERSION
    env var (#21298) (leaysgur)

    cf459d3 linter: Implement suggestion for no-empty-function rule
    (#21347) (Mikhail Baev)

    7213d61 linter: Adding pending suggestions fix to valid_expect
    rules. (#21249) (Said Atrahouch)

    ae45312 linter: Introduce --type-check-only flag (#21184) (camc314)

    1ce8b90 linter: Implemented valid-expect-in-promise vitest and jest
    rule (#21170) (Said Atrahouch)

    39f7fda linter: Add auto-fix to unicorn/prefer-default-parameters
    (#21166) (yefan)

    15574bc linter/unicorn: Implement consistent-template-literal-escape
    (#21126) (AliceLanniste)

    c5c8c03 linter/prefer-readonly-parameter-types: Move rule from nursery
    to pedantic (#21114) (camc314)

    1893be1 linter/no-useless-default-assignment: Move rule from nursery
    to correctness (#21113) (camc314)

    5462ff9 linter/strict-void-return: Move rule from nursery to pedantic
    (#21115) (camc314)

    c2989bd linter/no-unnecessary-type-parameters: Move rule from nursery
    to suspicious (#21112) (camc314)

    79d339a linter/no-unnecessary-qualifier: Move rule from nursery to
    style (#21111) (camc314)

    πŸ› Bug Fixes

    b577efc linter/unicorn: Handle optional chaining in
    prefer-array-flat and no-invalid-remove-event-listener (#21299)
    (Mikhail Baev)

    5e55735 oxlint/lsp: Skip .git directories in LSP walkers (#21316)
    (camc314)

    ec7f6ed oxlint, oxfmt: Apply check_for_writer_error to .flush()
    (#21343) (Craig Morrison)

    a17a08a linter/no-useless-assignment: Handle continue edges in loop
    analysis (#21358) (camc314)

    a0eac12 linter/array-type: Move match to first stmt (#21357) (camc314)

    1b3abc3 linter: Exclude boundary tokens from JSXText whitespace check
    in isSpaceBetweenTokens (#21313) (bab)

    ecbcf5e linter: More info to summary output for GitHub formatter
    (#21330) (ThΓ©o LUDWIG)

    a0a8c62 linter/no-fallthrough: Check from start of switch case for
    empty lines (#21324) (Josh Cartmell)

    36f0bc4 linter/no-cycle: Report all cyclic dependencies inside a file
    (#21259) (camc314)

    3f80536 linter: Ignore regex flags other than g/u/v in
    prefer-string-replace-all (#21203) (bab)

    f21d3aa linter/unicorn: Report on optional in
    require-number-to-fixed-digits-argument rule (#21207) (Mikhail Baev)

    af8e122 linter: Render each config error as a separate diagnostic
    (#21120) (bab)

    a950f55 linter/unicorn: Do not report on optionals in
    no-single-promise-in-promise-methods (#21157) (Mikhail Baev)

    472f8ee linter: Mark complete comment for unused disable directives +
    lsp fix (#21092) (copilot-swe-agent)

    edd0865 linter/no-array-index-key: False positive when index is inside
    an expression within a template literal (#21123) (bab)

    7e8d520 linter/unicorn: Report on optional foo?.postMessage in
    require-post-message-target-origin rule (#21104) (Mikhail Baev)

    ⚑ Performance

    addcd02 napi/parser, linter/plugins: Raw transfer deserializer for
    Vecs use shift instead of multiply where possible (#21142)
    (overlookmotel)

    3068ded napi/parser, linter/plugins: Shift before add when calculating
    positions in raw transfer deserializer (#21141) (overlookmotel)

    eb400b8 napi/parser, linter/plugins: Remove uint32 buffer view
    (#21140) (overlookmotel)

    7a86613 linter/plugins: Use Int32Arrays for tokens and comments
    buffers (#21136) (overlookmotel)

    8c51121 napi/parser, linter/plugins: Raw transfer deserialize Span
    fields as i32s (#21135) (overlookmotel)

    bc1bcdd napi/parser, linter/plugins: Inline trivial raw transfer field
    deserializers into node object definitions (#21134) (overlookmotel)

    c0278ab napi/parser, linter/plugins: Use Int32Array in raw transfer
    deserializer (#21132) (overlookmotel)

    43482c7 linter/plugins: Use >> not >>> in binary search loops
    (#21129) (overlookmotel)

    πŸ“š Documentation

    7888280 linter: Move config docs for no-restricted-exports (#21360)
    (camchenry)

    162d26c linter: Improve docs for typescript/array-type (#21356)
    (camchenry)

    a2dbaec linter: Add missing docs for options for
    typescript/class-literal-property-style (#21355) (camchenry)

    79593eb linter: Improve docs for
    typescript/consistent-type-assertions (#21353) (camchenry)

    f9d20d2 linter: Move config option docs for
    typescript/no-empty-object-type (#21352) (camchenry)

    a8f650d linter: Add missing config option docs for
    prefer-string-start-ends-with (#21332) (camchenry)

    cfd8a4f linter: Don't rely on old eslint doc for available globals
    (#21334) (Nicolas Le Cam)

    03865fa linter: Jest/prefer-snapshot-hint: add doc comment for
    snapshot hint mode (#21290) (camchenry)

    a6fe09b linter: Add missing docs for config options in react plugin
    (#21289) (camchenry)

    60eaf47 linter: Add missing docs for config options in unicorn plugin
    (#21288) (camchenry)

    c3c2055 linter: jsx-a11y/label-has-associated-control: document the
    assert options (#21287) (camchenry)

    a928ed9 linter: Add missing config docs for vitest plugin rules
    (#21285) (camchenry)

    7e07c7c linter: id-length: move enum docs to doc comments (#21281)
    (camchenry)

    9746bdf linter: Add missing docs for class-methods-use-this config
    (#21278) (camchenry)

    6ffe7a5 linter: Move docs for Target variant onto enum (#21277)
    (camchenry)

    305350d linter/plugins: Correct comments (#21130) (overlookmotel)

    Oxfmt

    πŸ’₯ BREAKING CHANGES

    382958a span: [BREAKING] Remove re-exports of string types from
    oxc_span crate (#21246) (overlookmotel)

    πŸš€ Features

    e3081e1 oxfmt: Gate vite.config.ts recognition behind VP_VERSION
    env var (#21295) (leaysgur)

    5b0b573 oxfmt: Update prettier to 3.8.2 (#21294) (leaysgur)

    0d67834 oxfmt: Show hint for all files are ignored case (#21154)
    (leaysgur)

    πŸ› Bug Fixes

    2871fc2 oxfmt: Non idempotent formatting on comments in TS (#20449)
    (Cat Chen)

    ec7f6ed oxlint, oxfmt: Apply check_for_writer_error to .flush()
    (#21343) (Craig Morrison)

    1a8c225 formatter: Preserve newline between self-closing JSX element
    and single-char text (#21149) (Justin Mecham)

    407b725 oxfmt: Indent dangling comments in empty enum with block
    indent (#21163) (Leonabcd123)

    d13fd37 formatter: Remove extra outer parentheses on return with JSDoc
    type cast (#21109) (bab)

    22babde oxfmt: Fix unicode char escaping (#21162) (leaysgur)

    4da53e5 formatter: Preserve trailing comma in TSX arrow functions with
    default type params (#21151) (Justin Mecham)

    94fe774 oxfmt: Handle paths with consecutive leading slashes (#21155)
    (leaysgur)

    50c389b oxfmt: Support .editorconfig quote_type (#20989)
    (leaysgur)

    ⚑ Performance

    0ce619f formatter: Use Allocator::alloc_concat_strs_array instead of
    StringBuilder::from_strs_array_in (#21339) (overlookmotel)

    Original source Report a problem
  • All of your release notes in one feed

    Join Releasebot and get updates from Oxc and hundreds of other software products.

  • Apr 13, 2026
    • Date parsed from source:
      Apr 13, 2026
    • First seen by Releasebot:
      Apr 13, 2026
    Oxc logo

    Oxc

    oxc crates_v0.125.0

    Oxc ships breaking API cleanup, stronger TypeScript enum optimization, and minifier support for dropping unused property assignments. This release also tightens allocator and parser safety, fixes several transformer bugs, and improves performance across deserialization and minification paths.

    πŸ’₯ BREAKING CHANGES

    36cdc31 str: [BREAKING] Remove identity FromIn impl for Ident (#21251) (overlookmotel)

    382958a span: [BREAKING] Remove re-exports of string types from oxc_span crate (#21246) (overlookmotel)

    c4aedfa str: [BREAKING] Add static_ident! macro (#21245) (overlookmotel)

    πŸš€ Features

    e7e1aea transformer/typescript: Add optimize_enums option for regular enum inlining (#20539) (Dunqing)

    679f57f transformer/typescript: Implement const enum inlining and declaration removal (#20508) (Dunqing)

    6dd061c semantic: Extend MemberWriteTarget to cover all property modification patterns (#21205) (Dunqing)

    f134e24 minifier: Support property_write_side_effects option to drop unused property assignments (#20773) (Dunqing)

    75663c0 semantic: Add enum member value evaluation for const enum support (#20602) (Dunqing)

    3cfe8ed semantic: Add MemberWriteTarget flag to ReferenceFlags (#20772) (Dunqing)

    πŸ› Bug Fixes

    af1a586 transformer/class-properties: Use correct property name when converting parameter properties (#21268) (Amal Jossy)

    b43250a allocator: Move allocation tracking into Bump (#21342) (overlookmotel)

    36f505f allocator: StringBuilder use Allocator::alloc_layout (#21340) (overlookmotel)

    7a08a6f allocator: Fix allocation counting in Allocator::alloc_concat_strs_array (#21336) (overlookmotel)

    2338e28 ecmascript: Treat this as potentially having side effects (#21297) (sapphi-red)

    bd8bd39 allocator: Remove unsafe hacks from from_raw_parts methods (#21283) (overlookmotel)

    8f4c340 allocator: Remove dangerous pointer const to mut cast (#21279) (overlookmotel)

    aa9259f parser: Add missing error code for optional param diagnostic (#21258) (camc314)

    04b3c2f str: Fix unsound casting const pointers to mut pointers (#21242) (overlookmotel)

    ceadf6c str: Make Ident::from_raw an unsafe function (#21241) (overlookmotel)

    eab13b3 transformer/decorators: Avoid accessor storage name collisions (#21106) (Dunqing)

    07e8a30 transformer/react-refresh: Handle parenthesized variable initializers (#21047) (camc314)

    ⚑ Performance

    c3ca6f6 allocator: StringBuilder::from_strs_array_in check for 0 length earlier (#21338) (overlookmotel)

    c2422bb allocator: Allocator::alloc_concat_strs_array check for 0 length earlier (#21337) (overlookmotel)

    04b0fdc allocator: Mark Allocator::alloc_layout as #[inline(always)] (#21335) (overlookmotel)

    17aee9e allocator: Use offset_from_unsigned in ChunkFooter::as_raw_parts (#21280) (overlookmotel)

    61adedd minifier: Fix O(nΒ²) perf on very many var decls (#21062) (Gunnlaugur Thor Briem)

    addcd02 napi/parser, linter/plugins: Raw transfer deserializer for Vecs use shift instead of multiply where possible (#21142) (overlookmotel)

    3068ded napi/parser, linter/plugins: Shift before add when calculating positions in raw transfer deserializer (#21141) (overlookmotel)

    eb400b8 napi/parser, linter/plugins: Remove uint32 buffer view (#21140) (overlookmotel)

    2675085 napi/parser: Lazy deserialization use only Int32Array (#21139) (overlookmotel)

    5b35a53 napi/parser: Deserializing tokens use only int32 array (#21138) (overlookmotel)

    f163d10 parser: Tokens raw deserialization use Int32Array (#21137) (overlookmotel)

    7a86613 linter/plugins: Use Int32Arrays for tokens and comments buffers (#21136) (overlookmotel)

    8c51121 napi/parser, linter/plugins: Raw transfer deserialize Span fields as i32s (#21135) (overlookmotel)

    bc1bcdd napi/parser, linter/plugins: Inline trivial raw transfer field deserializers into node object definitions (#21134) (overlookmotel)

    c0278ab napi/parser, linter/plugins: Use Int32Array in raw transfer deserializer (#21132) (overlookmotel)

    43482c7 linter/plugins: Use >> not >>> in binary search loops (#21129) (overlookmotel)

    πŸ“š Documentation

    f5e1845 allocator: Upgrade headers in doc comments for Bump (#21263) (overlookmotel)

    2870174 allocator: Upper case SAFETY in comments (#21253) (overlookmotel)

    01bc269 str: Reformat Ident doc comments (#21240) (overlookmotel)

    dd47359 allocator: Add doc comments for panics and errors (#21230) (overlookmotel)

    Original source Report a problem
  • Apr 13, 2026
    • Date parsed from source:
      Apr 13, 2026
    • First seen by Releasebot:
      Apr 13, 2026
    Oxc logo

    Oxc

    oxlint v1.60.0 & oxfmt v0.45.0

    Oxc releases Oxlint v1.60.0 and Oxfmt v0.45.0 with breaking changes, new lint rules and type-checking support, broader rule metadata, formatter updates, bug fixes, performance gains, and refreshed documentation.

    Table of Contents

    Oxlint v1.60.0

    Oxfmt v0.45.0

    Oxlint v1.60.0

    πŸ’₯ BREAKING CHANGES

    382958a span: [BREAKING] Remove re-exports of string types from oxc_span crate (#21246) (overlookmotel)

    c4aedfa str: [BREAKING] Add static_ident! macro (#21245) (overlookmotel)

    7354f3c linter: [BREAKING] Error on no matched files (#21144) (camc314)

    πŸš€ Features

    94a32b9 linter/jest: Share common pattern expect functions (#21376) (Said Atrahouch)

    bab5c31 linter/jest: Implement prefer-ending-with-an-expect rule (#21372) (Said Atrahouch)

    91f2c79 linter/eslint-jest-plugin: Implemented prefer-importing-jest-globals rule (#21303) (Said Atrahouch)

    a02f32c linter: Add release version for existing rules (#21363) (camchenry)

    b9e93da linter: Allow tagging rules with release version (#21362) (camchenry)

    f99ecda oxlint: Gate vite.config.ts recognition behind VP_VERSION env var (#21298) (leaysgur)

    cf459d3 linter: Implement suggestion for no-empty-function rule (#21347) (Mikhail Baev)

    7213d61 linter: Adding pending suggestions fix to valid_expect rules. (#21249) (Said Atrahouch)

    ae45312 linter: Introduce --type-check-only flag (#21184) (camc314)

    1ce8b90 linter: Implemented valid-expect-in-promise vitest and jest rule (#21170) (Said Atrahouch)

    39f7fda linter: Add auto-fix to unicorn/prefer-default-parameters (#21166) (yefan)

    15574bc linter/unicorn: Implement consistent-template-literal-escape (#21126) (AliceLanniste)

    c5c8c03 linter/prefer-readonly-parameter-types: Move rule from nursery to pedantic (#21114) (camc314)

    1893be1 linter/no-useless-default-assignment: Move rule from nursery to correctness (#21113) (camc314)

    5462ff9 linter/strict-void-return: Move rule from nursery to pedantic (#21115) (camc314)

    c2989bd linter/no-unnecessary-type-parameters: Move rule from nursery to suspicious (#21112) (camc314)

    79d339a linter/no-unnecessary-qualifier: Move rule from nursery to style (#21111) (camc314)

    πŸ› Bug Fixes

    b577efc linter/unicorn: Handle optional chaining in prefer-array-flat and no-invalid-remove-event-listener (#21299) (Mikhail Baev)

    5e55735 oxlint/lsp: Skip .git directories in LSP walkers (#21316) (camc314)

    ec7f6ed oxlint, oxfmt: Apply check_for_writer_error to .flush() (#21343) (Craig Morrison)

    a17a08a linter/no-useless-assignment: Handle continue edges in loop analysis (#21358) (camc314)

    a0eac12 linter/array-type: Move match to first stmt (#21357) (camc314)

    1b3abc3 linter: Exclude boundary tokens from JSXText whitespace check in isSpaceBetweenTokens (#21313) (bab)

    ecbcf5e linter: More info to summary output for GitHub formatter (#21330) (ThΓ©o LUDWIG)

    a0a8c62 linter/no-fallthrough: Check from start of switch case for empty lines (#21324) (Josh Cartmell)

    36f0bc4 linter/no-cycle: Report all cyclic dependencies inside a file (#21259) (camc314)

    3f80536 linter: Ignore regex flags other than g/u/v in prefer-string-replace-all (#21203) (bab)

    f21d3aa linter/unicorn: Report on optional in require-number-to-fixed-digits-argument rule (#21207) (Mikhail Baev)

    af8e122 linter: Render each config error as a separate diagnostic (#21120) (bab)

    a950f55 linter/unicorn: Do not report on optionals in no-single-promise-in-promise-methods (#21157) (Mikhail Baev)

    472f8ee linter: Mark complete comment for unused disable directives + lsp fix (#21092) (copilot-swe-agent)

    edd0865 linter/no-array-index-key: False positive when index is inside an expression within a template literal (#21123) (bab)

    7e8d520 linter/unicorn: Report on optional foo?.postMessage in require-post-message-target-origin rule (#21104) (Mikhail Baev)

    ⚑ Performance

    addcd02 napi/parser, linter/plugins: Raw transfer deserializer for Vecs use shift instead of multiply where possible (#21142) (overlookmotel)

    3068ded napi/parser, linter/plugins: Shift before add when calculating positions in raw transfer deserializer (#21141) (overlookmotel)

    eb400b8 napi/parser, linter/plugins: Remove uint32 buffer view (#21140) (overlookmotel)

    7a86613 linter/plugins: Use Int32Arrays for tokens and comments buffers (#21136) (overlookmotel)

    8c51121 napi/parser, linter/plugins: Raw transfer deserialize Span fields as i32s (#21135) (overlookmotel)

    bc1bcdd napi/parser, linter/plugins: Inline trivial raw transfer field deserializers into node object definitions (#21134) (overlookmotel)

    c0278ab napi/parser, linter/plugins: Use Int32Array in raw transfer deserializer (#21132) (overlookmotel)

    43482c7 linter/plugins: Use >> not >>> in binary search loops (#21129) (overlookmotel)

    πŸ“š Documentation

    7888280 linter: Move config docs for no-restricted-exports (#21360) (camchenry)

    162d26c linter: Improve docs for typescript/array-type (#21356) (camchenry)

    a2dbaec linter: Add missing docs for options for typescript/class-literal-property-style (#21355) (camchenry)

    79593eb linter: Improve docs for typescript/consistent-type-assertions (#21353) (camchenry)

    f9d20d2 linter: Move config option docs for typescript/no-empty-object-type (#21352) (camchenry)

    a8f650d linter: Add missing config option docs for prefer-string-start-ends-with (#21332) (camchenry)

    cfd8a4f linter: Don't rely on old eslint doc for available globals (#21334) (Nicolas Le Cam)

    03865fa linter: Jest/prefer-snapshot-hint: add doc comment for snapshot hint mode (#21290) (camchenry)

    a6fe09b linter: Add missing docs for config options in react plugin (#21289) (camchenry)

    60eaf47 linter: Add missing docs for config options in unicorn plugin (#21288) (camchenry)

    c3c2055 linter: jsx-a11y/label-has-associated-control: document the assert options (#21287) (camchenry)

    a928ed9 linter: Add missing config docs for vitest plugin rules (#21285) (camchenry)

    7e07c7c linter: id-length: move enum docs to doc comments (#21281) (camchenry)

    9746bdf linter: Add missing docs for class-methods-use-this config (#21278) (camchenry)

    6ffe7a5 linter: Move docs for Target variant onto enum (#21277) (camchenry)

    305350d linter/plugins: Correct comments (#21130) (overlookmotel)

    Oxfmt v0.45.0

    πŸ’₯ BREAKING CHANGES

    382958a span: [BREAKING] Remove re-exports of string types from oxc_span crate (#21246) (overlookmotel)

    πŸš€ Features

    e3081e1 oxfmt: Gate vite.config.ts recognition behind VP_VERSION env var (#21295) (leaysgur)

    5b0b573 oxfmt: Update prettier to 3.8.2 (#21294) (leaysgur)

    0d67834 oxfmt: Show hint for all files are ignored case (#21154) (leaysgur)

    πŸ› Bug Fixes

    2871fc2 oxfmt: Non idempotent formatting on comments in TS (#20449) (Cat Chen)

    ec7f6ed oxlint, oxfmt: Apply check_for_writer_error to .flush() (#21343) (Craig Morrison)

    1a8c225 formatter: Preserve newline between self-closing JSX element and single-char text (#21149) (Justin Mecham)

    407b725 oxfmt: Indent dangling comments in empty enum with block indent (#21163) (Leonabcd123)

    d13fd37 formatter: Remove extra outer parentheses on return with JSDoc type cast (#21109) (bab)

    22babde oxfmt: Fix unicode char escaping (#21162) (leaysgur)

    4da53e5 formatter: Preserve trailing comma in TSX arrow functions with default type params (#21151) (Justin Mecham)

    94fe774 oxfmt: Handle paths with consecutive leading slashes (#21155) (leaysgur)

    50c389b oxfmt: Support .editorconfig quote_type (#20989) (leaysgur)

    ⚑ Performance

    0ce619f formatter: Use Allocator::alloc_concat_strs_array instead of StringBuilder::from_strs_array_in (#21339) (overlookmotel)

    Original source Report a problem
  • Apr 8, 2026
    • Date parsed from source:
      Apr 8, 2026
    • First seen by Releasebot:
      Apr 8, 2026
    typescript-eslint logo

    typescript-eslint

    v8.58.1

    typescript-eslint fixes a no-unused-vars false negative for type predicate parameters in eslint-plugin.

    8.58.1 (2026-04-08)

    🩹 Fixes

    eslint-plugin: [no-unused-vars] fix false negative for type predicate parameter (#12004)

    ❀️ Thank You

    MinJae @Ju-MINJAE

    See GitHub Releases for more information.

    You can read about our versioning strategy and releases on our website.

    Original source Report a problem
  • Apr 7, 2026
    • Date parsed from source:
      Apr 7, 2026
    • First seen by Releasebot:
      Apr 7, 2026
    Oxc logo

    Oxc

    oxlint_v1.59.0: release(apps): oxlint v1.59.0 && oxfmt v0.44.0 (#21085)

    Oxc releases a broad linting and formatting update with breaking LSP changes, new rules and code actions, smoother autofix behavior, bug fixes, faster parsing and decoding, plus Oxfmt improvements for config handling and formatting edge cases.

    Oxlint

    πŸ’₯ BREAKING CHANGES

    22ce6af oxlint/lsp: [BREAKING] Show/fix safe suggestions by default (#19816) (Sysix)

    πŸš€ Features

    7a7b7b8 oxlint/lsp: Add source.fixAllDangerous.oxc code action kind (#20526) (bab)

    9cfe57e linter/unicorn: Implement prefer-import-meta-properties rule (#20662) (Irfan - ئىرفان)

    1edb391 linter/eslint: Implement no-restricted-exports rule (#20592) (Nicolas Le Cam)

    0f12bcd linter/react: Implement hook-use-state rule (#20986) (Khaled Labeb)

    1513a9f oxlint/lsp: Show note field for lsp diagnostic (#20983) (Sysix)

    7fdf722 linter/unicorn: Implement no-useless-iterator-to-array rule (#20945) (Mikhail Baev)

    39c8f2c linter/jest: Implement padding-around-after-all-blocks (#21034) (Sapphire)

    ac39e51 linter/eslint-vitest-plugin: Prefer importing vitest globals (#20960) (Said Atrahouch)

    0b84de1 oxlint: Support allow option for prefer-promise-reject-errors (#20934) (camc314)

    23db851 linter/consistent-return: Move rule from nursery to suspicious (#20920) (camc314)

    9a27e32 linter/no-unnecessary-type-conversion: Move rule from nursery to suspicious (#20919) (camc314)

    1ca7b58 linter/dot-notation: Move rule from nursery to style (#20918) (camc314)

    73ba81a linter/consistent-type-exports: Move rule from nursery to style (#20917) (camc314)

    b9199b1 linter/unicorn: Implement switch-case-break-position (#20872) (Mikhail Baev)

    3435ff8 linter: Implements prefer-snapshot-hint rule in Jest and Vitest (#20870) (Said Atrahouch)

    98510d2 linter: Implement react/prefer-function-component (#19652) (Connor Shea)

    871f9d9 linter: Implement no-useless-assignment (#15466) (Zhaoting Zhou)

    0f01fbd linter: Implement eslint/object-shorthand (#17688) (yue)

    πŸ› Bug Fixes

    dd2df87 npm: Export package.json for oxlint and oxfmt (#20784) (kazuya kawaguchi)

    9bc77dd linter/no-unused-private-class-members: False positive with await expr (#21067) (camc314)

    60a57cd linter/const-comparisons: Detect equality contradictions (#21065) (camc314)

    2bb2be2 linter/no-array-index-key: False positive when index is passed as function argument (#21012) (bab)

    6492953 linter/no-this-in-sfc: Only flag this used as member expression object (#20961) (bab)

    9446dcc oxlint/lsp: Skip node_modules in oxlint config walker (#21004) (copilot-swe-agent)

    af89923 linter/no-namespace: Support glob pattern matching against basename (#21031) (bab)

    64a1a7e oxlint: Don't search for nested config outside base config (#21051) (Sysix)

    3b953bc linter/button-has-type: Ignore document.createElement calls (#21008) (Said Atrahouch)

    8c36070 linter/unicorn: Add support for Array.from() for prefer-set-size rule (#21016) (Mikhail Baev)

    c1a48f0 linter: Detect vitest import from vite-plus/test (#20976) (Said Atrahouch)

    5c32fd1 lsp: Prevent corrupted autofix output from overlapping text edits (#19793) (Peter Wagenet)

    ca79960 linter/no-array-index-key: Move span to key property (#20947) (camc314)

    2098274 linter: Add suggestion for jest/prefer-equality-matcher (#20925) (eryue0220)

    6eb77ec linter: Allow default-import barrels in import/named (#20757) (Bazyli BrzΓ³ska)

    9c218ef linter/eslint-vitest-plugin: Remove pending fix status for require-local-test-context-for-concurrent-snapshot (#20890) (Said Atrahouch)

    ⚑ Performance

    fb52383 napi/parser, linter/plugins: Clear buffers and source texts earlier (#21025) (overlookmotel)

    3b7dec4 napi/parser, linter/plugins: Use utf8Slice for decoding UTF-8 strings (#21022) (overlookmotel)

    012c924 napi/parser, linter/plugins: Speed up decoding strings in raw transfer (#21021) (overlookmotel)

    55e1e9b napi/parser, linter/plugins: Initialize vars as 0 (#21020) (overlookmotel)

    c25ef02 napi/parser, linter/plugins: Simplify branch condition in deserializeStr (#21019) (overlookmotel)

    9f494c3 napi/parser, linter/plugins: Raw transfer use String.fromCharCode in string decoding (#21018) (overlookmotel)

    0503a78 napi/parser, linter/plugins: Faster deserialization of raw fields (#20923) (overlookmotel)

    a24f75e napi/parser: Optimize string deserialization for non-ASCII sources (#20834) (Joshua Tuddenham)

    πŸ“š Documentation

    af72b80 oxlint: Fix typo for --tsconfig (#20889) (leaysgur)

    70c53b1 linter: Highlight that tsconfig is not respected in type aware linting (#20884) (camc314)

    Oxfmt

    πŸš€ Features

    35cf6e8 oxfmt: Add node version hint for ts config import failures (#21046) (camc314)

    πŸ› Bug Fixes

    dd2df87 npm: Export package.json for oxlint and oxfmt (#20784) (kazuya kawaguchi)

    9d45511 oxfmt: Propagate file write errors instead of panicking (#20997) (leaysgur)

    139ddd9 formatter: Handle leading comment after array elision (#20987) (leaysgur)

    4216380 oxfmt: Support .editorconfig tab_width fallback (#20988) (leaysgur)

    d10df39 formatter: Resolve pending space in fits measurer before expanded-mode early exit (#20954) (Dunqing)

    f9ef1bd formatter: Avoid breaking after => when arrow body has JSDoc type cast (#20857) (bab)

    Co-authored-by: Boshen [email protected]

    Original source Report a problem
  • Apr 7, 2026
    • Date parsed from source:
      Apr 7, 2026
    • First seen by Releasebot:
      Apr 7, 2026
    Oxc logo

    Oxc

    oxfmt_v0.44.0: release(apps): oxlint v1.59.0 && oxfmt v0.44.0 (#21085)

    Oxc releases broader linting, LSP, and formatting updates, adding new rules and code actions, default safe suggestion fixes, faster parser performance, and multiple bug fixes across oxlint and oxfmt.

    Oxlint

    πŸ’₯ BREAKING CHANGES

    22ce6af oxlint/lsp: [BREAKING] Show/fix safe suggestions by default (#19816) (Sysix)

    πŸš€ Features

    7a7b7b8 oxlint/lsp: Add source.fixAllDangerous.oxc code action kind (#20526) (bab)

    9cfe57e linter/unicorn: Implement prefer-import-meta-properties rule (#20662) (Irfan - ئىرفان)

    1edb391 linter/eslint: Implement no-restricted-exports rule (#20592) (Nicolas Le Cam)

    0f12bcd linter/react: Implement hook-use-state rule (#20986) (Khaled Labeb)

    1513a9f oxlint/lsp: Show note field for lsp diagnostic (#20983) (Sysix)

    7fdf722 linter/unicorn: Implement no-useless-iterator-to-array rule (#20945) (Mikhail Baev)

    39c8f2c linter/jest: Implement padding-around-after-all-blocks (#21034) (Sapphire)

    ac39e51 linter/eslint-vitest-plugin: Prefer importing vitest globals (#20960) (Said Atrahouch)

    0b84de1 oxlint: Support allow option for prefer-promise-reject-errors (#20934) (camc314)

    23db851 linter/consistent-return: Move rule from nursery to suspicious (#20920) (camc314)

    9a27e32 linter/no-unnecessary-type-conversion: Move rule from nursery to suspicious (#20919) (camc314)

    1ca7b58 linter/dot-notation: Move rule from nursery to style (#20918) (camc314)

    73ba81a linter/consistent-type-exports: Move rule from nursery to style (#20917) (camc314)

    b9199b1 linter/unicorn: Implement switch-case-break-position (#20872) (Mikhail Baev)

    3435ff8 linter: Implements prefer-snapshot-hint rule in Jest and Vitest (#20870) (Said Atrahouch)

    98510d2 linter: Implement react/prefer-function-component (#19652) (Connor Shea)

    871f9d9 linter: Implement no-useless-assignment (#15466) (Zhaoting Zhou)

    0f01fbd linter: Implement eslint/object-shorthand (#17688) (yue)

    πŸ› Bug Fixes

    dd2df87 npm: Export package.json for oxlint and oxfmt (#20784) (kazuya kawaguchi)

    9bc77dd linter/no-unused-private-class-members: False positive with await expr (#21067) (camc314)

    60a57cd linter/const-comparisons: Detect equality contradictions (#21065) (camc314)

    2bb2be2 linter/no-array-index-key: False positive when index is passed as function argument (#21012) (bab)

    6492953 linter/no-this-in-sfc: Only flag this used as member expression object (#20961) (bab)

    9446dcc oxlint/lsp: Skip node_modules in oxlint config walker (#21004) (copilot-swe-agent)

    af89923 linter/no-namespace: Support glob pattern matching against basename (#21031) (bab)

    64a1a7e oxlint: Don't search for nested config outside base config (#21051) (Sysix)

    3b953bc linter/button-has-type: Ignore document.createElement calls (#21008) (Said Atrahouch)

    8c36070 linter/unicorn: Add support for Array.from() for prefer-set-size rule (#21016) (Mikhail Baev)

    c1a48f0 linter: Detect vitest import from vite-plus/test (#20976) (Said Atrahouch)

    5c32fd1 lsp: Prevent corrupted autofix output from overlapping text edits (#19793) (Peter Wagenet)

    ca79960 linter/no-array-index-key: Move span to key property (#20947) (camc314)

    2098274 linter: Add suggestion for jest/prefer-equality-matcher (#20925) (eryue0220)

    6eb77ec linter: Allow default-import barrels in import/named (#20757) (Bazyli BrzΓ³ska)

    9c218ef linter/eslint-vitest-plugin: Remove pending fix status for require-local-test-context-for-concurrent-snapshot (#20890) (Said Atrahouch)

    ⚑ Performance

    fb52383 napi/parser, linter/plugins: Clear buffers and source texts earlier (#21025) (overlookmotel)

    3b7dec4 napi/parser, linter/plugins: Use utf8Slice for decoding UTF-8 strings (#21022) (overlookmotel)

    012c924 napi/parser, linter/plugins: Speed up decoding strings in raw transfer (#21021) (overlookmotel)

    55e1e9b napi/parser, linter/plugins: Initialize vars as 0 (#21020) (overlookmotel)

    c25ef02 napi/parser, linter/plugins: Simplify branch condition in deserializeStr (#21019) (overlookmotel)

    9f494c3 napi/parser, linter/plugins: Raw transfer use String.fromCharCode in string decoding (#21018) (overlookmotel)

    0503a78 napi/parser, linter/plugins: Faster deserialization of raw fields (#20923) (overlookmotel)

    a24f75e napi/parser: Optimize string deserialization for non-ASCII sources (#20834) (Joshua Tuddenham)

    πŸ“š Documentation

    af72b80 oxlint: Fix typo for --tsconfig (#20889) (leaysgur)

    70c53b1 linter: Highlight that tsconfig is not respected in type aware linting (#20884) (camc314)

    Oxfmt

    πŸš€ Features

    35cf6e8 oxfmt: Add node version hint for ts config import failures (#21046) (camc314)

    πŸ› Bug Fixes

    dd2df87 npm: Export package.json for oxlint and oxfmt (#20784) (kazuya kawaguchi)

    9d45511 oxfmt: Propagate file write errors instead of panicking (#20997) (leaysgur)

    139ddd9 formatter: Handle leading comment after array elision (#20987) (leaysgur)

    4216380 oxfmt: Support .editorconfig tab_width fallback (#20988) (leaysgur)

    d10df39 formatter: Resolve pending space in fits measurer before expanded-mode early exit (#20954) (Dunqing)

    f9ef1bd formatter: Avoid breaking after => when arrow body has JSDoc type cast (#20857) (bab)

    Co-authored-by: Boshen [email protected]

    Original source Report a problem
  • Apr 7, 2026
    • Date parsed from source:
      Apr 7, 2026
    • First seen by Releasebot:
      Apr 7, 2026
    Oxc logo

    Oxc

    oxc crates_v0.124.0

    Oxc fixes bugs and speeds up parsing with a batch of allocator, napi/parser, and linter/plugin improvements, including faster string decoding, earlier buffer cleanup, and a larger initial chunk size. It also includes documentation and comment cleanup.

    πŸ› Bug Fixes

    • fc7f60c allocator: Revert changes to get_current_chunk_footer_field_offset (#20964) (overlookmotel)
    • 31316c8 semantic: Rebind class expressions before identifier checks (#20916) (camc314)

    ⚑ Performance

    • fb52383 napi/parser, linter/plugins: Clear buffers and source texts earlier (#21025) (overlookmotel)
    • 3b7dec4 napi/parser, linter/plugins: Use utf8Slice for decoding UTF-8 strings (#21022) (overlookmotel)
    • 012c924 napi/parser, linter/plugins: Speed up decoding strings in raw transfer (#21021) (overlookmotel)
    • 55e1e9b napi/parser, linter/plugins: Initialize vars as 0 (#21020) (overlookmotel)
    • c25ef02 napi/parser, linter/plugins: Simplify branch condition in deserializeStr (#21019) (overlookmotel)
    • 9f494c3 napi/parser, linter/plugins: Raw transfer use String.fromCharCode in string decoding (#21018) (overlookmotel)
    • 91cf105 allocator: Increase initial chunk size from 512B to 16KB (#20968) (overlookmotel)
    • cbc0c21 allocator: Add #[cold] to to error handling functions (#20967) (overlookmotel)
    • 0503a78 napi/parser, linter/plugins: Faster deserialization of raw fields (#20923) (overlookmotel)
    • a24f75e napi/parser: Optimize string deserialization for non-ASCII sources (#20834) (Joshua Tuddenham)

    πŸ“š Documentation

    • c78a57a syntax: Fix typo (#21044) (camc314)
    • f5e228f allocator: Fix typo in comment (#20972) (overlookmotel)
    • 7159d51 allocator: Improve doc comment examples for vec2::Vec (#20969) (overlookmotel)
    • b1da750 allocator, data_structures: Correct comments (#20966) (overlookmotel)
    Original source Report a problem
  • Apr 7, 2026
    • Date parsed from source:
      Apr 7, 2026
    • First seen by Releasebot:
      Apr 7, 2026
    Oxc logo

    Oxc

    oxlint v1.59.0 & oxfmt v0.44.0

    Oxc releases Oxlint v1.59.0 and Oxfmt v0.44.0 with new lint rules, safer LSP suggestions by default, expanded autofix and diagnostic support, bug fixes, performance improvements, and formatter updates for comments, editorconfig, and file write handling.

    Table of Contents

    Oxlint v1.59.0

    Oxfmt v0.44.0

    Oxlint v1.59.0

    πŸ’₯ BREAKING CHANGES

    22ce6af oxlint/lsp: [BREAKING] Show/fix safe suggestions by default (#19816) (Sysix)

    πŸš€ Features

    7a7b7b8 oxlint/lsp: Add source.fixAllDangerous.oxc code action kind (#20526) (bab)

    9cfe57e linter/unicorn: Implement prefer-import-meta-properties rule (#20662) (Irfan - ئىرفان)

    1edb391 linter/eslint: Implement no-restricted-exports rule (#20592) (Nicolas Le Cam)

    0f12bcd linter/react: Implement hook-use-state rule (#20986) (Khaled Labeb)

    1513a9f oxlint/lsp: Show note field for lsp diagnostic (#20983) (Sysix)

    7fdf722 linter/unicorn: Implement no-useless-iterator-to-array rule (#20945) (Mikhail Baev)

    39c8f2c linter/jest: Implement padding-around-after-all-blocks (#21034) (Sapphire)

    ac39e51 linter/eslint-vitest-plugin: Prefer importing vitest globals (#20960) (Said Atrahouch)

    0b84de1 oxlint: Support allow option for prefer-promise-reject-errors (#20934) (camc314)

    23db851 linter/consistent-return: Move rule from nursery to suspicious (#20920) (camc314)

    9a27e32 linter/no-unnecessary-type-conversion: Move rule from nursery to suspicious (#20919) (camc314)

    1ca7b58 linter/dot-notation: Move rule from nursery to style (#20918) (camc314)

    73ba81a linter/consistent-type-exports: Move rule from nursery to style (#20917) (camc314)

    b9199b1 linter/unicorn: Implement switch-case-break-position (#20872) (Mikhail Baev)

    3435ff8 linter: Implements prefer-snapshot-hint rule in Jest and Vitest (#20870) (Said Atrahouch)

    98510d2 linter: Implement react/prefer-function-component (#19652) (Connor Shea)

    871f9d9 linter: Implement no-useless-assignment (#15466) (Zhaoting Zhou)

    0f01fbd linter: Implement eslint/object-shorthand (#17688) (yue)

    πŸ› Bug Fixes

    8be4de7 linter/unicorn: Do not report on optionals in prefer-array-flat-map (#21082) (Mikhail Baev)

    dd2df87 npm: Export package.json for oxlint and oxfmt (#20784) (kazuya kawaguchi)

    9bc77dd linter/no-unused-private-class-members: False positive with await expr (#21067) (camc314)

    60a57cd linter/const-comparisons: Detect equality contradictions (#21065) (camc314)

    2bb2be2 linter/no-array-index-key: False positive when index is passed as function argument (#21012) (bab)

    6492953 linter/no-this-in-sfc: Only flag this used as member expression object (#20961) (bab)

    9446dcc oxlint/lsp: Skip node_modules in oxlint config walker (#21004) (copilot-swe-agent)

    af89923 linter/no-namespace: Support glob pattern matching against basename (#21031) (bab)

    64a1a7e oxlint: Don't search for nested config outside base config (#21051) (Sysix)

    3b953bc linter/button-has-type: Ignore document.createElement calls (#21008) (Said Atrahouch)

    8c36070 linter/unicorn: Add support for Array.from() for prefer-set-size rule (#21016) (Mikhail Baev)

    c1a48f0 linter: Detect vitest import from vite-plus/test (#20976) (Said Atrahouch)

    5c32fd1 lsp: Prevent corrupted autofix output from overlapping text edits (#19793) (Peter Wagenet)

    ca79960 linter/no-array-index-key: Move span to key property (#20947) (camc314)

    2098274 linter: Add suggestion for jest/prefer-equality-matcher (#20925) (eryue0220)

    6eb77ec linter: Allow default-import barrels in import/named (#20757) (Bazyli BrzΓ³ska)

    9c218ef linter/eslint-vitest-plugin: Remove pending fix status for require-local-test-context-for-concurrent-snapshot (#20890) (Said Atrahouch)

    ⚑ Performance

    fb52383 napi/parser, linter/plugins: Clear buffers and source texts earlier (#21025) (overlookmotel)

    3b7dec4 napi/parser, linter/plugins: Use utf8Slice for decoding UTF-8 strings (#21022) (overlookmotel)

    012c924 napi/parser, linter/plugins: Speed up decoding strings in raw transfer (#21021) (overlookmotel)

    55e1e9b napi/parser, linter/plugins: Initialize vars as 0 (#21020) (overlookmotel)

    c25ef02 napi/parser, linter/plugins: Simplify branch condition in deserializeStr (#21019) (overlookmotel)

    9f494c3 napi/parser, linter/plugins: Raw transfer use String.fromCharCode in string decoding (#21018) (overlookmotel)

    0503a78 napi/parser, linter/plugins: Faster deserialization of raw fields (#20923) (overlookmotel)

    a24f75e napi/parser: Optimize string deserialization for non-ASCII sources (#20834) (Joshua Tuddenham)

    πŸ“š Documentation

    af72b80 oxlint: Fix typo for --tsconfig (#20889) (leaysgur)

    70c53b1 linter: Highlight that tsconfig is not respected in type aware linting (#20884) (camc314)

    Oxfmt v0.44.0

    πŸš€ Features

    35cf6e8 oxfmt: Add node version hint for ts config import failures (#21046) (camc314)

    πŸ› Bug Fixes

    dd2df87 npm: Export package.json for oxlint and oxfmt (#20784) (kazuya kawaguchi)

    9d45511 oxfmt: Propagate file write errors instead of panicking (#20997) (leaysgur)

    139ddd9 formatter: Handle leading comment after array elision (#20987) (leaysgur)

    4216380 oxfmt: Support .editorconfig tab_width fallback (#20988) (leaysgur)

    d10df39 formatter: Resolve pending space in fits measurer before expanded-mode early exit (#20954) (Dunqing)

    f9ef1bd formatter: Avoid breaking after => when arrow body has JSDoc type cast (#20857) (bab)

    Original source Report a problem
  • Apr 3, 2026
    • Date parsed from source:
      Apr 3, 2026
    • First seen by Releasebot:
      Apr 4, 2026
    Eslint logo

    Eslint

    ESLint v10.2.0 released

    Eslint ships v10.2.0 with language-aware rules via meta.languages, letting rule authors declare supported languages and triggering runtime errors on unsupported ones. It also adds Temporal support, updates globals, and fixes several bugs.

    We just pushed ESLint v10.2.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release.

    Highlights

    Language-aware rules

    ESLint v10.2.0 adds support for language-aware rules through the new meta.languages property. Rule authors can now explicitly declare which languages a rule supports, and ESLint will throw a runtime error if that rule is enabled for an unsupported language, as specified by the language configuration option.

    Here is an example of a rule that only supports the JavaScript language:

    const rule = {
      meta: {
        type: "problem",
        docs: {
          description: "Example JavaScript rule",
        },
        languages: ["js/js"],
      },
      create(context) {
        return {};
      },
    };
    

    Currently, none of the ESLint built-in rules restrict the languages they are designed to work with, but this may change in the future.

    More information about the meta.languages property can be found in the custom rules documentation.

    Temporal support

    With the Temporal proposal now at TC39 stage 4, ESLint v10.2.0 recognizes Temporal as a built-in global. As a result, the no-undef rule no longer flags Temporal under the default configuration:

    /* eslint no-undef: "error" */
    const now = Temporal.Now.instant();
    // OK
    

    In addition, the no-obj-calls rule now reports direct calls to the global Temporal object:

    /* eslint no-obj-calls: "error" */
    Temporal();
    // Error: 'Temporal' is not a function.
    

    Features

    • feat: Add meta.languages support to rules (#20571) (Copilot)
    • feat: add Temporal to no-obj-calls (#20675) (Pixel998)
    • feat: add Temporal to ES2026 globals (#20672) (Pixel998)

    Bug Fixes

    • fix: update first-party dependencies (#20714) (Francesco Trotta)

    Documentation

    • docs: add language to configuration objects (#20712) (Francesco Trotta)
    • docs: Update README (GitHub Actions Bot)
    • docs: remove sourceType from ts playground link (#20477) (Tanuj Kanti)
    • docs: Update README (GitHub Actions Bot)
    • docs: Update README (GitHub Actions Bot)
    • docs: add Major Releases section to Manage Releases (#20269) (Milos Djermanovic)
    • docs: update eslint versions in examples (#20664) (루밀LuMir)
    • docs: update ESM Dependencies policies with note for own-usage packages (#20660) (Milos Djermanovic)

    Chores

    • refactor: extract no unmodified loop condition (#20679) (kuldeep kumar)
    • chore: update dependency markdownlint-cli2 to ^0.22.0 (#20697) (renovate[bot])
    • test: add unit tests for unicode utilities (#20622) (Manish chaudhary)
    • ci: remove --legacy-peer-deps from types integration tests (#20667) (Milos Djermanovic)
    • chore: update dependency npm-run-all2 to v8 (#20663) (renovate[bot])
    • chore: add prettier update commit to .git-blame-ignore-revs (#20662) (루밀LuMir)
    • chore: update dependency eslint-plugin-regexp to ^3.1.0 (#20659) (Milos Djermanovic)
    • chore: update dependency eslint-plugin-eslint-plugin to ^7.3.2 (#20661) (Milos Djermanovic)
    • test: Add tests for eslintrc-style keys (#20645) (kuldeep kumar)
    Original source Report a problem