Daniel Howells

Biome Killed My ESLint

2026-01-08

My old setup was ESLint, Prettier, and a fragile bridge between them that broke every time either one updated. Dozens of plugins, overlapping rules, config files that nobody understood anymore. It worked until you tried to add a new rule and discovered it conflicted with three others.

Biome replaced all of it. One tool, one config file, one command. biome check src --write does formatting and linting in a single pass. It's written in Rust so it's fast — noticeably fast, not benchmarks-say-it's-fast. On Materia's monorepo with 33 packages, the difference is obvious.

The config is minimal. I extend ultracite/biome/core for strict defaults and override exactly one rule: noBarrelFile is disabled for index.ts files because that's how monorepo packages export their public API. That's the entire configuration. Compare that to the ESLint config I used to maintain — extends, plugins, overrides, parser options, env declarations.

What I like about Biome's approach is that formatting opinions are settled. There's no debate about semicolons (yes), quotes (double), trailing commas (yes), parentheses around arrow function parameters (yes). These decisions are made once in the tool and I never think about them again. ESLint and Prettier let you configure everything, which meant every project started with a configuration discussion that added no value.

Combined with Husky and lint-staged, every commit gets checked automatically. The pre-commit hook runs Biome on staged files only, so it's fast even on large changesets. If something fails, the commit is blocked. No CI surprises.

The migration was straightforward. Remove eslint, prettier, and all their plugins from package.json. Delete .eslintrc, .prettierrc, and whatever other dotfiles had accumulated. Add biome.json. Run biome check --write once across the whole codebase to reformat everything. One commit, done.

I've seen people resist Biome because they have strong opinions about formatting. My advice: let it go. The marginal benefit of your preferred brace style is zero compared to the benefit of never thinking about formatting again.