
Biome — Linter + Formatter Rust thay thế ESLint và Prettier
Biome (trước đây là Rome) là công cụ toolchain JavaScript/TypeScript viết bằng Rust, cung cấp linting (thay ESLint), formatting (thay Prettier), organize imports và assist actions trong một lệnh duy nhất. Tốc độ nhanh hơn Prettier ~35x, nhanh hơn ESLint ~15x. Biome chạy standalone binary không cần Node.js, tương thích 97% với Prettier và hỗ trợ JavaScript, TypeScript, JSX, TSX, JSON, CSS, HTML, GraphQL.

Lịch sử: Rome → Biome
Rome được tạo bởi Sebastian McKenzie (tác giả ESLint), ban đầu dưới ô OSS của Meta, sau đó thành lập Rome Tools Inc. (2022). Công ty thất bại — toàn bộ nhân viên bị sa thải. Emanuele Stoppa (tác giả chính Biome) tiếp tục đóng góp Rome ngoài giờ nhưng gặp rào cản pháp lý (license MIT mơ hồ, không quyền admin).
Biome ra mắt ngày 29/08/2023 — fork chính thức từ Rome. Tên “Biome” = “Bis” (lần thứ hai) + “Rome”. Đội ngũ cốt lõi: Emanuele Stoppa (lead), Denis Bezrukov, Victorien Elvinger, Daiki Nishikawa, unvalley. Rome (rome/tools) hiện đã archived trên GitHub.
Hiệu năng: Số liệu benchmark
| So sánh | Tốc độ | Test environment |
|---|---|---|
| Biome vs Prettier | ~35x nhanh hơn | 171K lines, 2104 files, i7-1270P |
| Biome vs Prettier | ~25x nhanh hơn | MacBook Pro M1 (benchmark repo) |
| Biome vs Prettier (10 cores) | ~100x nhanh hơn | M1 Max |
| Biome vs ESLint | ~15x nhanh hơn | Benchmark repo, no plugins |
| Biome vs dprint | 1.5–2x nhanh hơn | Formatting only |
GitHub: biomejs/benchmark — Benchmark chi tiết với nhiều project thực tế.

Độ tương thích và tính năng
- Ngôn ngữ hỗ trợ: JavaScript, TypeScript, JSX, TSX, JSON, CSS, HTML, GraphQL.
- Linting: 545+ rules (v2.5), từ ESLint, TypeScript ESLint, JSX A11y, React, Unicorn.
- Formatting: 97% tương thích Prettier (xác minh bởi algorea.io/challenges/prettier).
- Zero config: hoạt động ngay với sane defaults, không cần file cấu hình ban đầu.
- Standalone binary: chạy không cần Node.js, cài qua npm hoặc package manager.
- LSP first-party: VS Code, IntelliJ, Zed (có thể lint/format cả code malformed).
- Command đa năng:
biome checkchạy cả format + lint + organize imports trong một lần.
Cấu hình: biome.json
Tạo nhanh bằng lệnh:
npx @biomejs/biome init
Cấu trúc chính của biome.json:
files.includes: patterns match file (JS, TS, JSON, CSS, HTML…)linter.rules: recommended/all/preset + từng rule groups (complexity, style, suspicious…)formatter: indentStyle, lineWidth, quoteStyle, trailingCommas…assist.actions: organizeImports + source fixesvcs: ignore file integration (git)
Biome chấp nhận cả rome.json legacy và hỗ trợ $schema cho JSON validation. Config theo flat-config style, hỗ trợ extends kế thừa từ package khác.
Migration từ ESLint + Prettier
- Cài:
npm install --save-dev @biomejs/biome - Migrate ESLint:
npx @biomejs/biome migrate eslint --write(hỗ trợ cả flat config eslint.config.js) - Migrate Prettier:
npx @biomejs/biome migrate prettier --write(hỗ trợ .prettierrc.*) - Đổi script:
rome format→biome format,rome lint→biome lint - Cài VS Code extension:
biomejs.biome
Lưu ý: Rule naming khác biệt — Biome dùng camelCase (noForEach), ESLint dùng kebab-case (no-eqeqeq). Migration tự động chuyển đổi.
So sánh tổng quan
| Tool | GitHub stars | npm/month | Linting | Formatting | Tốc độ |
|---|---|---|---|---|---|
| ESLint | ~17k | ~595M | Yes | No (cần Prettier) | Baseline |
| Prettier | ~51k | ~493M | No | Yes | Baseline |
| Biome | ~25.8k | ~53.6M | Yes (545+ rules) | Yes (97% compat) | ~35x Prettier, ~15x ESLint |
| dprint | ~4k | ~988k | No | Yes | ~0.5–0.7x Biome |
Nhược điểm của Biome: chưa có linting plugin cho mọi ESLint plugin, số downloads còn thấp hơn ESLint+Prettier gộp lại. Nhưng tốc độ và batteries-included là lợi thế vượt trội. Biome không có incremental formatting như dprint nhưng ưu điểm là tích hợp linting + formatting trong cùng 1 tool.
Nếu bạn đang dùng ESLint + Prettier trong project, migration sang Biome hoàn toàn xứng đáng. Quá trình migrate chỉ mất vài phút nhờ công cụ biome migrate eslint và biome migrate prettier. Sau khi migrate, dự án chạy nhanh hơn đáng kể, đặc biệt với large monorepo. Nhiều công ty đã chuyển đổi thành công — Vercel, Astro, và Remix đều dùng Biome trong sản phẩm.
Biome cũng hỗ trợ cả ESLint flat config, nghĩa là bạn không cần chuyển đổi từ eslint.config.js sang biome.json — biome migrate eslint tự đọc và chuyển đổi. Đây là điểm cộng lớn cho các project đã đầu tư vào flat config từ trước. So sánh với dprint (formatter Rust khác), Biome nhanh hơn 1.5–2x và có thêm linter tích hợp sẵn.
Một điểm mạnh khác của Biome là hỗ trợ organize imports tự động — sắp xếp import theo thứ tự, gom nhóm, loại bỏ import không dùng. Tính năng này hoạt động out-of-the-box không cần cấu hình thêm, trong khi ESLint cần plugin riêng. Assist actions của Biome cung cấp quick-fix cho nhiều rule, giúp developer sửa lỗi nhanh hơn trong IDE. Hỗ trợ LSP first-party cho VS Code, IntelliJ, Zed khiến trải nghiệm phát triển mượt mà hơn hẳn so với config ESLint thủ công.
