Kenapa saya pakai Inertia.js, bukan REST API
Saat mulai mengerjakan Ruang Baca Informatika, pilihan awalnya adalah Laravel sebagai API + React sebagai SPA terpisah. Pendekatan yang familiar, banyak tutorialnya. Tapi sebelum menulis satu endpoint pun, saya berhenti dan bertanya: apakah saya benar-benar butuh ini?
Masalah dengan API terpisah untuk aplikasi internal
API terpisah masuk akal ketika ada lebih dari satu klien — mobile app, pihak ketiga, atau tim frontend yang bekerja di repositori berbeda. Untuk aplikasi perpustakaan yang hanya diakses lewat browser, lapisan API itu hanya menambah pekerjaan:
- Dua repositori atau dua service untuk dikelola
- Autentikasi harus diselesaikan dua kali (CSRF di web, token di API)
- Type sharing antara backend dan frontend jadi rumit
- Setiap perubahan field di database perlu diubah di tiga tempat: migration, API response, dan React component
Apa yang Inertia selesaikan
Inertia bukan framework — ia adalah protokol kecil yang membuat Laravel controller bisa “merespons” dengan component React tanpa membangun API.
// Controller biasa, tidak ada JSON::response()
public function index()
{
return Inertia::render('Books/Index', [
'books' => Book::with('loans')->paginate(20),
'stats' => BookStats::summary(),
]);
}Di sisi React, component menerima books dan stats sebagai props biasa.
Navigasi antar halaman terasa seperti SPA karena Inertia mengintersep klik
dan melakukan XHR, tapi URL tetap berubah dan tombol back berfungsi normal.
Yang saya korbankan
- Tidak bisa dipakai dari mobile app tanpa modifikasi. Kalau suatu hari Ruang Baca butuh aplikasi Android, saya harus menambah API layer. Saya terima tradeoff ini karena tidak ada rencana ke sana.
- Server-side rendering terbatas. Inertia bukan SSR framework. Halaman pertama tetap dirender di server, tapi tidak sefleksibel Next.js.
Kesimpulan
Untuk aplikasi internal dengan satu klien, Inertia menghemat waktu yang signifikan. Saya menulis lebih sedikit kode, memelihara lebih sedikit abstraksi, dan menyelesaikan fitur lebih cepat. REST API bukan standar emas — ia adalah alat yang tepat untuk masalah tertentu.