The standard JavaScript toolchain asks you to run two tools that don't know about each other - ESLint to lint, Prettier to format - each with its own config, its own plugins, and a well-known habit of fighting over the same lines. Biome replaces both with a single Rust-built binary that lints and formats JavaScript, TypeScript, JSX, and JSON, fast, with almost no configuration.
Lint and Format From One Binary
One tool means one config file, one mental model, and no more reconciling ESLint and Prettier rules that disagree. Biome formats and lints in a single pass, and because it's written in Rust, it does it on a whole project in a fraction of the time the JavaScript-based tools take.
# Check and apply safe fixes across a project
npx @biomejs/biome check --write ./src
# Migrate your existing ESLint/Prettier settings
npx @biomejs/biome migrate eslint --write
Fast, With Opinionated Defaults
Biome ships sensible defaults so you can adopt it with an almost-empty config. It aims for high compatibility with Prettier's formatting, so switching rarely means a giant noisy diff, and its linter carries a large set of recommended rules out of the box.
Migrating From ESLint and Prettier
The migrate command reads your existing ESLint and Prettier configuration and translates what it can, which makes trying Biome on a real project a low-commitment experiment rather than a rewrite.
Rough Edges and Limitations
- Not every ESLint rule or plugin exists. The custom-plugin ecosystem around ESLint is enormous; Biome covers the common ground, not every niche rule.
- Framework-specific linting is thinner. Deep, framework-aware rulesets may still need their dedicated tooling.
- Fewer languages than Prettier. Biome focuses on the JS/TS/JSON family; Prettier's long tail of languages is broader.
- Still maturing. It's advancing fast, but a long-established ESLint setup may lean on something not yet ported.
For most JS and TS projects, Biome is a dramatic simplification: one dependency, one config, and formatting-plus-linting fast enough to run on every save.
Internal link suggestion: link "replaces ESLint plus Prettier" to the ESLint post for a direct comparison of the two approaches.