Linting & Formatting
Catching bugs and keeping style consistent in the Rust-tooling era.
Linters
- ★ ESLint 9 (flat config) — still the king for JS/TS linting. Largest plugin ecosystem.
- ★ Biome — Rust-based linter + formatter in one binary; covers a meaningful subset of ESLint rules at huge speedups.
- oxlint — even faster Rust linter; OXC-based; useful as a fast pre-commit gate.
- Knip — find unused files / exports / dependencies.
- dprint — Rust-based formatter (multi-language); pluggable.
Formatters
- ★ Prettier — still the default for opinionated formatting.
- ★ Biome — does formatting too; faster than Prettier and resolves more cleanly.
Type-aware linting
- typescript-eslint — type-aware ESLint rules; necessary for the deepest checks.
- TS strict mode — turn on
strict,noUncheckedIndexedAccess,exactOptionalPropertyTypes. Half of "linting" is just these flags.
CSS / styles
- Stylelint — CSS linting; less needed when using Tailwind.
Pre-commit / Git hooks
- Husky — Git hooks made easy.
- lint-staged — run linters only on changed files.
- simple-git-hooks — minimal alternative.
Pick this if…
- Default project: ESLint + Prettier (boring, works, plugins for everything).
- Want speed and one tool: Biome.
- Need ESLint plugins (Next.js, react-hooks, etc.) but want a fast preflight: ESLint + oxlint.
- Massive monorepo, every second counts: Biome or oxlint.