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 -D 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.

.oxlintrc.json
{
"$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:

Plugin Coverage
typescript @typescript-eslint rules
import eslint-plugin-import-x rules
unicorn eslint-plugin-unicorn rules
react eslint-plugin-react + react-hooks rules
jsx-a11y Accessibility rules for JSX
jest eslint-plugin-jest rules
vitest eslint-plugin-vitest rules
jsdoc JSDoc documentation rules
promise eslint-plugin-promise rules
node Node.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 -D 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"
}
}