Why I’m Not Ready to Trust BiomeJS (Yet)

I tried BiomeJS recently and honestly—I couldn’t fall in love with it.

Sure, it’s blazing fast, written in Rust, and promises to replace ESLint + Prettier in one shot. But the reality wasn’t that smooth:

  • It feels too opinionated. Instead of fitting into my workflow, it wanted me to adapt to its rules and defaults.

  • Speed is nice (I’ve seen people lint hundreds of files in milliseconds), but in my projects performance bottlenecks rarely come from linting. What matters more is flexibility and ecosystem support.

  • The maturity isn’t there yet. If I run into an edge case or need a plugin, Biome doesn’t give me the same safety net that a stable, well-adopted toolchain does.

  • Migration also isn’t as seamless as it sounds. Rewriting configs, figuring out which rules match what—I’d rather not burn hours just to get back to where I already was.

Funny enough, even ESLint’s latest releases remind me of this balance. They’ve added flat configs, better defaults, even multithreaded linting—but those changes showed me how much ecosystem readiness matters. A shiny new config system doesn’t help if plugins and tools aren’t ready to support it.

So for now, I’m staying with the “boring but reliable” stack. BiomeJS looks promising, and I’ll keep an eye on it. But until it feels stable enough to trust in production, I’m not ready to make it my team’s daily driver.

Sometimes boring tools are exactly what you need to keep shipping.