Rsbuild 2.0: Schnelleres Bundling, ESM-first und Node 20
Rsbuild 2.0 setzt auf Rspack 2.0, modernisiert Defaults (ESM-first, Node 20) und reduziert Abhängigkeiten. Neue APIs erweitern die Kommunikation.
(Bild: bombermoon/Shutterstock.com)
Rsbuild 2.0 ist da: Das Major-Release des Build-Tools setzt auf Rspack 2.0, modernisiert zahlreiche Defaults – unter anderem in Richtung ESM-first und Node 20 – und reduziert die Zahl der Abhängigkeiten deutlich. Neue APIs erweitern die Kommunikation zwischen Dev-Server und Client. Gleichzeitig bricht die Version mit mehreren Altlasten: CommonJS-Builds und ein paar Webpack-Abhängigkeiten fallen weg.
Rsbuild ist ein Build-Tooling-Layer auf Basis des Rust-basierten Bundlers Rspack und Teil des Rstack-Ökosystems. Zu diesem gehören unter anderem Rspress, Rslib und Rstest, die sich eine gemeinsame Build- und Plugin-Architektur teilen.
Rspack 2.0 als Fundament, modernere Defaults
Im Zentrum von Rsbuild 2.0 steht das Upgrade auf Rspack 2.0. Projekte profitieren damit von schnellerem Bundling und neuen Optimierungsmöglichkeiten. Rspack verfolgt einen webpack-kompatiblen Ansatz, arbeitet durch seine Rust-Implementierung aber deutlich schneller.
Parallel dazu modernisiert Rsbuild seine technische Basis. Das Core-Paket erscheint nur noch als ES-Modul, ein CommonJS-Build entfällt. Die Zielplattformen steigen: Für Node.js gilt nun Version 20 als Standard, die Browser-Targets orientieren sich an einem Baseline-Stand von Mai 2025. Das verringert den Bedarf an Transpiling und Polyfills und führt zu kleineren Bundles. Für Node-Ziele erzeugt Rsbuild außerdem standardmäßig unminifizierte ES-Module – Stacktraces bleiben so besser lesbar.
React Server Components und Server-Client-Kommunikation
Neu ist ein experimenteller Support fĂĽr React Server Components (RSC). Das Plugin rsbuild-plugin-rsc integriert serverseitig gerenderte Komponenten, die Datenabruf und Rendering kombinieren und so weniger JavaScript an den Client schicken. Es baut auf nativer Rspack-UnterstĂĽtzung auf und nutzt die Environments-API von Rsbuild, um Client- und Server-Kontext gemeinsam zu verwalten. Das Modern.js-Framework setzt das Plugin bereits ein; eine Integration mit TanStack Start ist geplant.
Im Zuge dieser Arbeiten erweitert Rsbuild die Kommunikation zwischen Dev-Server und Browser. Über den bestehenden HMR-Kanal lassen sich jetzt gezielt Nachrichten austauschen: Der Server schickt per hot.send ein Event, das der Client über import.meta.webpackHot.on empfängt. So kann etwa ein serverseitiger Prozess den Client zu einem gezielten Update veranlassen, ohne die gesamte Seite neu zu laden. Ein zusätzlicher WebSocket ist dafür nicht nötig.
Videos by heise
Flexiblerer Server und neues Code-Splitting
Auch die Server-Konfiguration gewinnt an Flexibilität. Die neue Option server.setup erlaubt es, Initialisierungslogik, Middleware oder eigene Endpunkte direkt in der Rsbuild-Konfiguration zu definieren – sowohl für den Dev- als auch den Preview-Server. Das bisherige setupMiddlewares bleibt vorerst erhalten, gilt aber als veraltet.
Beim Code-Splitting führt Rsbuild ein neues splitChunks-Modell ein, das die bisherige Option performance.chunkSplit ergänzt und perspektivisch ersetzen soll. Die Konfiguration orientiert sich nun direkt an Rspack und bietet vordefinierte Presets, etwa um jedes npm-Paket in einen eigenen Chunk aufzuteilen.
Sicherheits-Defaults und weniger Abhängigkeiten
Bei den Sicherheits-Defaults ändert sich ebenfalls einiges: Der Dev-Server lauscht standardmäßig nur noch auf localhost statt auf allen Interfaces. Das verhindert, dass Entwicklungsserver unbeabsichtigt im lokalen Netzwerk erreichbar sind. Außerdem steigt die Proxy-Middleware auf eine neue Version um, die HTTP/2 unterstützt und bekannte Sicherheitslücken schließt.
Die Abhängigkeiten schrumpfen deutlich. Pakete wie core-js für Polyfills oder das Module-Federation-Runtime gehören nicht mehr zur Standardinstallation. Die Zahl der mitgelieferten Dependencies sinkt laut Projekt von 13 auf 4.
Logging, Templates und Breaking Changes
Darüber hinaus unterstützt Rsbuild jetzt benutzerdefinierte Logger pro Instanz. Damit lassen sich Log-Level und Ausgabeformate feiner steuern, ohne den globalen Logger zu verändern. Auch die Projekt-Templates wurden überarbeitet: Neue Projekte können optional den React Compiler nutzen, und ein auf TypeScript-Go basierender Linter steht experimentell bereit. Vorlagen für React 18 und Vue 2 in create-rsbuild hat das Team entfernt.
Mit Version 2.0 gehen mehrere Breaking Changes einher. Neben dem Wegfall von Node 18 und CommonJS entfernt das Projekt sämtliche Webpack-spezifischen Komponenten und ändert diverse Defaults. Für die Migration stellt das Team eine Anleitung bereit; viele Anpassungen lassen sich nach eigenen Angaben automatisieren.
Alle Informationen zur neuen Rsbuild-Version finden sich in den Release Notes auf der GitHub-Projektseite und in der AnkĂĽndigung der Entwickler.
(fo)