Zurück zum Blog
Programmierung
FortgeschrittenFürFrontend EngineersJavaScript EngineersPlatform Engineers
7 min

Ich habe ESLint + Prettier 2026 durch Biome ersetzt — hier ist der Benchmark

Ein praxisnaher Blick auf 2026: ESLint und Prettier durch Biome ersetzen — was es ist, die Ein-Kommando-Migration, echte Benchmark-Zahlen, was du wirklich verlierst und ein ehrliches Fazit, wann sich der Wechsel lohnt und wann nicht.

biomeeslintprettierrustlinterformatterbiome vs eslintbiome vs prettier
Inhalt

Über ein Jahrzehnt lang war die Antwort auf “wie halte ich mein JavaScript sauber?” derselbe zweiköpfige Reflex: eslint installieren, prettier installieren und dann einen Nachmittag damit verbringen, beide so zu verdrahten, dass sie aufhören, sich zu streiten. Dazu der TypeScript-Parser, ein Import-Plugin, ein React-Plugin, ein Barrierefreiheits-Plugin, eine Konfiguration, um die Regeln abzuschalten, die Prettier ohnehin erledigt — und du endest bei einem Dutzend Abhängigkeiten und vier Konfigurationsdateien, nur um Code zu formatieren und zu linten, den du noch gar nicht geschrieben hast.

Biome faltet diesen ganzen Stapel in ein einziges Binary. Es ist ein Formatter, ein Linter und ein Import-Sortierer, geschrieben in Rust, konfiguriert über eine einzige biome.json, schnell genug, dass du aufhörst, “Linten” als Schritt zu begreifen, auf den du wartest. Dieser Artikel ist ein praxisnaher Blick darauf, was es tatsächlich ersetzt, wie die Migration wirklich läuft, wie die Benchmark-Zahlen aussehen und — genauso wichtig — was du beim Wechsel aufgibst.

Biome: ESLint und Prettier löschen und ein Rust-Binary ausliefern, das deinen Code formatiert und lintet.

Das ist die Tooling-Hälfte eines größeren 2026-Themas — die schweren Defaults löschen, die du aus Reflex installiert hast. Wenn du auch lodash mitschleppst, gilt dieselbe Logik für deine Utilities: siehe lodash löschen: es-toolkit ist 2x schneller und 97% kleiner.

Was Biome eigentlich ist

Biome ist der Nachfahre des Rome-Projekts: eine Toolchain für Web-Sprachen, gebaut in Rust statt in JavaScript. Statt eines Formatters hier und eines Linters dort, jeder mit eigenem Parser und eigenem Konfigurationsdialekt, parst Biome deinen Code einmal und führt alles gegen diesen einen Baum aus:

  • Formatter — ein opinionierter Formatter in der Prettier-Tradition, mit kompatiblem Stil für JavaScript, TypeScript, JSX, JSON und CSS.
  • Linter — Hunderte Regeln für Correctness, verdächtigen Code, Stil und TypeScript, plus Framework-Regeln für React und Barrierefreiheit.
  • Import-Sortierung — deterministische Import-Organisation, ohne separates Plugin.

Das alles kommt als eine Abhängigkeit, @biomejs/biome, und liest eine Konfigurationsdatei. Das ist der ganze Pitch: weniger bewegliche Teile, eine Quelle der Wahrheit.

Terminal window
npm install --save-dev --save-exact @biomejs/biome
npx biome init

biome init legt eine biome.json mit sinnvollen Defaults an. Von da an sind Formatieren und Linten je ein einziger Befehl:

Terminal window
npx biome format --write .
npx biome lint .
# oder beides plus Import-Sortierung in einem Durchlauf:
npx biome check --write .

Der Schmerz, den es beseitigt: der Plugin-Sumpf

Biome trifft einen Nerv nicht wegen Neuheit, sondern wegen Ermüdung. Ein ausgereiftes ESLint-+-Prettier-Setup sieht typischerweise so aus, bevor du eine einzige eigene Regel konfiguriert hast:

Vorher: eslint, prettier und ein Stapel Plugins mit vier Konfigurationsdateien. Nachher: ein Biome-Binary und eine biome.json.

Jedes dieser Pakete hat seinen eigenen Release-Takt, seine eigenen Peer-Dependency-Anforderungen und seine eigene Art, bei einem Major-Update zu brechen. Die eslint-config- und eslint-plugin-Matrix ist eine echte Wartungssteuer: jemand im Team hält sie konsistent, und jedes Upgrade ist eine kleine Verhandlung. Die Aufteilung .eslintrc / .prettierrc bedeutet zwei Konfigurationsdialekte — und den Klassiker, dass Prettier und ESLint über dieselbe Zeile uneins sind, bis du eslint-config-prettier hinzufügst, damit sie aufhören.

Biome ersetzt das ganze Diagramm durch zwei Dinge: das @biomejs/biome-Binary und eine biome.json. Es gibt keinen Plugin-Auflösungsschritt, keinen Peer-Dependency-Graphen und keinen Revierkampf zwischen Formatter und Linter, weil Formatter und Linter dasselbe Programm sind.

Die Migration: ein Kommando, kein Rewrite

Die Angst bei jedem “ersetze dein Tooling”-Pitch sind die Migrationskosten. Biome beantwortet sie direkt mit eingebauten Migrationsbefehlen, die deine bestehende Konfiguration lesen und übersetzen:

Terminal window
# ESLint-Regeln in biome.json übersetzen
npx biome migrate eslint --write
# Prettier-Optionen in biome.json übersetzen
npx biome migrate prettier --write

Diese Befehle parsen deine .eslintrc und .prettierrc (inklusive extends-Ketten und Overrides) und bilden sie auf Biomes Pendants ab, sodass deine Zeilenbreite, dein Quote-Stil, deine Semikolon-Präferenz und die von Biome unterstützten Regeln übernommen werden. Du prüfst die entstandene biome.json, löschst die alten Konfigurationsdateien und ihre Abhängigkeiten und verdrahtest Biome in deine Skripte:

{
"scripts": {
"format": "biome format --write .",
"lint": "biome lint .",
"check": "biome check --write ."
}
}

Installiere die offizielle VS-Code-Erweiterung und setze Biome als Standard-Formatter, und das Editor-Erlebnis ist dasselbe “Format on Save”, das du schon hattest — nur schneller und aus einem Tool.

Der Benchmark

Das ist der Teil, den alle wirklich sehen wollen, also lass uns genau sein, was die Zahlen bedeuten. Biome ist schnell, weil es natives Rust ist, jede Datei einmal parst und über alle Kerne läuft. ESLint und Prettier zahlen obendrauf Node.js-Start, Plugin-Auflösung pro Datei und Single-Thread-Parsing.

Das Diagramm unten ist auf die Verhältnisse der offiziellen Biome-Benchmarks skaliert — es zeigt die Form des Unterschieds auf einer großen Codebasis, kein Versprechen für dein exaktes Repo:

Benchmark: Biome formatiert rund 25x schneller als Prettier und lintet rund 20x schneller als ESLint auf derselben Codebasis.

Die Kernaussage aus Biomes eigenen veröffentlichten Benchmarks ist, dass der Formatter in der Größenordnung von 25x schneller als Prettier läuft und das Linten rund 20x schneller als ESLint. In der Praxis zeigt sich der Gewinn an zwei Stellen:

  • CI — ein Lint-und-Format-Check, der früher mehrere Sekunden dauerte, fällt auf einen Bruchteil einer Sekunde, und das zählt, wenn er bei jedem Push über jeden PR läuft.
  • Der Editor — Format on Save und Lint on Type fühlen sich selbst bei großen Dateien sofort an, weil keine Plugin-Pipeline hochgefahren werden muss.

Der ehrliche Vorbehalt: die absoluten Zeiten hängen vollständig von deiner Codebasis, deiner Maschine und deinem Regelset ab. Liefere nicht die Zahl eines anderen als deine eigene aus. Miss es selbst — es dauert zwei Minuten:

Terminal window
# hyperfine installieren (brew install hyperfine) und Wall-Clock-Zeit vergleichen
hyperfine --warmup 3 \
'npx prettier --write "src/**/*.{ts,tsx}"' \
'npx biome format --write src'
hyperfine --warmup 3 \
'npx eslint "src/**/*.{ts,tsx}"' \
'npx biome lint src'

Das Verhältnis in deinem Terminal ist die Zahl, die in die Entscheidung deines Teams gehört — und in meiner Erfahrung landet es in derselben Größenordnung, die die offiziellen Benchmarks berichten.

Was du tatsächlich verlierst

Ehrlichkeit zählt mehr als Hype, also hier der Gegenfall — die Dinge, die du abwägen solltest, bevor du .eslintrc löschst:

  • Das Plugin-Ökosystem. Das ist der große Punkt. ESLint hat Tausende Community-Regeln und Framework-spezifische Plugins. Biome deckt die verbreiteten ab und ergänzt mit jedem Release mehr, aber wenn du von einem Nischen-Plugin oder einer maßgeschneiderten internen Regel abhängst, gibt es vielleicht noch kein Biome-Pendant.
  • Eigene Regeln. Wenn dein Team eigene ESLint-Regeln geschrieben hat, um interne Konventionen zu erzwingen, portieren die nicht. Biomes Plugin-Story wächst, aber es ist nicht dasselbe offene eslint-plugin-Modell.
  • Long-Tail-Sprach- und Format-Support. Biomes Sprachabdeckung (JS/TS/JSX/JSON/CSS und wachsend) ist stark, aber nicht universell; ein Prettier-Plugin für einen exotischen Dateityp hat vielleicht kein Pendant.

Das pragmatische Muster, bei dem die meisten Teams landen, ist nicht “ESLint für immer löschen”. Es ist: Biome für die Formatierung und für jede Lint-Regel nutzen, die es abdeckt — was die überwältigende Mehrheit dessen ist, was ein normales Projekt verwendet — und eine schlanke ESLint-Konfiguration nur für die spezifischen Plugin-Regeln behalten, die Biome noch nicht erreicht hat. Du löschst trotzdem den Großteil des Stapels; du behältst nur das eine Plugin, auf das du wirklich nicht verzichten kannst.

Fazit: wann wechseln, wann nicht

Wechsle zu Biome, wenn du willst, dass Formatter und Linter ein schnelles Tool ohne Konfigurations-Drama sind, wenn dein Regelbedarf durch das eingebaute Set abgedeckt ist und wenn du es leid bist, die ESLint-+-Prettier-Plugin-Matrix zu pflegen. Für ein neues Projekt 2026 ist Biome zuerst zu greifen der sinnvolle Standard — du bekommst Formatierung, Linting und Import-Sortierung in einem install, und eine CI, die fertig ist, bevor du den Tab gewechselt hast.

Bleib bei ESLint — oder betreibe es neben Biome — wenn dein Projekt auf Nischen-Plugins oder eigene Regeln setzt, die Biome noch nicht implementiert hat. Nutze in dem Fall Biome für die Formatierung und die abgedeckten Regeln und behalte eine minimale ESLint-Konfiguration für den Rest. Du wirst trotzdem den Großteil des Gewichts los.

Der Punkt ist nicht, einem neuen Tool um seiner selbst willen hinterherzujagen. Es ist, dass Formatieren und Linten aufgehört haben, ein Ort zu sein, an dem du Nachmittage in Konfiguration und Sekunden in jeden CI-Lauf stecken solltest. Biome macht beides beinahe kostenlos.

Terminal window
npm install --save-dev --save-exact @biomejs/biome
npx biome migrate eslint --write
npx biome migrate prettier --write
npx biome check --write .

Häufig gestellte Fragen

Ist Biome wirklich schneller als ESLint und Prettier?

Ja, und der Abstand ist groß. Biome ist in Rust geschrieben, läuft als einzelnes natives Binary und parallelisiert über die Kerne, sodass es den Node.js- und Plugin-Overhead pro Datei vermeidet, den ESLint und Prettier zahlen. In den offiziellen Benchmarks auf biomejs.dev läuft das Formatieren rund 25x schneller als Prettier, und das Linten rund 20x schneller als ESLint. In einer echten Codebasis bedeutet das meist, dass ein CI-Schritt aus Formatieren und Linten von mehreren Sekunden auf einen Bruchteil einer Sekunde fällt. Miss es an deinem eigenen Repository, bevor du eine Zahl nennst — das Verhältnis hält, die absolute Zeit hängt von deinem Code ab.

Kann ich von ESLint und Prettier migrieren, ohne meine Konfiguration neu zu schreiben?

Weitgehend ja. Biome liefert Migrationsbefehle: `biome migrate eslint` und `biome migrate prettier` lesen deine bestehende `.eslintrc` und `.prettierrc` und übersetzen die Regeln und Formatierungsoptionen in eine `biome.json`. Du solltest das Ergebnis prüfen, denn nicht jede ESLint-Regel hat ein Biome-Pendant, aber der Großteil eines Standard-Setups wird automatisch konvertiert. Die meisten Teams haben in Minuten statt Stunden eine funktionierende `biome.json`.

Unterstützt Biome alles, was ESLint kann?

Nein, und das ist die ehrliche Einschränkung. ESLint hat ein riesiges Plugin-Ökosystem mit Tausenden Community- und Framework-spezifischen Regeln, und Biome implementiert nicht alle davon. Biome deckt die verbreiteten Correctness-, Style- und TypeScript-Regeln plus Framework-Regeln für React und Barrierefreiheit ab, und das Regelset wächst mit jedem Release — aber wenn du von einem Nischen-Plugin oder einer handgeschriebenen eigenen Regel abhängst, findest du vielleicht noch kein Pendant. Das übliche Muster ist, Biome für alles Abgedeckte zu nutzen und eine schlanke ESLint-Konfiguration nur für die Regeln zu behalten, die es nicht abdeckt.

Ist Biome produktionsreif?

Ja. Biome ist der Nachfolger des Rome-Projekts, steht unter MIT-Lizenz, hat eine stabile Release-Linie, liefert eine offizielle VS-Code-Erweiterung und CI-Integrationen und wird bereits in vielen Teams zum Formatieren und Linten eingesetzt. Es hat erstklassige Unterstützung für JavaScript, TypeScript, JSX, JSON und CSS, weitere Sprachen kommen laufend hinzu. Für die allermeisten JavaScript- und TypeScript-Projekte ist das Risikoprofil vergleichbar mit Prettier plus ESLint — bei deutlich weniger Konfigurationsfläche.

Funktioniert Biome mit Tailwind CSS und anderen Frameworks?

Biome formatiert CSS direkt und hat eine Linter-Regel, die Tailwind-Utility-Klassen sortiert, sodass ein Großteil des Tailwind- und Framework-Workflows nativ abgedeckt ist. Was es nicht tut, ist beliebige Drittanbieter-Plugins für Formatierung oder Linting zu laden, wie Prettier und ESLint es tun — ein paar plugin-spezifische Verhalten haben also kein Eins-zu-eins-Pendant. Für die meisten React-, Vue- und Tailwind-Projekte übernimmt Biome Formatierung und die Kern-Lint-Regeln direkt; prüfe die Regelliste für die konkreten Framework-Regeln, auf die du angewiesen bist.

ENDE