SvelteKit 3.0 resmi dirilis pada 1 Oktober 2026. Versi ini memindahkan konfigurasi dari svelte.config.js ke vite.config.ts, mengganti alias $lib menjadi #lib, dan memperkuat penanganan error di seluruh framework. Tim Svelte menyediakan perintah sv migrate sveltekit-3 untuk membantu proses migrasi, tetapi remote functions yang dijanjikan belum siap dan masih menunggu flag eksperimental. Bagi proyek Svelte yang sudah berjalan, ini adalah pembaruan besar pertama sejak SvelteKit 2, jadi memahami breaking change-nya jauh lebih penting daripada buru-buru naik versi.
TL;DR
- SvelteKit 3.0 dirilis 1 Oktober 2026 oleh tim Svelte.
- Konfigurasi kini berada di vite.config.ts, bukan svelte.config.js.
- Alias $lib diganti menjadi #lib memakai subpath imports standar.
- Migrasi dibantu perintah npx sv migrate sveltekit-3 --tasks all --confirm.
- Remote functions belum siap dan masih menunggu flag eksperimental Async Svelte.
Apa Saja yang Berubah di SvelteKit 3?
Ada lima perubahan utama yang disebut langsung oleh tim Svelte dalam pengumuman resminya: konfigurasi pindah ke vite.config.ts, alias $lib menjadi #lib, variabel lingkungan yang lebih kuat dan mudah dipakai, service worker dengan boilerplate lebih sedikit, dan penanganan error yang lebih baik. Framework-nya sendiri tidak berubah arah. Rilis ini lebih tepat dibaca sebagai pembersihan: menghapus lapisan yang selama ini terasa janggal, lalu menyelaraskan SvelteKit dengan ekosistem Vite yang memang sudah menjadi fondasinya sejak awal.
Perubahan konfigurasi adalah yang paling terasa di proyek nyata. Sebelumnya SvelteKit punya file svelte.config.js sendiri yang berisi adapter, preprocess, dan alias. Setelah rilis ini, sebagian besar pengaturan itu hidup di vite.config.ts. Bagi tim yang sudah memelihara konfigurasi Vite untuk plugin lain, penyatuan ini mengurangi satu file yang harus dijaga tetap sinkron. Bagi yang belum terbiasa, ini berarti satu tempat baru yang perlu dipelajari, tetapi juga satu sumber kebenaran yang lebih jelas.
Perubahan pada variabel lingkungan dan service worker mungkin kurang terlihat di berita utama, tetapi berdampak pada kode sehari-hari. Variabel lingkungan kini lebih mudah diakses dan divalidasi, sementara service worker kehilangan banyak kode upacara yang dulu harus ditulis berulang di setiap proyek. Penanganan error yang diperbaiki menyeluruh melengkapi paket ini: kesalahan yang dulu muncul sebagai pesan samar sekarang lebih mudah dilacak ke sumbernya.
Bagaimana Cara Migrasi dari SvelteKit 2 ke SvelteKit 3?
Migrasi dilakukan dengan perintah npx sv migrate sveltekit-3 --tasks all --confirm. Perintah ini akan memindahkan sebanyak mungkin kode secara otomatis, lalu menghasilkan daftar pekerjaan tersisa untuk bagian yang tidak bisa ditangani mesin. Tim Svelte secara eksplisit menyebut bahwa sisa pekerjaan itu biasanya berupa penyesuaian kecil, sehingga alat bantu otomatis maupun asisten kode bisa menyelesaikannya tanpa banyak intervensi manusia.
Untuk proyek baru, perintahnya adalah npx sv create. Alur ini memakai CLI sv yang sama, jadi tidak ada perbedaan besar antara membuat aplikasi baru dan memigrasikan aplikasi lama. Yang penting adalah membaca migration guide resmi lebih dulu, karena setiap versi mayor selalu membawa breaking change yang tidak selalu terdeteksi oleh perintah migrasi. Dokumentasi itu adalah rujukan utama, bukan catatan komunitas yang bisa tertinggal.
Langkah praktis yang aman untuk dicoba di staging lebih dulu:
- Pastikan dependensi sudah diperbarui dan lockfile dalam keadaan bersih sebelum memulai.
- Jalankan perintah migrasi, lalu baca daftar pekerjaan tersisa yang dihasilkan.
- Pindahkan sisa konfigurasi dari svelte.config.js ke vite.config.ts secara manual.
- Ganti semua impor dari $lib ke #lib, termasuk yang ada di dalam file konfigurasi.
- Jalankan build dan test di staging, bukan langsung di produksi.
Kenapa Alias $lib Diganti Menjadi #lib?
Alasannya adalah standar. Subpath imports adalah fitur Node.js yang memakai tanda pagar di awal nama impor, misalnya #lib, dan sudah didukung secara resmi di level runtime maupun tooling. Dengan memakai #lib, SvelteKit tidak lagi bergantung pada alias kustom yang dibuat oleh plugin Vite, melainkan pada mekanisme yang sama dengan yang dipakai ekosistem JavaScript secara luas. Efek sampingnya, satu lapisan konfigurasi hilang dan resolusi modul menjadi lebih konsisten di berbagai alat.
Perubahan ini terdengar sepele, tetapi menyentuh banyak berkas. Setiap impor yang memakai $lib harus diperbarui. Karena itu perintah migrasi hadir, sebab memperbaiki ratusan impor secara manual bukan pekerjaan yang menyenangkan dan rawan salah ketik. Bagi proyek besar, ini alasan kuat untuk menjadwalkan migrasi sebagai tugas tersendiri, bukan diselipkan di sela pekerjaan lain yang sedang dikejar tenggat.
Apakah Remote Functions Sudah Bisa Dipakai?
Belum. Tim Svelte menyebut remote functions sebagai prioritas utama mereka, tetapi fitur ini belum siap untuk rilis stabil. Remote functions adalah sekumpulan utilitas untuk komunikasi klien-server yang aman, efisien, dan aman secara tipe. Untuk memakainya, dibutuhkan Async Svelte yang saat ini masih memerlukan flag eksperimental. Jadi, kalau kamu menunggu fitur ini, SvelteKit 3 belum menjadi alasan untuk segera pindah dari versi yang sekarang berjalan stabil.
Yang menarik, keputusan menahan fitur ini menunjukkan prioritas yang jelas: tim lebih memilih merilis versi yang stabil dan bersih daripada mengejar fitur yang belum matang. Bagi tim produksi, ini kabar baik, karena artinya rilis mayor ini tidak memaksa adopsi API eksperimental yang bisa berubah lagi di kemudian hari. Kamu bisa naik versi untuk perbaikan yang sudah matang, tanpa harus ikut menanggung risiko fitur setengah jadi.
Perbandingan SvelteKit 2 dan SvelteKit 3
Tabel berikut merangkum perbedaan kedua versi pada area yang paling sering disentuh pengembang sehari-hari.
| Aspek | SvelteKit 2 | SvelteKit 3 |
|---|---|---|
| Lokasi konfigurasi | svelte.config.js | vite.config.ts |
| Alias pustaka | $lib | #lib |
| Variabel lingkungan | Terpisah dan terbatas | Lebih kuat dan mudah |
| Service worker | Banyak kode upacara | Lebih ringkas |
| Penanganan error | Dasar | Diperbaiki menyeluruh |
| Remote functions | Belum ada | Belum siap, butuh flag |
Siapa yang Sebaiknya Segera Naik Versi?
Proyek baru sebaiknya langsung memakai SvelteKit 3, karena tidak ada beban migrasi dan semua dokumentasi akan mengarah ke versi ini. Proyek lama yang stabil tidak perlu terburu-buru. Pertimbangkan naik versi ketika ada kebutuhan nyata terhadap salah satu perbaikan, misalnya penanganan error yang lebih baik, atau ketika ada waktu khusus untuk mengurus migrasi. Karena ini rilis mayor, menunda sampai dokumentasi ekosistem menyesuaikan diri adalah keputusan yang wajar dan sering kali lebih hemat waktu.
Satu catatan tambahan: komunitas Svelte akan merayakan ulang tahun ke-10 Svelte di Svelte Summit yang digelar 19 sampai 20 November di Ljubljana, Slovenia. Acara ini biasanya menjadi tempat pengumuman arah berikutnya, termasuk kelanjutan remote functions. Kalau kamu ingin mengikuti perkembangan setelah rilis, momen itu layak diperhatikan, terutama karena tim sudah menyebut remote functions sebagai prioritas.
Apakah Ada Risiko Tersembunyi dari Perubahan Konfigurasi?
Risiko utamanya adalah plugin Vite yang bergantung pada urutan pemuatan konfigurasi. Ketika pengaturan SvelteKit pindah ke vite.config.ts, urutan plugin bisa berubah dan memunculkan konflik yang sebelumnya tidak terlihat. Gejalanya biasanya berupa build yang gagal atau aset yang tidak ter-resolve, bukan error yang jelas menunjuk ke konfigurasi. Karena itu, menguji build di staging sebelum produksi bukan formalitas, melainkan langkah yang benar-benar menangkap masalah jenis ini.
Cara paling aman adalah memigrasikan satu hal pada satu waktu dan menjalankan test setelah setiap langkah. Jangan menggabungkan migrasi SvelteKit dengan peningkatan dependensi besar lainnya dalam satu perubahan. Dengan begitu, ketika ada yang gagal, kamu tahu persis perubahan mana yang menyebabkannya, dan proses pemulihannya jauh lebih singkat.
Apakah SvelteKit 3 Cocok untuk Proyek Kecil?
Ya, justru proyek kecil sering mendapat manfaat paling cepat. Karena SvelteKit 3 menyatukan konfigurasi ke vite.config.ts dan mengurangi kode upacara pada service worker, jumlah berkas yang harus dipahami di awal menjadi lebih sedikit. Untuk proyek yang dikerjakan satu atau dua orang, pengurangan lapisan konfigurasi berarti lebih sedikit hal yang bisa salah dan lebih sedikit dokumentasi internal yang harus ditulis. Selama tidak ada dependensi yang belum mendukung versi baru, migrasi biasanya selesai dalam hitungan jam.
Yang perlu diwaspadai justru kebiasaan lama. Banyak contoh kode di internet masih memakai alias $lib, dan menyalinnya mentah-mentah ke proyek SvelteKit 3 akan menghasilkan impor yang gagal di-resolve. Kebiasaan memeriksa versi dokumentasi sebelum menyalin contoh kode menjadi lebih penting, terutama selama beberapa minggu pertama setelah rilis mayor seperti ini.
Apa Dampaknya bagi Ekosistem Svelte Secara Keseluruhan?
Dampak terbesarnya adalah penyelarasan dengan Vite. Karena konfigurasi kini berada di vite.config.ts, batas antara SvelteKit dan ekosistem plugin Vite menjadi lebih tipis. Ini memudahkan penulis plugin untuk menargetkan satu format konfigurasi, dan memudahkan pengembang untuk menggabungkan alat dari komunitas yang lebih luas. Dalam jangka panjang, penyatuan semacam ini mengurangi duplikasi di tingkat tooling dan membuat perilaku build lebih mudah diprediksi.
Efek kedua adalah pada pustaka komponen dan template starter. Setiap template yang masih memakai svelte.config.js harus diperbarui, dan itu memakan waktu komunitas. Pola ini normal untuk rilis mayor, tetapi penting disadari agar kamu tidak menyimpulkan bahwa suatu pustaka sudah mati hanya karena belum memperbarui template-nya dalam beberapa hari pertama. Bagi yang memelihara template internal, langkah paling efisien adalah menjalankan perintah migrasi pada satu template, menyimpannya sebagai rujukan, lalu menerapkannya ke template lain secara bertahap. Dengan cara itu, pengetahuan tentang perubahan versi ini terkumpul di satu tempat dan tidak tersebar di kepala masing-masing anggota tim.
FAQ
Apakah SvelteKit 3 wajib dipakai sekarang?
Tidak wajib. Proyek stabil bisa tetap di SvelteKit 2, tetapi proyek baru sebaiknya langsung memakai versi 3 karena semua dokumentasi diarahkan ke sana.
Bagaimana cara memulai migrasi?
Jalankan perintah npx sv migrate sveltekit-3 --tasks all --confirm. Alat itu memindahkan sebagian besar kode secara otomatis dan menyisakan daftar pekerjaan kecil untuk diselesaikan manual.
Apa pengganti alias $lib?
Alias $lib diganti menjadi #lib, yang memakai mekanisme subpath imports standar sehingga lebih konsisten dengan ekosistem JavaScript secara luas.
Kapan remote functions tersedia stabil?
Belum ada tanggal pasti. Tim Svelte menyebutnya prioritas utama, tetapi fitur ini masih membutuhkan flag eksperimental Async Svelte dan belum masuk rilis stabil.
Apakah migrasi mengubah cara impor di dalam file konfigurasi?
Ya. Karena konfigurasi berpindah ke vite.config.ts, impor dan alias di dalamnya juga perlu disesuaikan agar konsisten dengan mekanisme subpath imports yang baru.
Sumber utama: pengumuman resmi SvelteKit 3 di blog Svelte, panduan migrasi SvelteKit, dan repositori sveltejs/kit di GitHub. Untuk paket dan versi terbaru, cek halaman @sveltejs/kit di npm.
💬 Komentar (0)
Belum ada komentar. Jadilah yang pertama! 💬