Next.js
10 Januari 2024
11 menit baca

Memahami Server Components di Next.js

Panduan praktis memakai Server Components, App Router, data fetching, dan boundary client agar halaman lebih ringan dan ramah crawler.

Memahami Server Components di Next.js

Mulai dari Pertanyaan Sederhana

Server Components paling berguna saat membuat halaman lebih sederhana, bukan saat dipakai sebagai label teknologi. Pertanyaan pertama saya: bagian ini butuh state browser atau tidak? Kalau tidak, bagian itu biasanya aman tetap di server. Copy marketing, tabel harga, konten artikel, detail project, dan JSON-LD tidak perlu hydrate.

App Router memberi boundary yang enak untuk website portfolio, service, dan konten. Route bisa mengambil data, membuat metadata, mengirim structured data, lalu hanya menyerahkan bagian interaktif ke client component. Teks penting tetap terkirim sebagai HTML, sedangkan tombol, menu, form, dan enhancement kecil hydrate terpisah.

Jangan Terlalu Cepat Menandai use client

Manfaat Server Components hilang saat terlalu banyak komponen diberi use client. Jika hanya satu child butuh click handler, pindahkan interaksi ke child itu. Biarkan page server memegang konten dan SEO. Biarkan client component memegang interaksi. Kebiasaan kecil ini mencegah bundle JavaScript membesar tanpa sadar.

Tradeoff yang Perlu Dijaga

Server Components bukan pengganti semua state. Filter yang harus shareable bisa masuk URL. State UI lokal tetap di client. Mutasi data bisa memakai server action atau API route sesuai kebutuhan. Yang penting adalah boundary tertulis jelas agar fitur berikutnya tidak mencampur rendering, data, dan interaksi dalam satu tempat.

Checklist Sebelum Artikel Dipublikasikan

Sebelum menerbitkan artikel teknis atau marketing, saya mengecek tiga hal: siapa pembacanya, aksi apa yang diharapkan, dan keberatan apa yang perlu dijawab. Artikel teknis butuh contoh, tradeoff, dan catatan implementasi. Artikel bisnis butuh konteks, bukti, timeline, dan langkah berikutnya.

Saya juga mengecek performa halaman. Gambar harus punya dimensi jelas, media di bawah layar sebaiknya lazy-load, dan JavaScript client dibatasi pada interaksi yang benar-benar perlu. Jika halaman sebagian besar berisi teks dan gambar, ia tidak seharusnya mengirim runtime animasi besar hanya untuk efek yang tidak mengubah pemahaman.

Metadata ikut dianggap sebagai bagian dari konten. Judul harus spesifik, deskripsi harus menjelaskan isi halaman dengan konkret, dan tanggal update harus terlihat. Dengan begitu pembaca dan mesin pencari sama-sama mendapat sinyal yang lebih jelas.

Dicco Suryo Kartiko — Fullstack Developer

Ditulis & dikelola oleh

Dicco Suryo Kartiko

Fullstack Developer Ā· Yogyakarta, Indonesia

Fullstack developer dengan pengalaman 4+ tahun merilis web app produksi dan website yang fokus konversi. Saya pernah mengerjakan software enterprise di Hashmicro dan Nawadata serta membangun landing page, company profile, dan web app untuk bisnis jasa di berbagai daerah Indonesia. Semua konten di halaman ini ditulis dan dikelola langsung oleh saya.

GitHubLinkedInTerakhir diperbarui: 2024-01-10