This episode explores how Biome, built in Rust, aims to unify JavaScript tooling by combining formatting and linting into a single fast, opinionated tool. Key insights include its architecture with a module graph enabling cross-file analysis and type-aware lint rules, and the project's community-driven evolution from Rome after its company folded.
Summarized by Podsumo
Biome is a Rust-based, drop-in replacement for Prettier and ESLint, offering a unified toolchain with minimal configuration and consistent CLI/editor behavior.
Its module graph enables cross-file analysis and type-aware lint rules without needing the TypeScript compiler, allowing features like detecting unused CSS classes across the project.
The project transitioned from Rome after the company behind it went under, shifting focus from a full toolchain (including bundler) to perfecting formatting and linting with community support.
Biome's plugin system uses GreatQL DSL for project-specific rules, and it's working on a watcher for real-time linting, markdown support, and code fix emissions from plugins.
"You have your error, and Bion tells you, okay, that's how you should do it, or you shouldn't do it... We ship this lint rule that targets the dot reduce function of JavaScript and says to not use the spread operator when you return the accumulator... I've seen people that didn't know that, and once they know the rule, they learned something."
— Emma (Amano Estapa)
"If you give [a plugin system] too much, you end up breaking stuff... that's the line. Like, you should try to give enough power to please your developers and users, but not as much so that you can't innovate."
— Emma (Amano Estapa)