Development··3 min read

Can Biome Actually Replace ESLint + Prettier?

Three weeks of switching to Biome on a side project — an honest assessment

It Started on a Saturday Morning

I was staring at my ESLint config. Eleven plugins in .eslintrc.json. eslint-plugin-import, eslint-plugin-jsx-a11y, @typescript-eslint... plus eslint-config-prettier to prevent conflicts. Honestly, if you told me to rewrite this config from scratch, I couldn't. It's Frankenstein code — copy-pasted from Stack Overflow two years ago with plugins bolted on whenever something broke.

So I decided to try Biome. (Honestly, it just looked cool on Twitter.)

Installation Was Genuinely Fast

One line: npm install --save-dev --save-exact @biomejs/biome. Run npx @biomejs/biome init and you get a single biome.json. Compare that to ESLint + Prettier: 3 config files, 14 dependency packages. Biome: 1 config file, 1 package.

Running lint + format is also one command: npx biome check --write . That simplicity won me over immediately.

The Speed Difference Is Real

My project was a 287-file Next.js app. ESLint + Prettier took 8.3 seconds. Biome finished the same project in 0.47 seconds. (It fluctuated between 0.47 and 0.52 seconds, to be precise.) Almost 17x faster. Built in Rust, so that tracks. The lint stage in CI got noticeably shorter.

But here's the thing — whether it's 8 seconds or 0.5 seconds, both are one coffee sip. The actual perceived difference wasn't as revolutionary as I'd hoped. More "oh, that's fast" than "my life has changed."

Here's Where It Gets Disappointing

The plugin ecosystem is still way behind ESLint. This is the biggest issue. Some things like eslint-plugin-react-hooks are built into Biome, which is nice. But the import sorting rules from eslint-plugin-import? Gone. eslint-plugin-testing-library? Doesn't exist in Biome.

Custom rules aren't possible either. ESLint lets you write AST-based custom rules. Biome has no extension points. That means you can't enforce "our team's specific conventions."

Formatting That's Subtly Different from Prettier

Biome's formatter is 97% compatible with Prettier according to the docs. But that 3% is surprisingly noticeable. Long ternary operators format differently, some JSX line break positions change — the diff was hundreds of lines. Drop Biome into an existing codebase and your first commit is a massive formatting change.

Side project, so I just committed it. But on a team project, that diff would destroy git blame. That's a genuinely serious concern.

My Verdict After Three Weeks

For side projects or brand new projects, Biome is clearly better. Simple config, fast, all-in-one. But for projects already deep in the ESLint ecosystem, it's too early.

I ended up keeping ESLint + Prettier for my work projects. The team depends on eslint-plugin-boundaries, and there's no Biome replacement. I calculated we could save roughly $340 worth of CI time annually, but the migration risk was bigger.

Will This Be the Same Story in a Year?

I saw Biome's roadmap mentioning a plugin system in development. If that ships, the conversation changes completely. ESLint is also simplifying with flat config, but it still can't match Biome's one-command simplicity.

If you ask "should I switch right now?" — my answer is "not yet." But "should I keep an eye on it?" — absolutely. Whether Biome becomes a footnote or ESLint's successor, either way the linting user experience is getting better.

I'm still using Biome on side projects. This blog runs on Biome too. (Honestly? It just looks cool.)

Related Posts