fahreziblog
Kembali ke blog

Mengapa Astro Sangat Cepat? Menyelami Filosofi Island Architecture dan Zero-JS

Dalam satu dekade terakhir, ekosistem pengembangan web terjebak dalam sebuah ironi besar: kita menciptakan situs web berbasis konten yang tugas utamanya hanya menampilkan teks dan gambar, tetapi kita mengirimkan megabyte demi megabyte kode JavaScript ke browser pengguna.

Pengguna membuka artikel berita atau blog pribadi sederhana di ponsel mereka, lalu mendapati halaman tersebut membeku selama beberapa detik (main-thread lock), baterai perangkat cepat terkuras, dan kipas laptop berputar kencang. Fenomena ini sering disebut oleh para pakar performa sebagai Hydration Tax (Pajak Hidrasi).

Di tengah kejenuhan tersebut, Astro hadir dengan filosofi radikal yang mengubah total cara kita memandang pembuatan web modern: Island Architecture dan prinsip Nol JavaScript secara Default (Zero-JS by Default).


Memahami “Pajak Hidrasi” di Dunia SPA Tradisional

Untuk memahami mengapa Astro begitu cepat, kita harus terlebih dahulu mengerti mengapa framework tradisional seperti Next.js (Pages Router lama) atau SPA React standar sering kali terasa lambat di perangkat spesifikasi menengah ke bawah.

Dalam model Single Page Application (SPA) konvensional:

  1. Server merender HTML mentah dan mengirimkannya ke browser.
  2. Pengguna melihat tampilan awal, tetapi tombol atau navigasi belum bisa diklik.
  3. Browser harus mengunduh bundle JavaScript raksasa yang berisi seluruh framework React beserta semua komponennya.
  4. Browser mengeksekusi JavaScript tersebut untuk menempelkan event listeners dan membangun pohon virtual DOM ulang di sisi klien. Proses inilah yang disebut Hydration.
[Alur SPA Klasik: Berat & Monolitik]
Download HTML ──▶ Download Bundle JS Raksasa ──▶ Parse & Re-Hydrate Seluruh Halaman ──▶ Baru Bisa Digunakan

[Alur Island Architecture: Ringan & Terisolasi]
Download HTML Murni (Instan!) ──────────────────────────────────────────────────────────▶ Langsung Terbaca
                                 └──▶ Hanya 'Pulau' Interaktif Tertentu yang Menarik JS

Jika 95% halaman Anda hanyalah teks statis, judul, dan footer, mengapa pengguna harus membayar biaya komputasi untuk menghidrasi seluruh halaman tersebut?


Bagaimana Island Architecture Menyelesaikan Masalah Ini?

Konsep Island Architecture (yang awalnya digagas oleh Louro Vieira dan dipopulerkan oleh Jason Miller dari tim Preact) memandang sebuah halaman web layaknya lautan HTML statis yang di dalamnya terdapat beberapa “pulau” interaktif kecil yang terisolasi.

Di Astro, secara default semua komponen dirender menjadi HTML murni saat build-time. Bahkan jika Anda menulis komponen menggunakan React, Vue, atau Svelte di dalam file Astro, Astro akan melucuti semua runtime JavaScript dari komponen tersebut dan hanya menyisakan string HTML statis!

JavaScript baru akan dikirimkan ke browser hanya jika dan hanya saat Anda secara eksplisit menandai komponen tersebut sebagai “pulau” menggunakan direktif klien (client directives):

---
import StaticHeader from './Header.astro';
import StaticArticle from './Article.astro';
import InteractiveSearch from './Search.jsx';
import InteractiveComments from './Comments.svelte';
---

<!-- 1. Komponen statis: 0 KB JavaScript dikirim ke browser -->
<StaticHeader />
<StaticArticle />

<!-- 2. Pulau Interaktif: Hanya komponen ini yang memuat JS saat idle -->
<InteractiveSearch client:idle />

<!-- 3. Pulau Terpisah: Hanya memuat JS saat komponen terlihat di layar -->
<InteractiveComments client:visible />

Keuntungan Arsitektur Kepulauan:

  1. Pemuatan Parsial dan Terisolasi: Setiap pulau dimuat secara independen (non-blocking). Jika komponen komentar yang berat mengalami keterlambatan unduh, komponen pencarian di bagian atas tetap berfungsi normal tanpa terganggu.
  2. Kombinasi Multi-Framework Tanpa Batas: Anda bisa menggunakan React untuk form interaktif, Svelte untuk grafik performa tinggi, dan komponen Astro murni untuk layout dalam satu halaman yang sama tanpa konflik.
  3. Optimasi Core Web Vitals Bawaan: Karena tidak ada JavaScript yang membebani main thread saat pemuatan awal, skor LCP (Largest Contentful Paint) dan INP (Interaction to Next Paint) situs Astro secara konsisten menyentuh angka hijau sempurna (95–100 di Google PageSpeed).

Perbandingan Arsitektur: Kapan Memilih Apa?

AspekAstro (Island Architecture)Framework SPA Penuh (Next.js / Remix)
Beban JavaScript KlienNol KB secara default, hanya pulau aktifMengirimkan runtime framework ke semua halaman
Use Case TerbaikBlog, situs dokumentasi, landing page, toko e-commerceDashboard analitik kompleks, web-app dengan state konstan
Metode RenderingStatis murni (SSG) atau SSR on-demandServer-Side Rendering dengan hidrasi penuh
Waktu Respon AwalMendekati instan (statis dari CDN tepi/edge)Memerlukan komputasi server dan hidrasi klien

Kesimpulan

Astro bukan diciptakan untuk mematikan React atau framework SPA lainnya. Astro hadir untuk mengembalikan akal sehat ke dunia rekayasa web: gunakan teknologi yang tepat untuk masalah yang tepat.

Untuk situs-situs yang berorientasi pada konten (content-driven websites), filosofi Zero-JS by default bukan hanya menyelamatkan kuota internet dan baterai pengguna, tetapi juga memberikan pengalaman membaca yang paling cepat, bersih, dan beradab di internet modern.

Comments