← All posts

Frontend

Biome: One Fast Tool to Lint and Format Your JS and TS

Biome is a Rust-built linter and formatter for JS, TS, and JSON - one fast binary in place of ESLint plus Prettier.

B Frontend

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.