The JavaScript and TypeScript linter that catches bugs, enforces style, and runs in your editor, CI, and pre-commit hooks.
ESLint is the de-facto linter for JavaScript and TypeScript. It statically analyzes your code to find bugs (using the type information from `typescript-eslint`), enforce style rules, and flag anti-patterns. The output runs in your editor on save, in CI on every pull request, and in pre-commit hooks to keep the diff clean. The modern ESLint stack is flat-config based, fast (ESLint 9 shipped a Rust-backed formatter in collaboration with the Biome team), and integrates with TypeScript via `typescript-eslint`. For most projects, the right setup is ESLint with the `typescript-eslint`, `eslint-plugin-react` (or `react-hooks`), `eslint-plugin-import`, and a few stylistic rules. Honest trade-off: ESLint configuration has historically been the most frustrating part of JavaScript development, and configurations are still a common source of friction in 2026. Tools like `eslint-config-next`, `@typescript-eslint/strict`, and `create-eslint-config` have made this much better, but you should still budget time for it. Biome is the faster, zero-config alternative to consider if ESLint configuration is costing your team time.
`typescript-eslint` integrates TypeScript's type checker for rules that catch real type errors.
Many rules auto-fix on save — formatting, import sorting, and common refactors happen transparently.
Hundreds of plugins for React, Vue, Svelte, accessibility, security, performance, and more.
Modern `eslint.config.js` is simpler and faster than the legacy `.eslintrc`.
Inline warnings and quick-fixes in VS Code, JetBrains, Neovim, and Zed.
Login to comment
No comments yet