Skip to content

Oxlint

Oxlint is a high-performance linter for JavaScript and TypeScript that is 50–100x faster than ESLint. It is correctness-focused by default and supports 695+ rules across a wide range of plugins — including TypeScript, React, Unicorn, Import, and jsx-a11y — making migration straightforward.

Oxlint replaces ESLint (and the linting part of Biome) with a Rust-based tool that runs dramatically faster in CI. Drop in oxlint.config.ts to get started and retain fine-grained rule control.

Terminal window
npm i oxlint

Oxlint can be configured with a TypeScript config file (oxlint.config.ts) or a JSON file (.oxlintrc.json). The TypeScript format provides type-safe config with auto-complete.

oxlint.config.ts
import { defineConfig } from 'oxlint'
export default defineConfig({
$schema: './node_modules/oxlint/configuration_schema.json',
plugins: ['import', 'typescript'],
categories: {
correctness: 'error',
suspicious: 'warn',
},
rules: {
'no-console': 'warn',
},
ignorePatterns: ['dist/**', '.astro/**', 'src/content/docs/snippets/**'],
overrides: [
{
files: ['scripts/**'],
rules: {
'no-console': 'off',
},
},
],
})

Enable only the plugins relevant to your stack:

PluginCoverage
typescript@typescript-eslint rules
importeslint-plugin-import-x rules
unicorneslint-plugin-unicorn rules
reacteslint-plugin-react + react-hooks rules
jsx-a11yAccessibility rules for JSX
jesteslint-plugin-jest rules
vitesteslint-plugin-vitest rules
jsdocJSDoc documentation rules
promiseeslint-plugin-promise rules
nodeNode.js-specific rules

Control entire categories at once via categories:

{
"categories": {
"correctness": "error",
"suspicious": "warn",
"style": "warn"
}
}

Individual rules in rules override category-level settings.

Add to package.json:

{
"scripts": {
"lint": "oxlint .",
"lint:fix": "oxlint --fix ."
}
}

Oxlint supports type-aware rules by integrating with oxlint-tsgolint, the tsgo (TypeScript 7 native Go port) bridge.

Terminal window
npm i oxlint-tsgolint

Enable type-aware mode in your config:

oxlint.config.ts
import { defineConfig } from 'oxlint'
export default defineConfig({
options: {
typeAware: true,
},
// ...
})

Oxlint lints the <script> blocks of .astro files automatically — no plugin needed.

Install the OXC extension and add to your workspace settings:

.vscode/settings.json
{
"oxc.enable": true,
"editor.codeActionsOnSave": {
"source.fixAll.oxc": "explicit"
}
}