ESLint
A linter for JavaScript/TypeScript — finds bugs, enforces style, and catches errors before they run. Configurable rules (eslint:recommended, Airbnb, Standard). The standard JS/TS linter. Integrates with editors and CI.
Nicholas Zakas · Created ESLint in 2013
- Every JS/TS project.
- Teams wanting consistent code style.
- Catching bugs before runtime.
- CI/CD pipelines.
- Never — it's the standard.
Definition
ESLint analyzes JS/TS code for problems — bugs, style violations, suspicious patterns. Configurable via .eslintrc with rules (error/warn/off). Plugins for React, accessibility, security. Flat config (eslint.config.js) is the new format. Editor extensions show errors inline.
Why it exists
JS is dynamic — errors often surface at runtime. ESLint catches them statically, enforces consistent style, and automates code review for common issues.
How it works
npm install eslint. eslint.config.js defines rules and plugins. npx eslint src/ lints files. Editor extensions (VS Code ESLint) show errors as you type. eslint --fix auto-fixes many issues. CI runs it to block bad code.
Scaling limits
Config can be complex (flat vs legacy config). Rule conflicts between plugins. Performance on huge codebases. Some rules are opinionated and need tuning.
Cost shape
Free and open source.
Alternatives
- Prettier — Formatting only, no bug detection. Use together.
- Biome — Faster, all-in-one linter+formatter, less mature.
- TSLint — Deprecated, replaced by ESLint.
Failure modes
- Config complexity.
- Plugin conflicts.
- False positives.
- Slow on huge codebases.