mrkeyoor.com_
Tue 01 Sept 17:43 UTC
Dev Toolsevaluationupdated 27 Aug 2026

biome review

Biome is a formatter and linter for JavaScript, TypeScript, JSX, JSON, CSS, and GraphQL, exposed through a CLI and language server. It aims to replace common Prettier and ESLint tasks with one Rust-based tool that can format, diagnose, and safely fix code from the editor or CI.

+45stars / 7d
Verdict

Our Biome checkout installed 313 pnpm packages in 28 seconds and occupied 305 MB, but the root workspace offered no build or test target for the lab to verify. The published CLI is worth a controlled migration when one formatter-linter can replace most of a project's current Prettier and ESLint policy. Keep the old checks in parallel until formatting diffs, missing rules, and framework files have been reviewed.

We ran it

Lab card: what happened when we ran biomeScreenshot of biome (biomejs.dev)
Install✓ · 28s313 packages · 305 MB
Buildn/ano build script
Testsn/ano test script
Repo27898 files~1,254,677 lines of source · 135.8 MB · 24 CI workflows

Answers from our run

Does biome build from source?

Dependencies installed in 28 seconds (313 packages), and the project has no separate build step. We cloned commit fe61e21 into a clean Debian container with 3 CPUs and no project-specific setup.

Does biome have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Who should not use biome?

Teams requiring byte-for-byte Prettier output: the README reports 97% compatibility, which explicitly leaves differences.

What are the alternatives to biome?

Prettier, ESLint, Oxc. Our Biome checkout installed 313 pnpm packages in 28 seconds and occupied 305 MB, but the root workspace offered no build or test target for the lab to verify.

Setup4/5Published npm quick start is short; source targets were absent
Docs5/5Clear commands, playground, editors, rules, and migration guides
Community5/525,653 stars with 521 active issues and pull requests
Maturity4/5Stable CLI and frequent releases; framework parsers still change

Discussed on

  1. hnBiome36 points
  2. hnBiome v2–Codename: Biotype12 points
  3. hnBiome v1.9 CSS and GraphQL support9 points
  4. hnBiome 1.7: Migrate from ESLint with one command8 points
  5. hnBiome v1.3: lint and format TypeScript and JSX in a fraction of a second8 points

Who it’s for

JavaScript and TypeScript teams that want formatting and linting from one configuration and binary.
Projects willing to compare Biome output with existing Prettier and ESLint rules before migrating.
Editors that can use Biome's first-party extensions or language server.
Monorepos that need a fast local check and a dedicated CI command.

Who it’s NOT for

Teams requiring byte-for-byte Prettier output: the README reports 97% compatibility, which explicitly leaves differences.
Projects whose policy depends on an ESLint plugin or rule that Biome does not implement: the README advertises more than 500 rules, not full ESLint ecosystem compatibility.
Adopters who need every Astro, Vue, or Svelte parser edge settled: v2.5.10 contains many fixes for those file types, and current issues still report semantic false positives.
Source contributors expecting a simple npm build and test route: our root workspace exposed neither script target to the lab.
Small teams planning deep compiler changes: the checkout measured about 1,254,677 source lines across 27,898 files.

Setup reality

Our sandbox pnpm install succeeded in 28 seconds, adding 313 packages and using 305 MB on disk. The root workspace exposed no build script or target, so the build stage was skipped. It also exposed no test script or target, so tests were skipped rather than passed.

Ordinary users install the exact @biomejs/biome npm package, run it with npx, or try the WebAssembly playground. A configuration file becomes necessary when teams select rules, ignore generated paths, change formatting, migrate existing policy, or wire the biome ci command into checks.

Contributors face a Rust and pnpm monorepo with 24 CI workflows and 27,898 files. The README's npm quick start does not describe the full source-build path. Framework syntax support is moving quickly, so pin the CLI and test it on representative Astro, Vue, Svelte, CSS, and GraphQL files before replacing existing gates.

One command can format, lint, and fix a web project

Biome combines a formatter, linter, safe code fixes, and editor diagnostics. The documented languages are JavaScript, TypeScript, JSX, JSON, CSS, and GraphQL, with active parsing work for framework files. biome check --write applies formatting and safe fixes, while biome ci checks a repository without rewriting it. That smaller toolchain is attractive when Prettier and ESLint configs have become two versions of the same policy.

The formatter claims 97% Prettier compatibility, and the linter advertises more than 500 rules. Those are useful coverage signals, not a promise of identical behavior. A migration can alter whitespace, surface different diagnostics, or omit a plugin-backed rule. Run both systems on the whole project, inspect the diff, and map every required rule before removing the old configuration.

Editor feedback is part of the product

Biome was designed for interactive use and can format or diagnose malformed code while a developer is typing. First-party editor extensions and the language server make the same parser available before commit. The WebAssembly playground offers a zero-install way to test configuration and output on a sample before adding a package.

Language-server behavior deserves its own rollout. Release v2.5.10 fixed a memory leak during long editor sessions, while open issue 7538 reports huge logs from an older 2.1.2 setup involving Zed and a constantly updated JSON file. One report does not establish current behavior for every editor. It does justify checking cache growth, logs, CPU, and memory during a trial.

What happened when we ran it

Our sandbox installed 313 pnpm packages in 28 seconds and used 305 MB on disk. We used commit fe61e21 in an unprivileged node:22-bookworm container with 3 CPUs, 8 GB of RAM, and no secrets. The checkout was 135.8 MB before dependencies and contained 27,898 files with about 1,254,677 lines of source.

The root workspace exposed no build script or target, so the lab skipped the build stage. It also exposed no test script or target, so tests were skipped. This does not mean Biome has no build or tests: the repository had 24 CI workflow files and a monorepo workspace layout. It means our standard root-package discovery did not find commands it could execute.

That distinction limits the conclusion. The 28-second install proves pnpm could resolve the measured workspace dependencies in our container. It does not prove the Rust crates compile, the CLI binary works, or the internal suites pass. A source contributor should follow the repository's dedicated development documentation and CI commands rather than treating the npm quick start as a build guide.

Framework parsers are improving through real edge cases

Version 2.5.10 shipped on August 21, 2026 with many Astro corrections: comment-only expressions, raw-text elements, frontmatter boundaries, fragment shorthand, unquoted attributes, and parser recovery are all named in the notes. The same release fixed Vue binding references, incomplete Svelte declarations, and an unnecessary type-inference path. That is meaningful progress and evidence of a wide parser surface.

It also argues for testing your own templates. An open report on 2.5.10 says a function merged with a same-name TypeScript namespace is marked unused. Current pull requests continue to adjust Astro expression parsing. Teams using plain TypeScript will face fewer framework boundaries than a mixed Astro, Vue, and Svelte monorepo. Pinning a release keeps one parser fix from changing CI unexpectedly.

One configuration is useful only if it preserves policy

Biome's appeal is consolidation. A single config can drive the CLI, editor, fixes, and CI. Diagnostics include source context, while safe fixes can handle routine issues without a second fixer. The migration path can import parts of existing ESLint policy, and the release notes continue to add rule-source mappings.

Consolidation should not erase rules silently. Inventory the existing ESLint plugins, local rules, Prettier plugins, ignore files, per-package overrides, and CI exit conditions. Mark each as supported, replaced, or intentionally dropped. Keep unsafe fixes out of automated commits until their effects are understood. The right success metric is equivalent policy with less maintenance, not the fewest configuration lines.

Published CLI setup is much smaller than contributor setup

For an application, installation is one exact dev dependency followed by npx @biomejs/biome. The published package carries the platform binary, so users do not need a Rust toolchain for ordinary checks. The commands are concise enough to add beside existing scripts during evaluation.

The source repository is different: 1.25 million measured lines, Rust crates, pnpm workspaces, generated assets, conformance fixtures, and 24 workflows. Our missing root targets are a setup warning for contributors, not a complaint about end-user installation. Anyone planning custom rules or compiler changes should budget for the repository's own toolchain and focused test commands.

August activity favors a staged migration

GitHub showed 25,653 stars, 521 combined issues and pull requests, and a last push on August 27, 2026. CLI v2.5.10 was released six days earlier. The open count includes feature work and contributions, so it is not a defect total. Frequent parser and inference fixes show active maintenance at a rapid pace.

Biome is an easy experiment and a consequential replacement. Try it on a branch, pin the version, run the formatter once as a dedicated migration commit, and compare lint policy before deleting ESLint or Prettier. The missing root build and test targets prevent our source checkout from earning a clean lab result, while the published CLI remains compelling for teams that can validate the migration themselves.

Alternatives

ProjectWhat it isPick it when
Prettier gh↗The established opinionated formatter for JavaScript and many web file types.pick this instead when exact Prettier output or its plugin ecosystem is required.
ESLint gh↗The standard pluggable JavaScript linter with a large rule and plugin ecosystem.pick this instead when custom plugins and mature policy composition matter more than one fast binary.
Oxc gh↗A Rust-based JavaScript toolchain with parser, linter, formatter, transformer, and minifier work.pick this instead when you want to evaluate another Rust toolchain with broader compiler ambitions.

What people are saying

  1. [github-trending] biomejs/biome

Sources

  1. Biome README
  2. Biome repository facts
  3. Biome CLI v2.5.10 release
  4. Biome log growth report
  5. Biome namespace unused-variable report

More dev tools reviews

workmux · v2rayNG · SecLists · hashcat · eslint · fastfetch · the whole board →