Rspack to bundler napisany w Rust, który rozumie konfigurację i większość wtyczek Webpacka. Sprawdzamy, ile czasu realnie oszczędza, co trzeba przepisać przy migracji, ile ona trwa i w jakich projektach lepiej zostać przy Webpacku.
Rspack to szybsza alternatywa dla Webpacka: bundler napisany w języku Rust, który rozumie niemal tę samą konfigurację i obsługuje większość tych samych wtyczek. Bundler to narzędzie, które przed wdrożeniem łączy setki plików źródłowych aplikacji w kilka paczek gotowych do wysłania do przeglądarki. Na pytanie z tytułu odpowiedź brzmi więc „tak”. Ciekawsze jest to, o ile szybszy, dla kogo i co trzeba zrobić, żeby tę szybkość dostać.
Pytanie zwykle pada w firmach, które mają kilkuletnią aplikację na Webpacku. Budowanie trwa kilka minut, programiści czekają kilkanaście sekund na odświeżenie ekranu po każdej zmianie, a przepisywanie całego procesu na Vite brzmi jak projekt na kwartał. Rspack obiecuje przyspieszenie bez przepisywania. W wielu projektach ta obietnica się sprawdza, choć rzadko w takiej skali, jak na slajdach.
Webpack działa. Kłopot zaczyna się, gdy projekt rośnie
Przez prawie dekadę bundler Webpack był domyślnym wyborem przy budowie aplikacji frontendowych. Jest dojrzały i ma tysiące wtyczek. Nie jest też porzucony: zespół Webpacka opublikował plan rozwoju na 2026 rok, który prowadzi do wersji 6 i obejmuje m.in. natywną obsługę CSS i TypeScriptu. Jego słabością jest architektura. Webpack jest napisany w JavaScripcie i większość pracy wykonuje na jednym rdzeniu procesora. W małym projekcie nikt tego nie zauważa. W aplikacji z kilkoma tysiącami modułów, rozwijanej przez kilka lat, budowanie wersji produkcyjnej potrafi trwać kilka minut, a start serwera deweloperskiego tyle samo.
Najbardziej odczuwalny jest czas odświeżania podczas pracy. HMR, czyli podmiana zmienionego fragmentu aplikacji w przeglądarce bez przeładowania strony, w dużym projekcie na Webpacku może trwać kilka lub kilkanaście sekund. Programista zmienia kolor przycisku i czeka. Kilkadziesiąt razy dziennie.
Drugie miejsce, w którym płaci się za powolny build, to potok CI/CD, czyli automat, który po każdej zmianie w kodzie buduje, testuje i wdraża aplikację. Każda minuta budowania to minuta pracy płatnej maszyny i minuta, o którą później trafia na produkcję poprawka błędu.
Skąd się wziął Rspack i kto za nim stoi
Rspack powstał w ByteDance, firmie, do której należy TikTok. Jej zespoły miały ogromne aplikacje na Webpacku i nie chciały ich przepisywać na zupełnie inne narzędzie. Postanowiły więc napisać bundler, który zachowuje się jak Webpack, ale działa w języku Rust, kompilowanym do kodu maszynowego i wykorzystującym wszystkie rdzenie procesora. Stabilna wersja 1.0 pojawiła się w sierpniu 2024 r. Według zapowiedzi Rspack 1.0 wewnątrz ByteDance korzystało z niego wtedy ponad tysiąc aplikacji, a na zewnątrz m.in. Microsoft, Amazon, Alibaba, Intuit i Discord. W kwietniu 2026 r. wyszła wersja 2.0, a w sierpniu 2.2.
Skalę popularności dobrze oddają pobrania. Przy premierze 1.0 Rspack miał około 100 tys. pobrań tygodniowo z npm, a przy wydaniu Rspack 2.0 już ponad 5 mln. To wciąż mniej niż Webpack czy Vite, ale nie jest to już eksperyment jednej firmy.
Wokół Rspacka powstał zestaw narzędzi nazwany Rstack. Dla firm najważniejszy jest Rsbuild: nakładka, która ukrywa większość konfiguracji i działa podobnie do Vite. Przydaje się też Rsdoctor, który pokazuje, co spowalnia budowanie i co powiększa paczki.
Rspack jako szybsza alternatywa dla Webpacka: ile czasu to realnie daje
Twórcy od początku mówią o przyspieszeniu rzędu dziesięciokrotnego względem Webpacka. To wynik z ich własnych testów, na projektach przygotowanych do porównań. Dużo więcej mówią migracje opisane przez firmy, które nie mają interesu w reklamowaniu narzędzia.
Mews, twórca platformy do zarządzania hotelami, opisał migrację z Webpacka do Rspacka krok po kroku. Budowanie w CI trwało tam 300 sekund. Sama wymiana Webpacka na Rspack skróciła je do 230 sekund. Przyspieszenie o jedną czwartą, nie dziesięciokrotne. Duży skok przyszedł później. Zespół zastąpił Babel, czyli kompilator JavaScript tłumaczący nowoczesny kod na wersję zrozumiałą dla starszych przeglądarek, wbudowanym w Rspack kompilatorem SWC. Czas spadł do 140 sekund. Po wymianie narzędzia do zmniejszania kodu (Terser) również na SWC zostało 80 sekund. Serwer deweloperski zamiast 3 minut startował w 10 sekund, a odświeżanie po zmianie zamiast ponad 10 sekund trwało około sekundy. Rozmiar paczek zmienił się o mniej niż 5%.
Podobny obraz dał Yelp. Według wpisu na blogu inżynierskim Yelpa sama migracja przyspieszyła pełne budowanie o około 25%. Dopiero po włączeniu trwałej pamięci podręcznej i uporządkowaniu tzw. barrel files, czyli plików zbiorczych, które udostępniają dziesiątki modułów z jednego miejsca, średni czas spadł o około 52%.
Wniosek z obu przypadków jest praktyczny. Zysk z Rspacka to nie tylko zasługa nowego bundlera, ale całego łańcucha narzędzi napisanych w Rust. Kto zostawi babel-loader i Tersera, bo „działa”, dostanie ułamek możliwej poprawy.
Co przechodzi z Webpacka bez zmian, a co trzeba przepisać
Konfiguracja Webpacka składa się głównie z loaderów i wtyczek. Loader przetwarza określony typ pliku, na przykład zamienia plik SCSS na zwykły CSS. Wtyczka ingeruje w cały proces budowania, na przykład generuje plik HTML albo raport rozmiaru paczek. Rspack obsługuje prawie wszystkie popularne loadery. Z wtyczkami jest trochę gorzej: według zespołu Rspacka ponad 80% z 50 najczęściej pobieranych wtyczek Webpacka działa albo ma odpowiednik. Część z nich Rspack ma wbudowaną w szybszej wersji, na przykład kopiowanie plików czy wydzielanie CSS. W aplikacjach w React o standardowej konfiguracji migracja często sprowadza się do wymiany kilku pakietów i nazw wtyczek.
Na liście zgodności wtyczek Rspacka są jednak pozycje oznaczone jako nieobsługiwane. W typowych projektach najczęściej przeszkadzają:
@ngtools/webpack, czyli wtyczkę kompilatora Angulara, przez co starsze projekty na Angular CLI z Webpackiem wymagają osobnej ścieżki,
critters-webpack-plugin, używaną do wstawiania najważniejszego CSS bezpośrednio do HTML,
@cypress/webpack-preprocessor, potrzebny przy części testów uruchamianych w Cypressie,
własne wtyczki firmowe, które korzystają z wewnętrznych mechanizmów Webpacka zamiast z jego publicznego API.
Ostatnia grupa jest najtrudniejsza do oszacowania. Wtyczkę napisaną kilka lat temu przez osobę, której już nie ma w zespole, trzeba najpierw zrozumieć, a dopiero potem przepisać. W projektach na Angularze sprawa jest zresztą prostsza, niż wygląda. Od wersji 17 Angular CLI domyślnie buduje nowe aplikacje esbuildem, a starsze można przełączyć na ten sam mechanizm, więc aktualizacja frameworka często w ogóle usuwa Webpacka z projektu.
Rspack, Vite czy Turbopack: który bundler do jakiego projektu
W 2026 r. rynek bundlerów wygląda inaczej niż kilka lat temu. Webpack stracił pozycję domyślnego wyboru, a jego miejsce zajęły trzy narzędzia napisane w Rust. Każde z nich ma swoją niszę i najczęściej to framework decyduje za zespół.
Projekty na frameworku Next.js mają sprawę rozstrzygniętą. Od Next.js 16 domyślnym bundlerem jest Turbopack rozwijany przez Vercel. Istnieje wtyczka next-rspack, rozwijana przez społeczność we współpracy z Vercelem, ale jej autorzy sami określają ją jako eksperymentalną, z ograniczoną wydajnością przy App Routerze.
Nowe aplikacje poza Next.js najczęściej startują na Vite, który ma bogaty ekosystem wtyczek i od wersji 8 również bundler napisany w Rust. Vite jako narzędzie do budowania frontendu wymaga jednak zupełnie innej konfiguracji niż Webpack.
Tu leży przewaga Rspacka. Dla istniejącego projektu na Webpacku to najkrótsza droga do szybkiego budowania, bo konfiguracja w większości zostaje. Rspack wygrywa też tam, gdzie firma korzysta z Module Federation, czyli mechanizmu pozwalającego kilku niezależnie wdrażanym aplikacjom współdzielić komponenty w przeglądarce. Architektura mikrofrontendów zbudowana na Webpacku przechodzi na Rspack bez przeprojektowania.
Czas migracji zależy mniej od wielkości aplikacji, a bardziej od tego, ile w konfiguracji jest nietypowych rozwiązań. Projekt z kilkoma standardowymi wtyczkami przechodzi w 1-3 dni robocze, łącznie z testami. Aplikacja z własnymi wtyczkami, rozbudowaną konfiguracją Babela i kilkoma środowiskami to zwykle 2-6 tygodni.
Przy większych projektach sprawdza się taka kolejność:
Pomiar punktu wyjścia: czas budowania lokalnie i w CI, czas startu serwera deweloperskiego, czas odświeżania i rozmiar paczek.
Spis loaderów i wtyczek z oceną, które działają, które mają odpowiednik w Rspacku, a które trzeba przepisać.
Wymiana Webpacka na Rspack na osobnej gałęzi, bez zmiany reszty narzędzi, i porównanie działania aplikacji w testach automatycznych.
Zastąpienie Babela i Tersera kompilatorem SWC jako osobny krok, żeby łatwo było ustalić źródło ewentualnego błędu.
Włączenie trwałej pamięci podręcznej w CI i przegląd plików zbiorczych.
Wdrożenie na środowisko testowe, a w monorepo przenoszenie aplikacji po kolei.
Rspack 2.0 wymaga Node.js w wersji 20.19 lub nowszej. W starszych projektach oznacza to często aktualizację obrazów budujących w CI, a czasem kilku innych zależności. Takie prace dobrze łączyć z przeglądem architektury i procesów DevOps, bo przy okazji zwykle wychodzi, co jeszcze w potoku da się skrócić.
Jeśli zmiana bundlera jest częścią większego przejścia na nowy stos technologiczny, lepiej zaplanować ją w ramach migracji aplikacji do nowych technologii niż jako osobne zadanie.
Kiedy lepiej zostać przy Webpacku
Nie każdy projekt skorzysta na zmianie. Jeśli aplikacja buduje się w 30 sekund, a wdrożenia odbywają się kilka razy w miesiącu, oszczędność czasu będzie niezauważalna. Ryzyko regresji zostanie. Podobnie jest z projektami w trybie utrzymania, w których zespół wprowadza drobne poprawki raz na jakiś czas. Stabilny Webpack, który ma przed sobą wersję 6, jest tam rozsądnym wyborem na kolejne lata. Migrację warto zrobić wtedy, gdy i tak planowana jest większa przebudowa. Ostrożności wymagają też aplikacje, których proces budowania opiera się na kilku nietypowych, samodzielnie napisanych wtyczkach. Najpierw trzeba je zrozumieć i udokumentować. Często okazuje się, że część z nich nie jest już potrzebna, a porządkowanie takich miejsc to zwykła praca nad długiem technologicznym w projekcie.
Najwięcej zyskują duże produkty rozwijane latami, takie jak platformy SaaS z wieloma modułami czy systemy wewnętrzne z kilkoma aplikacjami w jednym repozytorium. Tam kilka minut na każdym buildzie, pomnożone przez kilkanaście wdrożeń dziennie i kilkunastu programistów, daje realne godziny w miesiącu.
Tak. Rspack jest projektem open source na licencji MIT, więc można go używać w aplikacjach komercyjnych bez opłat licencyjnych i bez obowiązku publikowania własnego kodu. Nie ma płatnej wersji z dodatkowymi funkcjami, a rozwój finansuje głównie ByteDance, która utrzymuje zespół odpowiedzialny za cały zestaw narzędzi Rstack. Kosztem po stronie firmy jest więc wyłącznie czas zespołu: przygotowanie migracji, testy i późniejsze aktualizacje. W prostym projekcie to kilka dni pracy, w dużym systemie z wieloma aplikacjami nawet kilka tygodni, zależnie od liczby własnych wtyczek i jakości testów.
Tak, Rspack jest używany produkcyjnie od wydania 1.0 w sierpniu 2024 r. Wewnątrz ByteDance buduje ponad tysiąc aplikacji, w tym TikToka, a na zewnątrz korzystają z niego m.in. Microsoft, Amazon i Discord. Obecna linia 2.x ma stabilne API i regularne wydania mniej więcej co dwa miesiące. O tym, czy sprawdzi się w konkretnym projekcie, decyduje raczej stos wtyczek niż skala: aplikacja z milionem linii kodu i standardową konfiguracją przejdzie łatwiej niż mały projekt oparty na nietypowej wtyczce, która korzysta z wewnętrznych mechanizmów Webpacka.
Tak. Rspack ma wbudowany kompilator SWC, który przekształca TypeScript i składnię JSX używaną w React bez instalowania osobnych loaderów, takich jak babel-loader czy ts-loader. W praktyce wystarczy wskazać w konfiguracji wbudowany loader SWC dla plików .ts i .tsx. Jedno zastrzeżenie: SWC tylko usuwa typy, a nie sprawdza ich poprawności. Kontrolę typów trzeba uruchomić osobno, na przykład poleceniem tsc w potoku CI albo wtyczką działającą równolegle z budowaniem, żeby błędy typów nadal blokowały wdrożenie.
Tak, zwykle nieznacznie. Rspack stosuje własne algorytmy dzielenia kodu na paczki i usuwania nieużywanych fragmentów, a do tego często zmienia się narzędzie do minifikacji, więc pliki wynikowe nie będą identyczne jak z Webpacka. W opisanych publicznie migracjach różnica mieściła się zwykle w kilku procentach, w jedną lub drugą stronę. Dlatego przed wdrożeniem warto porównać raport rozmiaru paczek sprzed i po zmianie, szczególnie dla strony głównej i najważniejszych ścieżek, bo od nich zależy czas ładowania na telefonach.
Tak, Module Federation jest wbudowane w Rspack. To mechanizm, dzięki któremu kilka niezależnie budowanych i wdrażanych aplikacji może w przeglądarce współdzielić komponenty i biblioteki, na przykład wspólny nagłówek, koszyk czy panel klienta rozwijany przez osobny zespół. Rspack obsługuje zarówno klasyczną wersję znaną z Webpacka 5, jak i Module Federation 2.0 z dodatkowymi narzędziami do kontroli typów i wersji. Firmy, które mają już architekturę mikrofrontendów na Webpacku, mogą przenosić aplikacje pojedynczo, bo obie strony potrafią ze sobą współpracować w okresie przejściowym.
Tak, a najwygodniej zrobić to przez Rsbuild, czyli narzędzie zbudowane na Rspacku, które ukrywa większość konfiguracji podobnie jak robił to Create React App. Rsbuild ma oficjalny przewodnik migracji z CRA i CRACO. Create React App nie jest już rozwijany, więc taka migracja rozwiązuje przy okazji problem przestarzałych zależności i ostrzeżeń bezpieczeństwa. Czas pracy zależy od tego, ile w projekcie jest nadpisań konfiguracji: aplikacja bez nich przechodzi w dzień lub dwa, projekt z rozbudowanym CRACO i własnymi wtyczkami Babela wymaga zwykle od tygodnia do kilku tygodni.
Tak. Ponieważ Rspack czyta niemal tę samą konfigurację, przez jakiś czas można utrzymywać oba narzędzia i porównywać wyniki, na przykład budując gałąź testową Rspackiem, a produkcję nadal Webpackiem. W monorepo, czyli jednym repozytorium z wieloma aplikacjami, zwykle przenosi się je po kolei, zaczynając od najmniej ryzykownej. Przykładowo panel administracyjny i sklep mogą przejść na Rspack w różnych tygodniach, a aplikacja z najbardziej nietypową konfiguracją na końcu. Takie podejście wydłuża kalendarz, ale pozwala wycofać się z pojedynczej aplikacji bez wstrzymywania prac nad pozostałymi.
CI/CD to skrót od Continuous Integration i Continuous Delivery, czyli procesów ciągłej integracji i ciągłego dostarczania. Jest to metoda zarządzania projektem oprogramowania, która polega na ciągłym i automatycznym sprawdzaniu, testowaniu i wdrażaniu kodu do produkcji.
Rosnąca złożoność aplikacji webowych sprawia, że wydajność narzędzi developerskich ma dziś ogromne znaczenie. Turbopack, nowy bundler od Vercela, powstał jako odpowiedź na ograniczenia klasycznych rozwiązań, takich jak Webpack, szczególnie w dużych projektach Next.js. Jego głównym celem jest maksymalne skrócenie czasu startu aplikacji i natychmiastowy hot reload podczas pracy z kodem.
Większość developerów front-end jest zaznajomiona z narzędziami takimi jak webpack czy parcel. Jednak świeży powiew przynosi Vite.js; nowoczesne, szybkie i efektywne środowisko do budowania aplikacji. W tym artykule przyjrzymy się bliżej możliwościom i zaletom tej najnowszej technologii.
Code splitting, jest jednym z kluczowych rozwiązań stosowanych w programowaniu aplikacji webowych. Pozwala na znaczącą optymalizację czasu ładowania strony, a zatem poprawę user experience. Artykuł wprowadza w zagadnienia podziału kodu, jego funkcjonalność oraz korzyści zdobyte dzięki jego stosowaniu.
Tree-shaking to technika, która może znacznie poprawić wydajność Twojego projektu IT. Pozwala na usunięcie niepotrzebnego kodu, który nie jest używany, ale i tak jest częścią końcowego bundla. W efekcie, twoja aplikacja staje się lżejsza i szybsza.
Babel to niezbędne narzędzie dla każdego programisty JavaScript - kompilator służący do przekształcania nowoczesnego JavaScript (ES6+) w starsze wersje, które mogą być zrozumiałe dla wszystkich przeglądarek. Jest to klucz do tworzenia bardziej zoptymalizowanego, zgodnego i niezawodnego kodu.