# ESLint
ESLint is the JavaScript linter that made linting **pluggable**: created by Nicholas Zakas in 2013, every rule is a plugin, every plugin an npm package, and a decade of ecosystem rules (React hooks, imports, accessibility, security, `typescript-eslint`) grew on that foundation. The "flat config" (`eslint.config.js`) era finally simplified its notoriously layered configuration.
Its dominance is now under real pressure, and the reason is structural: a linter written in JavaScript re-parses the world on every run, and type-aware rules drag the TypeScript compiler along. [[Oxc]]'s Oxlint runs the same class of checks 50-100x faster in Rust, ESLint-compatible on rules that matter, with type-awareness included. Biome makes the same argument.
## How I read the transition
ESLint's moat is the **long tail of plugins** — a framework-specific or in-house rule set keeps you on it (or running it as a slow second pass behind Oxlint). For everything else, Rust linting on every save is the obviously correct default in 2026. The plugin ecosystem was the innovation; it is also the anchor.
## References
- [ESLint Website](https://eslint.org)
## Related
- [[Oxc]] — Oxlint, the successor-in-progress
- [[Prettier]] — its formatting-side sibling, same displacement story
- [[Vite]] — the same JS-to-Rust toolchain wave