Skip to content
Zap Studio
oxlint
Esc
navigateopen⌘Jpreview
On this page

Plugins

Where every rule in every preset comes from — the upstream plugin or spec it's ported or wrapped from, and where to read why a rule is off.

Every rule in oxlint traces back to one of two places: a plugin built into oxlint itself (ported from an upstream ESLint plugin into Rust, and run natively), or an external ESLint plugin loaded through jsPlugins and run as real JS. This page lists both, with a link to the upstream source and a link to the file in this repo where the rule is turned on or off — every "off" entry carries a comment explaining why, so you never have to guess.

Built into oxlint

These run as native oxc rules, ported from the ESLint plugin named. Browse the full ported rule set on oxc’s rules reference; the upstream link is where the rule concept and original docs come from.

None of these appear in package.json — oxlint ships its own port, so there’s no npm dependency to install or version to track.

External ESLint plugins

These are real npm packages, loaded through jsPlugins and run as actual ESLint plugin JS (listed as dependencies in packages/oxlint/package.json). Every upstream rule is covered — either "error" or explicitly "off" with a comment.

Plugin Package Upstream Rule decisions in this repo
regexp eslint-plugin-regexp GitHub · docs _rules-regexp.ts
sonarjs eslint-plugin-sonarjs GitHub · rule docs _rules-sonarjs.ts
github eslint-plugin-github GitHub _rules-github.ts (base); its 4 a11y-* rules with no jsx-a11y equivalent live in react-a11y.ts instead
e18e @e18e/eslint-plugin GitHub _rules-e18e.ts
playwright eslint-plugin-playwright GitHub playwright.ts, rules in _rules-playwright.ts
react-doctor oxlint-plugin-react-doctor GitHub (directory packages/oxlint-plugin-react-doctor) react-doctor.ts (framework-agnostic core, rules in _rules-react-doctor.ts) and the per-framework leaves, each with its own _rules-react-doctor-*.ts
tanstack-query @tanstack/eslint-plugin-query Docs · GitHub tanstack-query.ts, rules in _rules-tanstack-query.ts
tanstack-router @tanstack/eslint-plugin-router Docs · GitHub tanstack-router.ts, rules in _rules-tanstack-router.ts
stylex @stylexjs/eslint-plugin GitHub stylex.ts, rules in _rules-stylex.ts
tailwindcss eslint-plugin-tailwindcss GitHub tailwindcss.ts, rules in _rules-tailwindcss.ts
testing-library eslint-plugin-testing-library GitHub testing-library.ts, rules in _rules-testing-library.ts
jest-dom eslint-plugin-jest-dom GitHub jest-dom.ts, rules in _rules-jest-dom.ts
cypress eslint-plugin-cypress GitHub cypress.ts, rules in _rules-cypress.ts
storybook eslint-plugin-storybook GitHub storybook.ts, rules in _rules-storybook.ts
solid eslint-plugin-solid GitHub solid.ts, rules in _rules-solid.ts

react-doctor is the one wrapped plugin that ships its own per-framework rule slices — presets explains how those slices map onto the framework and library leaf presets. Its framework-agnostic core used to duplicate roughly 90 rules already owned by react, react-perf, and jsx-a11y; those now live exclusively in the plugin that originates them, not in react-doctor.

Original rules

anti-slop isn’t wrapped from anything upstream — it’s original to this repo. Its rules and their rationale live directly in src/anti-slop/rules.

Checking why a rule is off

Every "off" entry in this package sits next to a comment explaining the reason — a deprecation, a false-positive pattern, an option this repo’s rule-map shape can’t express. Open the file for the plugin in question (linked in the tables above) and search for the rule name; the comment sits directly above it. If a rule you’d expect isn’t covered at all, it means the preset simply doesn’t load that plugin — check presets for which plugins each preset pulls in.

Last updated on September 21, 2026

Was this page helpful?