switching to biome from eslint
why i switched to biome from eslint and how you can do it too
Intro
For years, ESLint has been the go-to tool for linting JavaScript and TypeScript projects. Though I never really used it, it was widely adopted.
But in 2023, a new contender entered the scene: Biome (a fork of Rome).
After experimenting with it across a few projects, I decided to make the switch. In this post, I’ll break down what Biome is, why I switched, and how you can migrate smoothly from ESLint + Prettier to Biome.
what is biome
Biome is a fast, all-in-one tool for linting, formatting, and code analysis. It grew out of the Rome project and has quickly become a stable, community-driven alternative to the traditional ESLint + Prettier setup.
Some key features of Biome include:
- Blazing fast: Written in Rust, it runs faster than ESLint + Prettier.
- Batteries included: No need to install dozens of plugins. Biome ships with sensible defaults.
- Unified tooling: Linting, formatting, and (soon) more developer utilities are handled by a single tool.
- Zero config for most projects: Works out of the box with smart defaults.
why i switched
Performance
ESLint (especially with TypeScript and multiple plugins) can feel sluggish. Running ESLint + Prettier across a large codebase adds noticeable overhead. Biome’s Rust foundation makes it incredibly fast. Formatting and linting run almost instantly—even on large repositories.
Simplicity
With ESLint, I often had to juggle:
eslint
@typescript-eslint/\* plugins
- Prettier and its ESLint integration
- Custom configs per project
Biome reduces all that to a single dependency with minimal configuration. Less time fiddling with config files, more time coding.
Integrated formatter
Biome comes with a Prettier-compatible formatter. Instead of configuring Prettier separately (and sometimes fighting ESLint about formatting rules), you get formatting and linting in one cohesive tool.
Migration
installation
# install
bun add -d @biomejs/biome
# initialize
bunx biome init
# remove old tooling
bun remove eslint prettier @typescript-eslint/eslint-plugin @typescript-eslint/parser
rm -rf .eslintrc .prettierrc
add scripts
{
"scripts": {
"lint": "biome check .",
"format": "biome format . --write"
}
}
Thoughts
Switching from ESLint + Prettier to Biome simplified my workflow, made linting faster, and reduced configuration overhead. While it may not be for everyone—especially if you rely on custom plugins—Biome is a strong choice for modern TypeScript and JavaScript projects. If you’re tired of slow linting runs and juggling multiple tools, give Biome a try. It might just replace two tools in your stack with one.