If you’ve ever set up a JavaScript or TypeScript project, chances are you've spent way too much time configuring ESLint, Prettier, and their dozens of plugins. We’ve all been there — fiddling with .eslintrc
, fighting with formatting conflicts, and installing what feels like half the npm registry just to get decent code quality tooling.
But what if you could replace all of that with a single, fast, zero-dependency tool?
Meet Biome — the new kid on the block that’s here to clean up the JavaScript tooling mess.
🧠 What is Biome?
Biome is an all-in-one toolchain for JavaScript and TypeScript projects that combines:
- A blazing-fast formatter : Supports JS, TS, JSX, TSX, JSON, CSS and GraphQL.
- A powerful linter : Has 293 linting rules to perform detailed diagnostics.
- And an extensible parser : 15x faster linting compared to the ESLint and 35x faster formatting compared to the Prettier.
The best part? It’s written in Rust, which means it’s not just fast — it’s ridiculously fast.
🔯 Quick Benchmark
To give you an idea of how fast Biome really is:
# ESLint + Prettier (cold start)
Time: ~4.2s
# Biome (cold start)
Time: ~0.6s
Note: Performance may vary depending on project size and system specs.
🧰 Why Biome is a Game-Changer
Let’s be real: the JS tooling ecosystem has gotten bloated. ESLint + Prettier + TypeScript support + plugin configuration = a mess.
Biome offers:
- Unified Toolchain
- Better Performance
- Simplified Configuration
Feature | Biome | ESLint + Prettier |
---|---|---|
🔧 Formatting | ✅ Built-in | ✅ Prettier (separate) |
🧺 Linting | ✅ Built-in rules | ✅ ESLint + plugins |
⚡ Speed | 🚀 Super fast (Rust) | 🐢 Slower (Node.js) |
🧰 Setup | 🟢 Minimal config | 🔴 Plugin jungle |
🔀 Dependencies | ❌ Zero | ⛓️ Lots of dev deps |
🧪 TypeScript | ✅ First-class support | ✅ With @typescript-eslint
|
🛠️ Extensible? | 🔒 Not yet (planned) | ✅ Fully extensible |
🧩 What About Plugins?
While Biome isn’t extensible yet, plugin support is on the roadmap. The team is actively working toward allowing custom rules and framework-specific integrations. If you rely on advanced linting or want to build custom rules, now’s a great time to get involved and contribute.
⚙️ Getting Started with Biome
Getting up and running with Biome is incredibly simple:
1. Installation
Biome instructs the package manager to pin an exact version:
npm install --save-dev --save-exact @biomejs/biome
2. Initialization
npx @biomejs/biome init
3. Usage
Formatting:
npx @biomejs/biome format --write
Linting:
npx @biomejs/biome lint --write
Combined Check:
npx @biomejs/biome check --write
4. Migration from ESLint and Prettier
Biome offers dedicated commands to ease the migration:
npx @biomejs/biome migrate eslint --write
npx @biomejs/biome migrate prettier --write
💬 My Experience Migrating to Biome
I migrated one of my TypeScript projects (~5k LOC) from ESLint + Prettier to Biome and saw:
- 4x faster linting & formatting.
- Removed 10+ npm packages.
- No more config conflicts between ESLint and Prettier.
- Built-in type-aware linting just worked.
Before:
"devDependencies": {
"eslint": "...",
"eslint-plugin-react": "...",
"eslint-config-prettier": "...",
"prettier": "...",
...
}
After:
"devDependencies": {
"biome": "^1.0.0"
}
🧪 Is Biome Ready for Production?
Short answer: Yes, especially for new projects.
Longer answer: Biome is still evolving. While it's stable and production-ready for many common setups, it doesn’t yet have the plugin ecosystem ESLint offers. If you rely on complex linting rules, custom plugins, or framework-specific tools — you might want to wait or contribute.
But for 80% of use cases? Biome is already a better experience.
🌞 The Future of JavaScript Tooling?
Biome is more than just fast. It’s simpler, cleaner, and more developer-friendly than anything else out there. It’s taking the best parts of ESLint and Prettier, cutting the bloat, and delivering a smoother developer experience.
And it’s just getting started.