Rolldown: Bundler Rust Vite Pengganti Rollup

Foto oleh Pixabay on Pexels
Rolldown adalah bundler JavaScript dan TypeScript yang ditulis dengan Rust oleh tim VoidZero di balik Vite, dibangun di atas toolchain Oxc. Ia dirancang menggantikan kombinasi esbuild-plus-Rollup di dalam Vite dengan satu bundler yang tetap memakai API plugin kompatibel Rollup sambil berjalan jauh lebih cepat.
Vite memakai esbuild karena cepat mentransformasi dan pre-bundling dependensi saat pengembangan, dan Rollup karena output produksinya lebih kecil, teroptimasi, serta ekosistem pluginnya matang. Tiap alat dipilih untuk fase terbaiknya, tetapi dua pipeline menimbulkan glue code dan inkonsistensi antara dev dan prod.
Rolldown meruntuhkan dua pipeline transformasi Vite menjadi satu bundler berbasis Rust yang menangani dev dan produksi. Artinya satu sistem plugin alih-alih dua, lebih sedikit glue code, dan paritas lebih dekat antara yang kamu uji di dev dan yang kamu rilis, sehingga mengurangi bug yang hanya muncul di produksi.
Vite 8 melaporkan build hingga 10 sampai 30 kali lebih cepat secara keseluruhan. Migrasi nyata membuktikannya: GitLab turun dari sekitar 2,5 menit ke 40 detik, Excalidraw dari 22,9 ke 1,4 detik, dan Appwrite dari lebih 12 menit ke sekitar 3 menit dengan memori kira-kira 4x lebih rendah.
Aliaskan vite ke paket rolldown-vite di package.json, lalu instal ulang. Gunakan alias dependensi biasa untuk aplikasi sederhana, atau overrides (npm/Bun), resolutions (Yarn), atau blok pnpm overrides ketika vite adalah dependensi transitif. Jalur yang disarankan adalah mencobanya di Vite 7 dulu, lalu tingkatkan ke Vite 8.

Foto oleh Pixabay on Pexels
Ringkasan Utama
Rolldown adalah bundler JavaScript berbasis Rust dari tim VoidZero di balik Vite, dibangun di atas toolchain Oxc. Ia menggantikan pembagian esbuild untuk dev dan Rollup untuk produksi dengan satu bundler untuk keduanya, tetap memakai API plugin yang kompatibel Rollup sambil menghasilkan build produksi jauh lebih cepat dan hemat memori pada aplikasi besar.
Selama bertahun-tahun Vite sebenarnya adalah dua bundler dalam satu jubah. Di pengembangan ia mengandalkan esbuild untuk pre-bundling dependensi yang secepat kilat, dan untuk build produksi ia menyerahkan semuanya ke Rollup. Kombinasi itulah yang membuat Vite terasa instan saat dev sekaligus tetap menghasilkan output teroptimasi untuk dirilis. Namun diam-diam ia menciptakan jahitan tepat di tengah alatnya.
Rolldown adalah jawaban tim Vite atas jahitan itu: satu bundler berbasis Rust, dibangun di atas toolchain Oxc, yang dirancang mengerjakan kedua tugas. Ia hadir hari ini sebagai rolldown-vite, paket pengganti drop-in yang bisa kamu coba di proyek Vite yang sudah ada sebelum menjadi default. Tulisan ini membahas kenapa desain dua bundler itu ada, apa yang Rolldown satukan, target performanya, dan cara persis mencobanya.
Pembagian itu pragmatis. esbuild, ditulis dengan Go, luar biasa cepat dalam mentransformasi dan pre-bundling dependensi, yang sempurna untuk server dev yang harus mulai dalam hitungan milidetik. Sebaliknya, Rollup menghasilkan bundle yang lebih kecil dan lebih teroptimasi dengan ekosistem plugin matang dan tree-shaking lebih baik, yang kamu inginkan untuk produksi. Tiap alat dipilih untuk fase yang paling ia kuasai.
Biayanya adalah konsistensi. Di dev, Vite menyajikan modul ES yang sebagian besar tidak dibundel dan ditransformasi esbuild; di produksi ia memancarkan build terbundel dari Rollup. Dua pipeline transformasi terpisah berarti dua sistem plugin dan lapisan glue code yang terus bertambah untuk menyinkronkannya — dan perbedaan perilaku runtime antara dev yang tidak terbundel dan prod yang terbundel justru menjadi tempat bug bersembunyi hingga muncul hanya setelah kamu merilis.
Ini adalah jebakan klasik works-on-my-machine yang dipindah satu lapis ke bawah: bukan mesinmu versus server, melainkan bundler dev-mu versus bundler prod-mu. Keunikan urutan plugin atau perbedaan transform yang halus bisa lolos setiap pemeriksaan dev dan hanya muncul di output produksi — tempat paling sulit untuk debug.
Rolldown meruntuhkan dua pipeline menjadi satu. Ditulis dengan Rust dan dibangun di atas Oxc — toolkit JavaScript berkinerja tinggi milik VoidZero yang menyediakan parser, resolver, transformer, minifier, dan dukungan sourcemap — ia menangani pre-bundling, transformasi, minifikasi, dan bundle akhir dari satu lapisan fondasi. Keuntungan praktisnya konkret:
Rolldown sengaja mempertahankan API dan antarmuka plugin Rollup sambil menarik kemampuan bergaya esbuild ke dalam cakupannya, jadi ia tidak meminta ekosistem memulai dari nol. Inti Rust adalah sumber kecepatannya; permukaan yang kompatibel Rollup adalah yang membuat adopsi realistis alih-alih penulisan ulang.
Seluruh alasan keberadaan Rolldown adalah kecepatan pada skala besar, dan tim VoidZero telah menerbitkan angka migrasi nyata alih-alih microbenchmark sintetis. Vite 8 menyebut build hingga 10–30x lebih cepat secara keseluruhan sambil menjaga kompatibilitas plugin, dan proyek-proyek individu melaporkan penurunan besar baik dalam waktu maupun memori:
Cerita memori sama pentingnya dengan waktu jam-dinding. Monorepo besar rutin menembus batas memori CI selama build Rollup, dan inti Rust Rolldown menjaga jejaknya jauh lebih kecil — yang bagi sebagian tim adalah pembeda antara build yang selesai dan build yang dihentikan paksa oleh runner.
Kamu tidak perlu Vite 8 untuk mencoba Rolldown. rolldown-vite diterbitkan sebagai paket terpisah yang mengikuti nomor versi mayor dan minor Vite, jadi kamu bisa mengaliaskannya ke proyek Vite 7 yang sudah ada. Jalur migrasi yang direkomendasikan untuk aplikasi besar sengaja dibuat bertahap: pindah ke rolldown-vite di Vite 7 dulu untuk menyaring masalah spesifik Rolldown, lalu tingkatkan ke Vite 8 tempat ia menjadi default bawaan.
Peralihannya adalah alias package.json. Arahkan vite ke paket rolldown-vite, lalu instal ulang — tanpa perlu mengubah file konfigurasi untuk memulai:
{
"devDependencies": {
"vite": "npm:rolldown-vite@latest"
}
}
// npm or Bun — force it through transitive deps too:
{
"overrides": {
"vite": "npm:rolldown-vite@latest"
}
}
// Yarn:
{
"resolutions": {
"vite": "npm:rolldown-vite@latest"
}
}
// pnpm:
{
"pnpm": {
"overrides": {
"vite": "npm:rolldown-vite@latest"
}
}
}Gunakan alias dependensi biasa untuk aplikasi sederhana; gunakan overrides, resolutions, atau blok pnpm overrides ketika paket lain bergantung pada vite secara transitif dan kamu perlu setiap salinan diresolusikan ke rolldown-vite. Setelah instal ulang, jalankan server dev dan build produksi seperti biasa lalu bandingkan outputnya.
Pin versinya dengan sengaja. rolldown-vite masih berkembang dan versi patch-nya independen dari Vite, dengan potensi perubahan yang memutus antar-versi — hanya lini minor terbaru yang menerima pembaruan. Untuk proyek nyata, kunci ke versi yang diketahui baik dan tingkatkan secara sadar alih-alih membuntuti latest secara buta.
| Aspek | Rollup + esbuild (Vite klasik) | Rolldown (rolldown-vite) |
|---|---|---|
| Bundler yang terlibat | Dua — esbuild di dev, Rollup di prod | Satu untuk kedua fase |
| Ditulis dengan | Go (esbuild) dan JavaScript (Rollup) | Rust, di atas toolchain Oxc |
| Sistem plugin | Dua, dijaga selaras oleh glue code | Satu antarmuka kompatibel Rollup |
| Konsistensi dev vs prod | Pipeline berbeda, penyimpangan halus | Bundler sama, paritas lebih dekat |
| Kecepatan build aplikasi besar | Baseline | Dilaporkan hingga 10–30x lebih cepat |
Tabel ini menyederhanakan gambaran yang bernuansa — Rollup dan esbuild keduanya unggul di tugas yang untuknya mereka dipilih — tetapi ia menangkap arah perjalanannya: dari dua alat khusus yang dijahit bersama menjadi satu bundler cepat yang mengerjakan kedua tugas dengan API yang familier.
Jika kamu menjalankan aplikasi besar tempat waktu build produksi atau memori CI menjadi hambatan nyata, mencoba rolldown-vite di sebuah branch layak menghabiskan satu sore — angka pada basis kode besar adalah inti dari proyek ini. Untuk aplikasi kecil, setup esbuild-plus-Rollup saat ini sudah cukup cepat sehingga kamu mungkin tidak menyadarinya, jadi tidak ada urgensi untuk pindah sebelum Vite 8 menjadikannya default.
Bagaimanapun, Rolldown adalah arah tujuan Vite. Memperlakukannya sebagai default masa depan alih-alih eksperimen berarti migrasinya bukan soal apakah melainkan kapan — dan melakukan uji coba bertahap sekarang, di Vite 7, adalah cara berisiko rendah untuk siap sebelum peralihan dilakukan untukmu.