Linting and Formatting Release Notes

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

Get this feed:

Products (5)

Latest Linting and Formatting Updates

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

    Oxc

    oxlint_v1.61.0: release(apps): oxlint v1.61.0 && oxfmt v0.46.0 (#21583)

    Oxc releases breaking allocator method renames, adds new Oxlint rule support and autofixes, and expands Oxfmt with per-directory config, a disable-nested-config CLI flag, and updated Prettier. It also includes bug fixes, performance gains, and documentation updates.

    Oxlint

    πŸ’₯ BREAKING CHANGES

    24fb7eb allocator: [BREAKING] Rename Box and Vec methods (#21395) (overlookmotel)

    πŸš€ Features

    38d8090 linter/jest: Implemented jest version settings in config file. (#21522) (Said Atrahouch)

    7dbbb99 linter/eslint: Implement suggestion for no-case-declarations rule (#21508) (Mikhail Baev)

    9b4d9f6 linter/prefer-template: Implement autofix (#21502) (FranΓ§ois)

    daa64ed linter/no-empty-pattern: Add allowObjectPatternsAsParameters option (#21474) (camc314)

    cf2d281 linter/typescript: Implement explicit-member-accessibility (#21447) (Hunter Tunnicliff)

    d48de6f linter/unicorn: Add help messages to 3 rule diagnostics (#21459) (Mukunda Rao Katta)

    cffdc2e linter: Backfill rule version metadata (#21391) (Old Autumn)

    πŸ› Bug Fixes

    1e69b91 linter/no-useless-assignment: Improve diagnostic spans (#21581) (camc314)

    f272594 linter/plugins: Align RuleMeta.replacedBy type with ESLint (#21544) (bab)

    4d57851 linter/eslint: Enhance no-empty-function rule to support async and generator functions in VariableDeclarator (#21542) (Mikhail Baev)

    00fc136 codegen: Preserve coverage comments before object properties (#21312) (bab)

    a56b7b9 oxlint: Dont enable gitlab formatter by default (#21501) (camc314)

    9c9b6a2 linter/array-callback-return: Ignore non-exit CFG dead ends (#21497) (camc314)

    61088e0 linter/unicorn: Handle computed property access in prefer-dom-node-remove rule (#21470) (Mikhail Baev)

    eab5934 linter: Report an error on unsupported extends values (#21406) (John Costa)

    3289ba0 linter/valid-expect-in-promise: Check a jest fn to be test instead of describe (#21422) (Said Atrahouch)

    4417fe3 linter/prefer-ending-with-an-expect: Ignore vi.mock factory callbacks (#21414) (CΓ©dric Exbrayat)

    a904883 linter/consistent-type-imports: Ignore vue/svelte/astro files (#21415) (bab)

    2498fe6 linter/no-unused-vars: Allow segments of dotted namespace declarations (#21416) (bab)

    44b5b35 linter: Preserve vitest-compatible jest rules when applying overrides (#21389) (Cameron)

    7bd8331 linter/prefer-ending-with-an-expect: Add missing version docs (#21390) (Said Atrahouch)

    43d8f0d linter/no-useless-assignment: Ignore writes read by closures (#21380) (camc314)

    πŸ“š Documentation

    c1eeae3 linter: Add version to rule.json (#21547) (camchenry)

    0ec6ab2 linter: Improve the vitest/no-importing-vitest-globals rule documentation. (#21557) (connorshea)

    Oxfmt

    πŸ’₯ BREAKING CHANGES

    24fb7eb allocator: [BREAKING] Rename Box and Vec methods (#21395) (overlookmotel)

    πŸš€ Features

    5aa7fe1 oxfmt: Add --disable-nested-config CLI flag (#21514) (leaysgur)

    b5cb8d1 oxfmt: Update prettier to 3.8.3 (#21451) (leaysgur)

    16713d5 oxfmt/cli: Support per-directory config (#21103) (leaysgur)

    952de06 oxfmt/lsp: Support per-directory config (#21081) (leaysgur)

    πŸ› Bug Fixes

    a501a53 formatter: Handle comments after pipe in single-member union types (#21487) (John Costa)

    6f49fad oxfmt: Respect nested config.ignorePatterns (#21489) (leaysgur)

    7c98d52 oxfmt: Do not panic on finding invalid nested config (#21461) (leaysgur)

    41bb2d5 formatter: Preserve more intrinsic parens (#21449) (leaysgur)

    f894750 formatter: Preserve parens around intrinsic in type alias annotation (#21410) (Dunqing)

    ⚑ Performance

    df27b48 oxfmt: Skip ancestors check when no nested config found (#21517) (leaysgur)

    5e1522a oxfmt: Do not occupy the rayon thread solely for handover (#21408) (leaysgur)

    Co-authored-by: camc314 [email protected]

    Original source
  • Apr 20, 2026
    • Date parsed from source:
      Apr 20, 2026
    • First seen by Releasebot:
      Apr 21, 2026
    Oxc logo

    Oxc

    oxfmt_v0.46.0: release(apps): oxlint v1.61.0 && oxfmt v0.46.0 (#21583)

    Oxc releases Oxlint and Oxfmt updates with a breaking allocator rename, new Jest config support, autofixes and rule improvements, plus per-directory config support, a new CLI flag, formatter bug fixes and performance gains.

    Oxlint

    πŸ’₯ BREAKING CHANGES

    24fb7eb allocator: [BREAKING] Rename Box and Vec methods (#21395) (overlookmotel)

    πŸš€ Features

    38d8090 linter/jest: Implemented jest version settings in config file. (#21522) (Said Atrahouch)

    7dbbb99 linter/eslint: Implement suggestion for no-case-declarations rule (#21508) (Mikhail Baev)

    9b4d9f6 linter/prefer-template: Implement autofix (#21502) (FranΓ§ois)

    daa64ed linter/no-empty-pattern: Add allowObjectPatternsAsParameters option (#21474) (camc314)

    cf2d281 linter/typescript: Implement explicit-member-accessibility (#21447) (Hunter Tunnicliff)

    d48de6f linter/unicorn: Add help messages to 3 rule diagnostics (#21459) (Mukunda Rao Katta)

    cffdc2e linter: Backfill rule version metadata (#21391) (Old Autumn)

    πŸ› Bug Fixes

    1e69b91 linter/no-useless-assignment: Improve diagnostic spans (#21581) (camc314)

    f272594 linter/plugins: Align RuleMeta.replacedBy type with ESLint (#21544) (bab)

    4d57851 linter/eslint: Enhance no-empty-function rule to support async and generator functions in VariableDeclarator (#21542) (Mikhail Baev)

    00fc136 codegen: Preserve coverage comments before object properties (#21312) (bab)

    a56b7b9 oxlint: Dont enable gitlab formatter by default (#21501) (camc314)

    9c9b6a2 linter/array-callback-return: Ignore non-exit CFG dead ends (#21497) (camc314)

    61088e0 linter/unicorn: Handle computed property access in prefer-dom-node-remove rule (#21470) (Mikhail Baev)

    eab5934 linter: Report an error on unsupported extends values (#21406) (John Costa)

    3289ba0 linter/valid-expect-in-promise: Check a jest fn to be test instead of describe (#21422) (Said Atrahouch)

    4417fe3 linter/prefer-ending-with-an-expect: Ignore vi.mock factory callbacks (#21414) (CΓ©dric Exbrayat)

    a904883 linter/consistent-type-imports: Ignore vue/svelte/astro files (#21415) (bab)

    2498fe6 linter/no-unused-vars: Allow segments of dotted namespace declarations (#21416) (bab)

    44b5b35 linter: Preserve vitest-compatible jest rules when applying overrides (#21389) (Cameron)

    7bd8331 linter/prefer-ending-with-an-expect: Add missing version docs (#21390) (Said Atrahouch)

    43d8f0d linter/no-useless-assignment: Ignore writes read by closures (#21380) (camc314)

    πŸ“š Documentation

    c1eeae3 linter: Add version to rule.json (#21547) (camchenry)

    0ec6ab2 linter: Improve the vitest/no-importing-vitest-globals rule documentation. (#21557) (connorshea)

    Oxfmt

    πŸ’₯ BREAKING CHANGES

    24fb7eb allocator: [BREAKING] Rename Box and Vec methods (#21395) (overlookmotel)

    πŸš€ Features

    5aa7fe1 oxfmt: Add --disable-nested-config CLI flag (#21514) (leaysgur)

    b5cb8d1 oxfmt: Update prettier to 3.8.3 (#21451) (leaysgur)

    16713d5 oxfmt/cli: Support per-directory config (#21103) (leaysgur)

    952de06 oxfmt/lsp: Support per-directory config (#21081) (leaysgur)

    πŸ› Bug Fixes

    a501a53 formatter: Handle comments after pipe in single-member union types (#21487) (John Costa)

    6f49fad oxfmt: Respect nested config.ignorePatterns (#21489) (leaysgur)

    7c98d52 oxfmt: Do not panic on finding invalid nested config (#21461) (leaysgur)

    41bb2d5 formatter: Preserve more intrinsic parens (#21449) (leaysgur)

    f894750 formatter: Preserve parens around intrinsic in type alias annotation (#21410) (Dunqing)

    ⚑ Performance

    df27b48 oxfmt: Skip ancestors check when no nested config found (#21517) (leaysgur)

    5e1522a oxfmt: Do not occupy the rayon thread solely for handover (#21408) (leaysgur)

    Co-authored-by: camc314 [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.

    Create account
  • Apr 20, 2026
    • Date parsed from source:
      Apr 20, 2026
    • First seen by Releasebot:
      Apr 21, 2026
    Oxc logo

    Oxc

    oxc crates_v0.127.0

    Oxc fixes minifier, parser, transformer, mangler, codegen, and TypeScript declaration handling, while also improving parser and allocator performance. The release tightens constructor and comment handling, preserves annotations and coverage comments, and streamlines internal parsing work.

    πŸ› Bug Fixes

    510e344 minifier: Drop this after unconditional super() in derived constructors (#21571) (Dunqing)
    67d40f8 parser: Set pure comment index after dedup check to handle lookahead/rewind (#21570) (Dunqing)
    9eea064 minifier: Treat this outside constructor as side-effect free (#21568) (Dunqing)
    385eb94 minifier: Preserve annotation comments when inlining single-use variables during DCE (#21567) (Dunqing)
    48967e8 isolated_declarations: Drop required type check for private parameter properties on private constructors (#21515) (Dunqing)
    91e5bde transformer/typescript: Preserve computed-key static block when class has an empty constructor (#21562) (Dunqing)
    50e9d26 mangler: Assign correct slot to shadowed function-expression names (#21535) (Dunqing)
    065ce47 isolated_declarations: Collect types from private accessors for paired inference (#21516) (Dunqing)
    00fc136 codegen: Preserve coverage comments before object properties (#21312) (bab)
    d676e0c minifier: Mark LHS of ??= as read when converting from == null && (#21546) (Gunnlaugur Thor Briem)

    ⚑ Performance

    e45efc5 parser: Reduce try_parse usage in favour of lookahead (#21532) (Boshen)
    ddb1bf8 parser: Avoid redundant IdentifierReference clone in shorthand property (#21511) (Boshen)
    be2b392 allocator: Store pointers directly in Arena (#21483) (overlookmotel)

    Original source
  • Apr 20, 2026
    • Date parsed from source:
      Apr 20, 2026
    • First seen by Releasebot:
      Apr 21, 2026
    Oxc logo

    Oxc

    oxlint v1.61.0 & oxfmt v0.46.0

    Oxc releases Oxlint v1.61.0 and Oxfmt v0.46.0 with breaking allocator method renames, new linting and autofix features, stronger Jest and TypeScript support, formatter per-directory config and CLI options, plus bug fixes, docs updates, and performance improvements.

    Table of Contents

    • Oxlint v1.61.0
    • Oxfmt v0.46.0

    Oxlint v1.61.0

    πŸ’₯ BREAKING CHANGES

    24fb7eb allocator: [BREAKING] Rename Box and Vec methods (#21395) (overlookmotel)

    πŸš€ Features

    38d8090 linter/jest: Implemented jest version settings in config file. (#21522) (Said Atrahouch)

    7dbbb99 linter/eslint: Implement suggestion for no-case-declarations rule (#21508) (Mikhail Baev)

    9b4d9f6 linter/prefer-template: Implement autofix (#21502) (FranΓ§ois)

    daa64ed linter/no-empty-pattern: Add allowObjectPatternsAsParameters option (#21474) (camc314)

    cf2d281 linter/typescript: Implement explicit-member-accessibility (#21447) (Hunter Tunnicliff)

    d48de6f linter/unicorn: Add help messages to 3 rule diagnostics (#21459) (Mukunda Rao Katta)

    cffdc2e linter: Backfill rule version metadata (#21391) (Old Autumn)

    πŸ› Bug Fixes

    96ede2c linter/no-useless-assignment: Preserve conditional self-reads (#21582) (camc314)

    1e69b91 linter/no-useless-assignment: Improve diagnostic spans (#21581) (camc314)

    f272594 linter/plugins: Align RuleMeta.replacedBy type with ESLint (#21544) (bab)

    4d57851 linter/eslint: Enhance no-empty-function rule to support async and generator functions in VariableDeclarator (#21542) (Mikhail Baev)

    00fc136 codegen: Preserve coverage comments before object properties (#21312) (bab)

    a56b7b9 oxlint: Dont enable gitlab formatter by default (#21501) (camc314)

    9c9b6a2 linter/array-callback-return: Ignore non-exit CFG dead ends (#21497) (camc314)

    61088e0 linter/unicorn: Handle computed property access in prefer-dom-node-remove rule (#21470) (Mikhail Baev)

    eab5934 linter: Report an error on unsupported extends values (#21406) (John Costa)

    3289ba0 linter/valid-expect-in-promise: Check a jest fn to be test instead of describe (#21422) (Said Atrahouch)

    4417fe3 linter/prefer-ending-with-an-expect: Ignore vi.mock factory callbacks (#21414) (CΓ©dric Exbrayat)

    a904883 linter/consistent-type-imports: Ignore vue/svelte/astro files (#21415) (bab)

    2498fe6 linter/no-unused-vars: Allow segments of dotted namespace declarations (#21416) (bab)

    44b5b35 linter: Preserve vitest-compatible jest rules when applying overrides (#21389) (Cameron)

    7bd8331 linter/prefer-ending-with-an-expect: Add missing version docs (#21390) (Said Atrahouch)

    43d8f0d linter/no-useless-assignment: Ignore writes read by closures (#21380) (camc314)

    πŸ“š Documentation

    c1eeae3 linter: Add version to rule.json (#21547) (camchenry)

    0ec6ab2 linter: Improve the vitest/no-importing-vitest-globals rule documentation. (#21557) (connorshea)

    Oxfmt v0.46.0

    πŸ’₯ BREAKING CHANGES

    24fb7eb allocator: [BREAKING] Rename Box and Vec methods (#21395) (overlookmotel)

    πŸš€ Features

    5aa7fe1 oxfmt: Add --disable-nested-config CLI flag (#21514) (leaysgur)

    b5cb8d1 oxfmt: Update prettier to 3.8.3 (#21451) (leaysgur)

    16713d5 oxfmt/cli: Support per-directory config (#21103) (leaysgur)

    952de06 oxfmt/lsp: Support per-directory config (#21081) (leaysgur)

    πŸ› Bug Fixes

    a501a53 formatter: Handle comments after pipe in single-member union types (#21487) (John Costa)

    6f49fad oxfmt: Respect nested config.ignorePatterns (#21489) (leaysgur)

    7c98d52 oxfmt: Do not panic on finding invalid nested config (#21461) (leaysgur)

    41bb2d5 formatter: Preserve more intrinsic parens (#21449) (leaysgur)

    f894750 formatter: Preserve parens around intrinsic in type alias annotation (#21410) (Dunqing)

    ⚑ Performance

    df27b48 oxfmt: Skip ancestors check when no nested config found (#21517) (leaysgur)

    5e1522a oxfmt: Do not occupy the rayon thread solely for handover (#21408) (leaysgur)

    Original source
  • Apr 20, 2026
    • Date parsed from source:
      Apr 20, 2026
    • First seen by Releasebot:
      Apr 21, 2026
    typescript-eslint logo

    typescript-eslint

    v8.59.0

    typescript-eslint ships 8.59.0 with broader no-unnecessary-type-assertion reporting.

    8.59.0 (2026-04-20)

    πŸš€ Features

    eslint-plugin: [no-unnecessary-type-assertion] report more cases based on assignability (#11789)

    ❀️ Thank You

    Ulrich Stark

    See GitHub Releases for more information.

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

    Original source
  • Apr 17, 2026
    • Date parsed from source:
      Apr 17, 2026
    • First seen by Releasebot:
      Apr 18, 2026
    Eslint logo

    Eslint

    ESLint v10.2.1 released

    Eslint ships v10.2.1 as a patch release with bug fixes for code path analysis, async promise executor false positives, and clearer validation errors, plus documentation and test updates.

    We just pushed ESLint v10.2.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release.

    Bug Fixes

    • 14be92b fix: model generator yield resumption paths in code path analysis (#20665) (sethamus)
    • 84a19d2 fix: no-async-promise-executor false positives for shadowed Promise (#20740) (xbinaryx)
    • af764af fix: clarify language and processor validation errors (#20729) (Pixel998)
    • e251b89 fix: update eslint (#20715) (renovate[bot])

    Documentation

    • ca92ca0 docs: reuse markdown-it instance for markdown filter (#20768) (Amaresh S M)
    • 57d2ee2 docs: Enable Eleventy incremental mode for watch (#20767) (Amaresh S M)
    • c1621b9 docs: fix typos in code-path-analyzer.js (#20700) (Ayush Shukla)
    • 1418d52 docs: Update README (GitHub Actions Bot)
    • 39771e6 docs: Update README (GitHub Actions Bot)
    • 71e0469 docs: fix incomplete JSDoc param description in no-shadow rule (#20728) (kuldeep kumar)
    • 22119ce docs: clarify scope of for-direction rule with dead code examples (#20723) (Amaresh S M)
    • 8f3fb77 docs: document meta.docs.dialects (#20718) (Pixel998)

    Chores

    • 7ddfea9 chore: update dependency prettier to v3.8.2 (#20770) (renovate[bot])
    • fac40e1 ci: bump pnpm/action-setup from 5.0.0 to 6.0.0 (#20763) (dependabot[bot])
    • 7246f92 test: add tests for SuppressionsService.load() error handling (#20734) (kuldeep kumar)
    • 4f34b1e chore: update pnpm/action-setup action to v5 (#20762) (renovate[bot])
    • 51080eb test: processor service (#20731) (kuldeep kumar)
    • e7e1889 chore: remove stale babel-eslint10 fixture and test (#20727) (kuldeep kumar)
    • 4e1a87c test: remove redundant async/await in flat config array tests (#20722) (Pixel998)
    • 066eabb test: add rule metadata coverage for languages and docs.dialects (#20717) (Pixel998)
    Original source
  • Apr 16, 2026
    • Date parsed from source:
      Apr 16, 2026
    • First seen by Releasebot:
      Apr 16, 2026
    Oxc logo

    Oxc

    oxc crates_v0.126.0

    Oxc releases a broad update with breaking allocator method renames, parser support for turbopack magic comments, new napi transform options, and fresh NonNull pointer types. It also brings bug fixes, performance work, and documentation cleanups across the codebase.

    BREAKING CHANGES

    24fb7eb allocator: [BREAKING] Rename Box and Vec methods (#21395) (overlookmotel)

    Features

    ce5072d parser: Support turbopack magic comments (#20803) (Kane Wang)

    f5deb55 napi/transform: Expose optimizeConstEnums and optimizeEnums options (#21388) (Dunqing)

    24b03de data_structures: Introduce NonNullConst and NonNullMut pointer types (#21425) (overlookmotel)

    Bug Fixes

    d7a359a ecmascript: Treat update expressions as unconditionally side-effectful (#21456) (Dunqing)

    56af2f4 transformer/async-to-generator: Correct scope of inferred named FE in async-to-generator (#21458) (Dunqing)

    b3ed467 minifier: Avoid illegal var; when folding unused arguments copy loop (#21421) (fazba)

    b0e8f13 minifier: Preserve var inside catch with same-named parameter (#21366) (Dunqing)

    4fb73a7 transformer/typescript: Preserve execution order for accessor with useDefineForClassFields: false (#21369) (Dunqing)

    Performance

    c22cba6 allocator: Simplify pointer calculation when creating Arena chunks (#21475) (overlookmotel)

    da3cc16 parser: Refactor out LexerContext (#21275) (Ulrich Stark)

    Documentation

    c5b19bb allocator: Reformat comments in Arena (#21448) (overlookmotel)

    091e88e lexer: Update doc comment about perf benefit of reading through references (#21423) (overlookmotel)

    922cbee allocator: Remove references to "bump" from comments (#21397) (overlookmotel)

    Original source
  • Apr 13, 2026
    • Date parsed from source:
      Apr 13, 2026
    • First seen by Releasebot:
      Apr 14, 2026
    typescript-eslint logo

    typescript-eslint

    v8.58.2

    typescript-eslint fixes package publishing and improves no-unnecessary-condition type-predicate checks in 8.58.2.

    8.58.2 (2026-04-13)

    🩹 Fixes

    • remove tsbuildinfo cache file from published packages (#12187)
    • eslint-plugin: [no-unnecessary-condition] use assignability checks in checkTypePredicates (#12147)

    ❀️ Thank You

    Abhijeet Singh @cseas

    μ†‘μž¬μš±

    See GitHub Releases for more information.

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

    Original source
  • 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
  • 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