@oxlint/plugins
1.89.0 · 19 Oct 2026MIT3.7M / weekRepositoryHomepagenpmAtom feed
43 stable releases, newest first, by release line. Notes are quoted as the maintainers published them.
1.89.0
19 Oct 2026- breaking
ast: Preserve lone surrogates in static property names
- breaking
ast: Preserve lone surrogates in static member names
linter: Mark vue 3 rules as recommended
Breaking changes
- breaking
ast: Preserve lone surrogates in static property names
- breaking
ast: Preserve lone surrogates in static member names
Features
linter: Mark vue 3 rules as recommended
linter: Mark react/react-hooks rules as recommended
linter: Mark promise rules as recommended
linter: Mark node rule as recommended
linter: Mark nextjs rules as recommended
linter: Mark jsx-a11y rules as recommended
linter: Mark jsdoc rules as recommended
linter: Mark jest/vitest rules as recommended
linter: Mark import rules as recommended
linter: Mark unicorn rules as recommended
linter: Mark typescript rules as recommended from upstream
linter: Mark eslint rules as recommended from upstream
Bug Fixes
linter: Check module specifiers and string values that contain lone surrogates
linter: Search string values without UTF-8 conversion
linter/unicorn/no-useless-undefined: Allow
undefinedinReact.useReflinter/unicorn/prefer-spread: Ignore super method calls
linter/eslint/prefer-const: Report destructuring assignments inside blocks
linter/eslint/sort-vars: Report every out-of-order declaration
linter/unicorn/prefer-string-replace-all: Resolve regex variables
linter/eslint/no-loop-func: Detect writes after the loop
linter/eslint/block-scoped-var: Ignore declarations without writes
linter/eslint/no-lonely-if: Check final else blocks in else-if chains
linter/eslint/sort-imports: Check imports after other statements
linter/unicorn/prefer-at: Report slice index reads once
linter/eslint/prefer-arrow-callback: Ignore functions used as conditional tests
linter/eslint/sort-keys: Check computed identifier names
linter/unicorn/prefer-native-coercion-functions: Check object methods and function properties
linter/unicorn/prefer-string-raw: Check object property values
linter/eslint/prefer-template: Report separate nested concatenations
linter/eslint/no-unused-vars: Count conditional calls in sequences as uses
linter/unicorn/prefer-regexp-test: Check logical operands in boolean contexts
linter/eslint/class-methods-use-this: Count this in parameter defaults
linter/eslint/no-param-reassign: Report rest parameter writes
linter/unicorn/prefer-type-error: Handle parenthesized type checks
linter/unicorn/catch-error-name: Check unused underscore-prefixed names
linter/unicorn/no-array-callback-reference: Ignore callback factory calls
linter/eslint/max-params: Count rest parameters
linter/eslint/no-useless-assignment: Report dead stores to function parameters
linter/eslint/no-setter-return: Check setters in property descriptors
linter/eslint/id-length: Check destructuring assignment targets
linter/eslint/no-magic-numbers: Restrict unary exemptions to numeric signs
linter/eslint/no-div-regex: Report quantified leading equals
linter/unicorn/consistent-function-scoping: Count self-referencing variables as captures
linter/unicorn/catch-error-name: Avoid fix symbol name collisions
oxlint,oxfmt: Correct Node.js TypeScript support range
linter/eslint/no-var: Avoid fixes for redeclared bindings
Performance
linter/react/jsx-key: Avoid redundant key clones
1.88.0
13 Oct 2026- breaking
ast: Refactor comment attachment storage
- breaking
ast: Add comment attachment storage
oxlint/lsp: Show config errors to LSP client
Breaking changes
- breaking
ast: Refactor comment attachment storage
- breaking
ast: Add comment attachment storage
Features
oxlint/lsp: Show config errors to LSP client
linter/unicorn/prefer-query-selector: Add
allowWithVariablesoption
Bug Fixes
linter/sort-keys: Compare natural order like ESLint
linter/unicorn/prefer-bigint-literals: Unwrap redundant constructor call; don't auto-fix for lost precision
linter: Prevent conflicting type import fixes
oxfmt: Follow symlinked configs in discovery
oxlint,oxfmt: Set stderr blocking
Performance
linter/oxc/bad-array-method-on-arguments: Check arguments references once
linter/plugins: Inline
firstCommentAtOrAfterinto call siteslinter/plugins: Use shift over multiply for powers of 2
linter: Share one source per file across type-aware diagnostics
minifier: Use ident when checking specific id names
1.87.0
5 Oct 2026linter/react/no-unescaped-entities: Implement suggestion
linter/unicorn/no-useless-switch-case: Implement suggestion
linter/react/jsx-no-target-blank: Implement suggestion
Features
linter/react/no-unescaped-entities: Implement suggestion
linter/unicorn/no-useless-switch-case: Implement suggestion
linter/react/jsx-no-target-blank: Implement suggestion
Bug Fixes
linter/jsx-a11y/label-has-associated-control: Validate label attribute values
linter/jsx-a11y/mouse-events-have-key-events: Handle nullish event handlers
linter/jsx-a11y/lang: Validate lang expression strings
linter/unicorn/numeric-separators-style: Report misgrouped BigInt literals
linter/unicorn/no-zero-fractions: Parenthesize separator and large integers in fixer
parser: Validate TypeScript type member separators
linter/eslint/prefer-exponentiation-operator: Preserve autofix precedence
linter/valid-title: Continue checks after allowed words
linter/eslint/no-unused-vars: Respect disabled argument checks for used ignore patterns
1.86.0
28 Sep 2026linter/react/only-export-components: Support
allowCompoundComponentslinter: Add typescript/no-generated-empty-object-type
linter/typescript/no-unnecessary-parameter-property-assignment: Account for parameter property reassignment
Features
linter/react/only-export-components: Support
allowCompoundComponentslinter: Add typescript/no-generated-empty-object-type
Bug Fixes
linter/typescript/no-unnecessary-parameter-property-assignment: Account for parameter property reassignment
linter/eslint/one-var: Keep
declarewhen splitting declarationslinter/eslint/require-await: Count
await usingas an awaitlinter/plugins: Include executing selectors in JS plugin rule timings
react-compiler: Handle recursive function expressions
react-compiler: Treat zero-argument new Date as impure
oxlint: Skip type-aware lint rules in type-check-only mode
oxlint: Skip undefined children in CFG walker
parser: Handle HTML comment values
linter/typescript/unified-signatures: Align rule with upstream
linter/node/no-exports-assign: Change category from style to suspicious
linter/import/no-duplicates: Distinguish import attributes
linter/unicorn/prefer-spread: Stop checking string split calls
linter/eslint/no-unused-vars: Honor ignore patterns inside array rest bindings
linter/eslint/no-unused-vars: Recognize consumed update expressions
linter/eslint/prefer-const: Ignore embedded assignments
Performance
linter/eslint/no-unused-vars: Skip sequence checks when absent
1.85.0
21 Sep 2026oxlint,oxfmt: Do not discover nested config in Vite+ mode
1.84.0
21 Sep 2026Oxlint v1.84.0
Oxfmt v0.69.0
oxlint,oxfmt: Find all
vite.config.*variants
Table of Contents
Oxlint v1.84.0
Oxfmt v0.69.0
Oxlint v1.84.0
Features
oxlint,oxfmt: Find all
vite.config.*variantslinter: Report JavaScript plugin rule timings
linter/unicorn/no-unreadable-iife: Implement suggestion
Bug Fixes
linter/eslint/no-unused-vars: Report private namespace bindings
oxlint/lsp: Align nested config handling with
configPathsemanticslinter/esliny/no-unused-vars: Handle comments when removing imports
linter/esliny/no-unused-vars: Preserve rest bindings when removing array elements
linter/eslint/preserve-caught-error: Prevent conflicting fixes with prefer-optional-catch-binding
linter/unicorn/consistent-function-scoping: Detect ancestor-only function captures
linter/vitest/prefer-to-be-truthy: Suggest assertion rewrites
parser: Preserve reparsed
awaittokenslinter/react: Add a few more missing properties to
no-unknown-property
Performance
linter/eslint/no-restricted-exports: Skip inactive configurations
linter/eslint/capitalized-comments: Avoid unnecessary case-conversion allocations
linter/oxc/no-map-spread: Avoid collecting spread spans twice
linter/eslint/no-inline-comments: Skip unnecessary JSX node scans
linter/eslint/no-control-regex: Avoid temporary diagnostic allocations
linter/promise/no-multiple-resolved: Avoid collecting executor parameters
linter/jsx-a11y/anchor-ambiguous-text: Avoid temporary word allocations
linter/react/jsx-handler-names: Avoid temporary prefix collections
linter/typescript/consistent-generic-constructors: Avoid intermediate comment strings
linter/typescript/triple-slash-reference: Avoid attribute parsing allocations
linter/unicorn/prefer-export-from: Avoid temporary attribute vector
linter/eslint/no-useless-assignment: Short-circuit identical scopes
Oxfmt v0.69.0
Features
oxlint,oxfmt: Find all
vite.config.*variantsformatter_markdown: Keep frontmatter verbatim
formatter_markdown: Implement markdown formatter
formatter: Glue
fbtcomponent and text
Bug Fixes
formatter_markdown: Fix real-world missmatches
formatter: Keep after-operator comments in place
formatter: Let union place leading comments at
as|satisfiesformatter: Fix block comment with RHS assignment and typecast-ed arrow body
formatter: Preserve redundant parens for
TSTypeAliasDeclarationwith suppress comment
1.83.0
14 Sep 2026Oxlint v1.83.0
Oxfmt v0.68.0
linter/react: Update lint rules to accomodate changes in React 19.3
Table of Contents
Oxlint v1.83.0
Oxfmt v0.68.0
Oxlint v1.83.0
Features
linter/react: Update lint rules to accomodate changes in React 19.3
Bug Fixes
linter/unicorn/prefer-array-flat-map: Report
.filter().flatMap()chainslinter/unicorn/prefer-at: Report single-character substring calls
linter/eslint/no-unused-vars: Respect rest params after-used option
linter/eslint/no-unused-vars: Preserve ambient implicit exports
linter/unicorn/prefer-global-this: Preserve window event method references
linter/unicorn/prefer-default-parameters: Report violation for
??=and||=linter/unicorn/prefer-array-flat: Skip plain
concatnormalizationoxlint: Replace backlashes path for "no js runtime" diagnostic
linter/typescript/prefer-for-of: Handle computed collections
linter/typescript: Mark
no-unnecessary-type-parametersandprefer-findsuggestions as implementedlinter: Compare label text in runtime optimization assertion
linter: Include file path in diagnostic assertion
parser: Reject return types on constructor overloads
Performance
linter/react/jsx-pascal-case: Avoid temporary name segment vector
linter/promise/catch-or-return: Avoid temporary formatting vectors
linter/jsx-a11y/no-static-element-interactions: Avoid role vector
linter/jsx-a11y/anchor-is-valid: Avoid temporary attribute vector
deafdba linter/react/exhaustive-deps: Avoid temporary dependency vector
linter/oxc/branches-sharing-code: Compute deletion spans lazily
linter/react/jsx-curly-brace-presence: Avoid newline position allocation
linter/eslint/no-restricted-properties: Skip empty configurations
linter/oxc/no-barrel-file: Iterate module requests directly
linter/unicorn/prefer-single-call: Avoid temporary argument vector
linter/unicorn/prefer-includes: Reduce suggestion allocations
linter/unicorn/no-new-buffer: Avoid temporary argument vector
linter/jsdoc/require-yields: Short-circuit JSDoc checks
linter/unicorn/no-useless-undefined: Skip calls without trailing undefined
linter/eslint/no-unused-vars: Skip absent global declaration checks
linter/eslint/no-undef: Check globals once per unresolved name
linter/eslint/no-restricted-imports: Avoid redundant import scans
linter/eslint/no-useless-assignment: Skip tracking exported symbols
linter/unicorn/prefer-object-from-entries: Avoid allocating configured paths
linter/eslint/new-cap: Avoid unnecessary callee name allocations
Oxfmt v0.68.0
Features
formatter_core: Add
prefix_alignbuilder andTag::(Start|End)Prefixformatter_test: Test Prettier dynamic snippet tests
Bug Fixes
formatter: Keep an enum member's trailing suppress comment
formatter: Unify suppress comment behavior
oxfmt: Skip shutdown delay on fixed Node 24 releases
formatter_css: Handle less-test-suites failures
formatter: Keep group flat for own-line comment in JSX
formatter_yaml: Clamp
tab_width: 0to 1 to keep semanticsformatter_core: Do not panic with align(0)
formatter: Check
this_paramfor simple parameters testformatter: Keep cast-target assignment and commented parameter patterns
oxfmt: Expand
Fillparts in tsx-in-vue
1.82.0
7 Sep 2026- breaking
parser: Rename
panickedtofatal_errorinParserReturn - breaking
parser: Rename
panickedtofatal_errorinParserReturn - breaking
parser: Reduce
MAX_LENto 256 bytes belowu32::MAX
Table of Contents
Oxlint v1.82.0
Oxfmt v0.67.0
Oxlint v1.82.0
Breaking changes
- breaking
parser: Rename
panickedtofatal_errorinParserReturn
Features
linter/eslint/no-unmodified-loop-condition: Support
checkConditionalExpressionsoption
Bug Fixes
linter/unicorn/numeric-separators-style: Correct schema defaults
jsx-a11y/anchor-has-content: Allow anchors passed as custom component props
linter/eslint/id-length: Exempt TS interface/type-literal members with never
ast_visit: Account for trimmed source offsets
linter/typescript/no-explicit-any: Fix rest parameter to
unknownlinter/react/jsx-no-literals: Check nested JSX expression literals
parser: Fix debug assert failure when lexer error with tokens enabled
oxlint/lsp: Don't try to parse fix message, always fallback
linter/eslint/no-useless-assignment: Handle destructuring assignments
linter/eslint/no-array-constructor: Handle ASI hazards in fixer
linter: Qualify rules in rules output
linter/typescript/no-extraneous-class: Avoid deleting class expressions
linter/eslint/no-unused-vars: Handle stored arrow references
Oxfmt v0.67.0
Breaking changes
- breaking
parser: Rename
panickedtofatal_errorinParserReturn - breaking
parser: Reduce
MAX_LENto 256 bytes belowu32::MAX
Features
formatter_css: Follow the oxc-css-parser's acceptance line
Bug Fixes
formatter: Treat a JSDoc cast target as opaque in chain layouts
formatter: Keep JSDoc cast parens with a comment inside them
formatter_css: Keep comment inside important and simple-vars colon
formatter_css: Keep a same-line line comment on its line
formatter_css: Never drop comments inside an at-rule prelude
formatter_css: Keep a line comment on its comma's line
formatter_css: Hide raw comment printing API, use strcut instead
formatter_css: Preserve comments around SCSS/Less variable values
formatter_css: Keep leading comments before
formatter_graphql: Align comment printing after open
{formatter_css: Fix SCSS bracket list printing
formatter_css: Preserve comment in SCSS paren comma list
formatter_css: Print SCSS map consisntent with and without comment
formatter_css: Preserve trailing comma in single-item scss lists
oxfmt: Bump prettier-plugin-tailwindcss
Performance
oxfmt: Match editorconfig once per file
oxfmt: Match
overridesonce per fileoxfmt: Share resolved
FormatConfigviaArcinstead of cloning per file
1.81.0
1 Sep 2026Oxlint v1.81.0
Oxfmt v0.66.0
linter/nextjs/no-typos: Implement suggestion
Table of Contents
Oxlint v1.81.0
Oxfmt v0.66.0
Oxlint v1.81.0
Features
linter/nextjs/no-typos: Implement suggestion
Bug Fixes
linter/lsp: Prevent tsgolint from holding onto processes
linter/import/no-empty-named-blocks: Make empty value import removal a suggestion
linter/eslint/object-shorthand: Preserve
__proto__semanticslinter/unicorn/prefer-set-size: Ignore shadowed
Setconstructorslinter: Clamp invalid JS plugin locations
linter: Normalize reversed JS plugin locations
linter/eslint/no-use-before-define: Run on JS, JSX files
linter/unicorn/no-useless-spread: Treat typed arrays as a distinct value hint
linter/react/no-unstable-nested-components: Check nested component object property names
linter/eslint/no-unassigned-vars: Skip Svelte and Vue files
linter/plugins: Fix interaction between JS plugins and Vue rules
linter/plugins: Alter method for obtaining mutable
Programwhen sending AST to JS pluginslinter/unicorn/prefer-math-min-max: Avoid unsafe autofix
Oxfmt v0.66.0
Features
formatter/css: Format declaration-shaped raw-prelude rules (postcss nested config blocks)
Bug Fixes
formatter: Re-add suppressed statement terminators per options.semi
formatter: Print suppressed typecast parens
formatter/sort-imports: Handle custom side effect groups
formatter: Do not skip cast comment lookup
formatter: Preserve comment for statement terminators and binary casts
formatter_css: Space a folded sign after a call in Less operations
formatter/jsdoc: Follow CommonMark for interrupting lists and guard wrapping from creating them
formatter: Apply head body policy everywhere
formatter: Keep comments in their for-head slot, before an empty-statement body and do-while
formatter: Keep comments between a head and its body out of the braces across all constructs
formatter: Place comments between a head and open paren
formatter: Place comments between a statement head and its body
formatter: Print the idempotent placement for comments in dropped parens
formatter_yaml: Keep trailing whitespace in block scalars
Performance
diagnostics: Use fixed ANSI styles
1.80.0
24 Aug 2026Oxlint v1.80.0
Oxfmt v0.65.0
linter/typescript/no-confusing-non-null-assertion: Implement suggestion
Table of Contents
Oxlint v1.80.0
Oxfmt v0.65.0
Oxlint v1.80.0
Features
linter/typescript/no-confusing-non-null-assertion: Implement suggestion
Bug Fixes
linter/oxc/double-comparisons: Handle grouped logical expressions
linter/eslint/no-control-regex: Refine help message text
estree: Include decorators in
FormalParameterRestspanslinter/eslint/no-useless-rename: Preserve type modifiers
rust: Address nightly deprecations
linter/vue: Resolve
vueimports via shared import helperslinter/react/no-react-children: Resolve
reactimports by symbollinter: Resolve globals by reference, not by name
linter: Remove invalid React compiler doc links
Oxfmt v0.65.0
Bug Fixes
formatter: Preserve class decorators before export when the statement is suppressed
1.79.0
18 Aug 2026- breaking
linter: Split react/react-compiler into per-category rules
Oxlint v1.79.0
Oxfmt v0.64.0
Table of Contents
Oxlint v1.79.0
Oxfmt v0.64.0
Oxlint v1.79.0
Breaking changes
- breaking
linter: Split react/react-compiler into per-category rules
See React Compiler Support for details.
Features
linter/typescript/no-empty-object-type: Implement suggestion
Bug Fixes
react_compiler: Skip node_modules by default
linter/unicorn/no-array-callback-reference: Ignore effect library imports
linter: Align React Compiler rule categories
linter: Resolve inactive React compiler rules
linter/eslint/no-useless-constructor: Allow parameter properties
linter: Report exhaustive effect dependencies
linter/eslint/no-return-assign: Anchor diagnostic on return stmt
react-compiler: Improve derived state diagnostic
linter/jest/prefer-mock-return-shorthand: Preserve implementations using this
linter/eslint/no-redeclare: Run in ES modules, skipping only the globals check
linter/unicorn/prefer-default-parameters: Mark fixer as a suggestion
linter: Allow spread rule options in config types
linter/typescript/no-useless-empty-export: Skip TS declaration files
linter/typescript/no-useless-empty-export: Report after imports
linter/typescript/no-unnecessary-type-conversion: Mark fixer as
suggestionlinter/typescript/explicit-module-boundary-types: Anchor diagnostics on arrows
linter/eslint/array-callback-return: Anchor diagnostic on callback
linter/eslint/preserve-caught-error: Handle AggregateError options
linter: Improve React Compiler diagnostics
react-compiler: Improve diagnostic spans
linter/unicorn/prefer-string-replace-all: Apply fixes in one pass
react-compiler: Standardize diagnostics
linter/react/display-name: Report curried HOC inner component
linter/import/no-named-as-default: Report local export conflicts
linter/react/rules-of-hooks: Report hooks inside try blocks
linter/eslint/no-eval: Align indirect default with ESLint
linter/react/exhaustive-deps: Handle destructured object dependencies
linter/eslint/no-unused-vars: Report bare underscore parameters
linter/react/no-this-in-sfc: Detect this in nested arrow callbacks
linter/typescript/no-var-requires: Run rule on JavaScript
linter/eslint/no-irregular-whitespace: Check comments by default
linter/import/no-named-default: Flag type-only named defaults
linter/typescript/no-non-null-asserted-optional-chain: Detect assertions after continued optional chains
linter/react/no-direct-mutation-state: Detect computed state mutations
linter/unicorn/no-abusive-eslint-disable: Use directive prefix in diagnostic
linter/eslint/max-classes-per-file: Anchor diagnostic at program start
linter/eslint/no-multi-assign: Handle parenthesized declarator initializers
linter/jest/expect-expect: Detect assertions in nested function declarations
linter/no-large-snapshots: Precompile and document allowed snapshot matchers
linter/eslint/prefer-promise-reject-errors: Report on spread arguments
oxlint,oxfmt: Apply .gitignore only to walk targets, not explicitly named files
semantic: Classify global references per identifier
estree: Emit
decoratorsonFormalParameterRestlinter/plugins: Parse rule-less directive justifications
linter/unicorn/prefer-node-protocol: Validate exact Node.js built-in specifiers
linter/promise/no-multiple-resolved: Ignore unresolved globals
linter/expect-expect: Validate assertion regex
linter/react/exhaustive-deps: Treat binary expressions as a stable dependency
linter: Allow capitalized built-in calls
react_compiler: Bail out instead of panicking on "Expected a node for all scopes"
linter/vitest/prefer-expect-assertions: Handle parameterized Vitest assertion suggestions
Performance
linter: Shrink rule serialization dispatch
estree_tokens: Share JS token update entry point
linter: Compute sort keys once with sort_by_cached_key
linter: Share config deserialization entry point
oxlint: Reduce debug formatting code size
linter: Use unstable sorts for unique keys
linter: Outline diagnostic construction
diagnostics: Preallocate graphical output
diagnostics: Batch graphical reports
linter: Use table for rule names
Oxfmt v0.64.0
Features
oxfmt: Support
experimentalOperatorPositionformatter: Implement
operatorPositionoption
Bug Fixes
formatter: Fix comment and indent issues around unions
formatter: Keep comments in place when dropping
EmptyStatementformatter: Print
JSDocUnknownTypeformatter: Keep nested awaited-paren member chain grouped in call arguments
oxlint,oxfmt: Apply .gitignore only to walk targets, not explicitly named files
formatter_css: Fill own-line block comments inside space-separated values
formatter_css: Keep trailing comma and indent after comment-preceded last map value
oxfmt: Mirror printer line suppression and restore dedent-to-root
formatter: Keep unary comment and print only needed parens
formatter_yaml: Consistent chomped eos behavior
formatter_yaml: Bump oxc-yaml-parser for contentless block scalar
formatter_css: Keep multi value function args intact after leading comment
1.78.0
10 Aug 2026Oxlint v1.78.0
Oxfmt v0.63.0
linter/jsdoc: Implement
no-blank-blocksrule
Table of Contents
Oxlint v1.78.0
Oxfmt v0.63.0
Oxlint v1.78.0
Features
linter/jsdoc: Implement
no-blank-blocksrulelinter/eslint: Implement
one-varrulelinter/jsx-a11y/anchor-has-content: Add options to match eslint
Bug Fixes
linter/eslint/no-implicit-coercion: Preserve template coercion whitespace
linter: Preserve source text for JS plugin ignore fixes
linter/eslint/prefer-promise-reject-errors: Handle parenthesized calls
linter/unicorn/new-for-builtins: Ignore optional chains
linter/unicorn/prefer-code-point: Downgrade the auto-fix to dangerous
linter/vitest: Validate
consistent-test-filenameregex patternsreact_compiler: Disable exhaustive memo validation by default
linter/eslint/no-unused-vars: Report invalid regex options
linter/unicorn/prefer-array-flat: Fix
concat.applysuggestionslinter/react/rules-of-hooks: Detect constructor callbacks
linter/unicorn/new-for-builtins: Support
Float16Arraylinter/unicorn/error-message: Support
SuppressedErrormessageslinter: Assert token lookup invariants
linter/eslint/no-unused-vars: Bound catch parameter lookup
linter/unicorn/switch-case-braces: Bound token lookup
linter/unicorn/no-static-only-class: Bound token lookup
linter/unicorn/empty-brace-spaces: Bound token lookup
linter/eslint/no-unreachable-loop: Do not report loops whose body has a finally block
linter/eslint/no-param-reassign: Validate
ignorePropertyModificationsForRegexpropertylinter/eslint/no-throw-literal: False positive on variable declared without initializer
oxlint: Normalize customized rule names
linter/unicorn/consistent-existence-index-check: Bound token lookup
linter/typescript/prefer-namespace-keyword: Bound token lookup
linter/typescript/no-namespace: Bound token lookup
linter/eslint/one-var: Avoid joining exported declarations
linter/typescript: Validate
ban-ts-commentdescription_formatlinter/typescript/consistent-type-definitions: Bound token lookup
linter/typescript/consistent-generic-constructors: Bound token lookup
Performance
linter: Reduce rule config dispatch size
linter: Reduce visitor code size
linter/unicorn/prefer-export-from: Narrow
ExportFromDeclarationlookuplinter/unicorn/prefer-default-parameters: Avoid reference allocation
linter/vue/max-props: Narrow AST dispatch
linter: Avoid diagnostic sorting after applying fixes
oxlint/lsp: Avoid second lock for getting/removing unused directives
oxlint/lsp: Preallocate fix-content vec
linter: Avoid per-call heap allocations in jest and unicorn helpers
linter: Avoid redundant message work in the agent reporter
linter: Hoist
current_dirout of the stylish reporter looplinter: Compute diagnostic
Infoonce per diagnostic in junit reporteroxlint: Render JSON report into a single buffer
linter/typescript/ban-ts-comment: Bail early with substring guard
linter/typescript/ban-tslint-comment: Replace regex with manual parser
Oxfmt v0.63.0
Features
oxfmt: Dispatch yaml-in-css(frontmatter) to
oxc_formatter_yamlformatter_core: Add
hardlineWithoutBreakParentequivalent IR
Bug Fixes
oxfmt: Drop IR Space at line start for js-in-xxx
formatter: Keep comments after TS this_param
formatter: Format xxx-in-js inside JSDoc js fence
formatter,oxfmt: Apply effective print width for JSDoc fence
formatter_core: Unify leading-BOM handlings
formatter: Break mapped type brackets
formatter: Break index signature brackets
formatter_css: Bump oxc-css-parser to accept unknown at-rule with interpolated
formatter_core: Measure decided-flat fill separator as flat during group re-measure
formatter_yaml: Don't rewrite overflowing key to implicit
Performance
oxfmt: Spawn tinypool lazily
1.77.0
3 Aug 2026- breaking
semantic: Return borrowed JSDoc so the parse cache works
- breaking
ast: Store single parameter in
TSIndexSignature::parameter - breaking
ast: Introduce
ExportDeclaration,ExportFromDeclaration
Table of Contents
Oxlint v1.77.0
Oxfmt v0.62.0
Oxlint v1.77.0
Breaking changes
- breaking
semantic: Return borrowed JSDoc so the parse cache works
- breaking
ast: Store single parameter in
TSIndexSignature::parameter - breaking
ast: Introduce
ExportDeclaration,ExportFromDeclaration - breaking
ast: Introduce
ArrowFunctionBodyenum
Features
linter/oxc/bad-char-at-comparison: Expand coverage
oxlint: Show file:line:col in github format annotation messages
Bug Fixes
linter/unicorn/new-for-builtins: Detect parenthesized member expression object
linter: Reject duplicate JS plugin names
linter: Ignore unsigned shifts in prefer-math-trunc
linter/eslint/prefer-promise-reject-errors: Handle ambient error variables
linter/oxc/no-async-await: Bound token lookup
linter/oxc/bad-bitwise-operator: Bound token lookups
linter/import/no-duplicates: Bound token lookup
linter/import/consistent-type-specifier-style: Bound token lookup
linter/eslint/yoda: Bound token lookup
linter/oxc/no-map-spread: Avoid recursive declaration traversal
linter/eslint/prefer-promise-reject-errors: Move category to
pedanticlinter/eslint/require-await: Bound token lookup
linter/eslint/prefer-template: Bound token lookup
linter/unicorn/new-for-builtins: Align Date() diagnostic message with upstream
linter/eslint/prefer-object-spread: Bound token lookup
oxlint,oxfmt: Respect
.gitignorefor walk targets and explicit pathslinter/eslint/prefer-const: Bound token lookup
linter/eslint/object-shorthand: Bound token lookups
linter/eslint/no-var: Bound token lookup
linter/eslint/no-unused-vars: Bound token lookups
linter/eslint/no-unexpected-multiline: Use bounded token lookup
linter/eslint/eqeqeq: Use bounded token lookup
linter: Make the remaining token lookups comment-aware
linter/eslint/prefer-const: Skip Svelte and Vue files
linter: Don't match tokens inside comments when locating spans
linter/typescript/consistent-type-imports: Make token lookups comment-aware
linter: Don't insert an ASI semicolon into an unbraced statement body
linter/no-magic-array-flat-depth: Scan for
(by byte offset instead of character countlinter: Index source text by byte offset instead of char count
linter/eslint/no-warning-comments: Unify config structs and remove manual options docs
linter/eslint/no-unreachable-loop: Handle caught errors correctly
oxlint: Correct --warn flag help text
linter/eslint/no-control-regex: Allow null escape
Performance
linter/vue/no-side-effects-in-computed-properties: Borrow property names in the mutation walk
linter/unicorn/prefer-export-from: Skip non-violating imports early
linter/import/no-cycle: Drop two Vec allocations per graph edge
linter/import/no-cycle: Skip the graph walk for acyclic modules
Oxfmt v0.62.0
Breaking changes
- breaking
ast: Store single parameter in
TSIndexSignature::parameter - breaking
ast: Change
TSIndexSignatureName::nametoIdent - breaking
ast: Introduce
ExportDeclaration,ExportFromDeclaration - breaking
ast: Introduce
ArrowFunctionBodyenum - breaking
oxfmt: Format parser:yaml files by oxc_formatter_yaml
Features
oxfmt: Support tsx-in-vue
oxfmt: Colorize diff file list in check mode
Bug Fixes
formatter_css: Preserve glued plugin words in grid values
oxlint,oxfmt: Respect
.gitignorefor walk targets and explicit pathsoxfmt: Rework tsx-in-vue support
formatter_css: Bump oxc-css-parser for substituted at-rule preludes
formatter: Hug arrows with type-reference return annotations
oxfmt: Correct prose about comment width in fits measurement
oxfmt/conformance: Fix typo
formatter_yaml: Break long keys off a block scalar header
formatter_yaml: Let ancestor collection values claim end comments after block scalars
formatter_yaml: Align sequence container end comments to the dash width
oxfmt: Type jsdoc. enum options
Performance
formatter_css,formatter_graphql,formatter_yaml,formatter_json: Pre alloc IR buffers
1.76.0
27 Jul 2026Oxlint v1.76.0
Oxfmt v0.61.0
linter: Verify eslint/no-restricted-globals config schema
Table of Contents
Oxlint v1.76.0
Oxfmt v0.61.0
Oxlint v1.76.0
Features
linter: Verify eslint/no-restricted-globals config schema
linter: Verify jest/vitest prefer-lowercase-title config schema
linter/oxc: Add bad-match-all-arg rule
linter/n: Implement
exports-stylerulelinter/eslint: Implement
id-denylistrulelinter/typescript-eslint: Implement suggestion for
class-literal-property-stylerule
Bug Fixes
linter: Mark missing suggestions as pending
oxlint: Absolutize explicit CLI paths even with --no-ignore
linter/jsx-a11y/interactive-supports-focus: Match eslint behavior for custom components
linter/typescript/no-confusing-non-null-assertion: Report
inandinstanceoflinter: Unicorn/no-array-reverse and no-array-sort replacements should be suggestions
config: Preserve defineConfig field JSDoc
linter/node/no-top-level-await: Clarify diagnostic
linter/eslint/func-names: Ignore overloads
estree: Handle empty spans serializing
ImportMetaandNewTarget
Performance
linter/jest-vitest/no-test-return-statement: Only run on return statements
linter/eslint/func-style: Rewrite rule to not iterate over all nodes
linter/eslint/no-new-func: Only run on new and call expressions
linter: Avoid
Vecallocations viabound_nameslinter/eslint/no-const-assign: Avoid
Vecallocation perconstdeclaratorlinter/typescript/adjacent-overload-signatures: Avoid collecting vec in some cases
linter/node/exports-style: Iterate once over global references
linter: Avoid allocations in jest/no-deprecated-functions
linter: Speed up jest/vitest prefer-each
linter/eslint/prefer-rest-params: Run once per file
linter/eslint/no-this-before-super: Skip files without classes
linter/plugins: Faster copying comments to JS allocator
linter/plugins: Test booleans with explicit
=== falselinter/plugins: Remove check in loop in
getDisableDirectives
Oxfmt v0.61.0
Features
oxfmt/lsp: Support
oxc.fmt.disableNestedConfigformatter_yaml: Implement YAML formatter
Bug Fixes
formatter_css: Keep leading
+in An+B to enable idempotency checkformatter: Stop preserving indent for embedded template exprs
formatter_css: Align wrapped selector-arg indent
formatter: Align quoted
newsignatureformatter_yaml: Fix indent, blank, and spacing issues
formatter: Check calee chain is_simple
formatter_css: Keep non-ASCII strings with quotes
config: Preserve defineConfig field JSDoc
formatter_css: Print nested SCSS map with consistent indent
formatter/jsdoc: Respect
singleQuoteoption in@importformatter: Fix template literal formatting
Performance
formatter_core: Bound the thread-local scratch cache
formatter: Stage assignment-like left hand side on the heap
formatter: Accumulate JSX child-list builders on the heap
formatter_core: Share one thread-cached scratch vector across staging buffers
formatter_core: Stage IR buffers on the heap to reduce arena memory
1.75.0
21 Jul 2026Reading the note…
1.74.0
14 Jul 2026Reading the note…
1.73.0
6 Jul 2026Reading the note…
1.72.0
29 Jun 2026Reading the note…
1.71.0
22 Jun 2026Reading the note…
1.70.0
15 Jun 2026Reading the note…
1.69.0
8 Jun 2026Reading the note…
1.68.0
1 Jun 2026Reading the note…
1.67.0
26 May 2026Reading the note…
1.66.0
19 May 2026Reading the note…
1.65.0
15 May 2026Reading the note…
1.64.0
11 May 2026Reading the note…
1.63.0
5 May 2026Reading the note…
1.62.0
27 Apr 2026Reading the note…
1.61.0
20 Apr 2026Reading the note…
1.60.0
13 Apr 2026Reading the note…
1.59.0
7 Apr 2026Reading the note…
1.58.0
31 Mar 2026Reading the note…
1.57.0
24 Mar 2026Reading the note…
1.56.0
16 Mar 2026Reading the note…
1.55.0
12 Mar 2026Reading the note…
1.54.0
12 Mar 2026Reading the note…
1.53.0
11 Mar 2026Reading the note…
1.52.0
10 Mar 2026Reading the note…
1.51.0
2 Mar 2026Reading the note…
1.50.0
23 Feb 2026Reading the note…
1.49.0
19 Feb 2026Reading the note…
1.48.0
16 Feb 2026Reading the note…
1.43.0
4 Feb 2026Reading the note…