oxlint
- 1.88.0 is the latest, published 13 October 2026.
- No known security advisory.
- 1.x: 91 releases since 10 June 2025, 14 in the last 90 days.
Releases in the last 90 days
Feed of releases and advisoriesEvery stable release, newest first. Notes are quoted as the maintainers published them.
1.88.0
13 October 2026ast: Refactor comment attachment storage
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
- breaking
1.87.0
5 October 2026linter/react/no-unescaped-entities: 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 September 2026linter/react/only-export-components: Support allowCompoundComponents
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 September 2026oxlint,oxfmt: Do not discover nested config in Vite+ mode
Features
oxlint,oxfmt: Do not discover nested config in Vite+ mode
1.84.0
21 September 2026oxlint,oxfmt: Find all vite.config.* variants
Section of a shared release note
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
1.83.0
14 September 2026linter/react: Update lint rules to accomodate changes in React 19.3
Section of a shared release note
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
1.82.0
7 September 2026parser: Rename panicked to fatal_error in ParserReturn
Section of a shared release note
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
unknown[]linter/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
Security
- security
deps: Update npm packages (#26178) (renovate[bot])
- breaking
1.81.0
1 September 2026linter/nextjs/no-typos: Implement suggestion
Section of a shared release note
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
1.80.0
24 August 2026linter/typescript/no-confusing-non-null-assertion: Implement suggestion
Section of a shared release note
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
1.79.0
18 August 2026linter: Split react/react-compiler into per-category rules
Section of a shared release note
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
- breaking
Show 4 earlier releases
1.78.0
10 August 2026linter/jsdoc: Implement no-blank-blocks rule
Section of a shared release note
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
1.77.0
3 August 2026semantic: Return borrowed JSDoc so the parse cache works
Section of a shared release note
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
- breaking
1.76.0
27 July 2026linter: Verify eslint/no-restricted-globals config schema
Section of a shared release note
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
1.75.0
21 July 2026Announcing Type-Aware Linting Stable
Section of a shared release note
Oxlint v1.75.0
Highlights
Features
linter/node: Implement no-top-level-await rule
linter/react: Implement function-component-definition rule
linter: Reuse
jest/padding-around-test-blocksforvitest/padding-around-test-blockslinter/import/consistent-type-specifier-style: Support
prefer-top-level-if-only-type-importsoption
Bug Fixes
oxlint,oxfmt: Report error for invalid glob patterns
linter/unicorn/no-useless-undefined: Preserve valid parameter defaults
linter/eslint/prefer-destructuring: Handle typed declarations
linter/eslint/no-throw-literal: Handle assigned errors
linter: Detect React components from returned JSX
linter/eslint/no-useless-computed-key: Allow TS syntax in computed keys
Performance
linter/unicorn/prefer-event-target: Only run on
ClassandNewExpressionnodesoxlint/lsp: Only invoke lint on code actions when document is not opened
diagnostics: Box OxcDiagnosticInner to reduce binary size
linter/reporter/stylish: Compute diagnostic Info once per diagnostic
Major versions
- 1.xsince 10 June 2025 · latest 1.88.0 · 91 releases
- 0.xsince 27 June 2023 · latest 0.18.1 · 120 releases
Quality and security signals
What npm and deps.dev say about the latest release. Signals, not a verdict.
Reading npm and deps.dev…
Registry facts last checked 14 October 2026. Releases and advisories last read 14 October 2026.
Know when your own dependencies move
Inlinr tracks your coding time automatically. Switch dependency tracking on for a project and it reads that repository's manifest to show what is behind and what has been deprecated — off by default, one project at a time.