react
Catatan teknis seputar web development, DevOps, dan integrasi AI.
58 artikel
- 00.02frontend
Membangun Marquee 3 Kolom yang Accessible dengan CSS dan React
Marquee 3 kolom x 3 pilar pakai CSS keyframes + React: seamless loop, pause-on-hover, RTL-ready, aria-hidden/inert untuk accessibility -- tanpa library carousel.
TL;DR: Pakai CSS keyframes buat marquee. Ngga pakai library carousel karena berat. Hasilnya tiga pilar marquee vertikal.
#react#css#marquee - 21.51frontend
Membelah Grid: Halaman Pertama Server, Sisanya Klien
Grid entitas pilar yang menahan render halaman terlalu lama. Halaman pertama tetap dirender server, sisanya pindah ke island klien.
TL;DR: Halaman profil pilar lambat karena request data yang lambat. Menaikkan limit tidak mempercepat apa pun. Sekarang, delapan kartu pertama dikirim sebagai HTML dan sisanya sebagai JSON.
#nextjs#react#pagination - 08.50frontend
Satu Direktif yang Menandai Seluruh Modul, Bukan Cuma Komponen
Impor fungsi bantu dari file bertanda modul klien menghasilkan referensi, bukan fungsi. Error runtime dan pola modul netralnya.
TL;DR: Error "is not a function" muncul di halaman /budaya. Fungsi toVideoItems tidak bisa dipanggil dari server karena diekspor dari modul klien. Modul netral tanpa direktif bisa menyelesaikan masalah ini.
#nextjs#react#typescript - 19.14frontend
Memindahkan Section Antar Halaman di Next.js App Router
Section UI tidak pernah pindah sendirian di App Router: jalur fetch, fallback, dan pembersihan jalur data mati harus ikut berpindah.
TL;DR: Section hero lama dipindahkan ke halaman pariwisata. Data section tidak ikut pindah karena dilapari oleh fetch di halaman utama. Fetch dipindahkan ke halaman pariwisata untuk memperbaiki masalah.
#nextjs#react#app-router - 23.44frontend
Limit 100 Diam-diam Jadi 20, Daftarnya 54
Kontrak limit lebih penting daripada angka yang dikirim klien. Ketika limit 100 diam-diam menjadi 20, daftar 54 kartu hanya menampilkan 20 di layar.
TL;DR: Ada 54 organisasi olahraga. Tapi di layar hanya muncul 20. Perbaikannya adalah mengambil data per halaman penuh.
#react#nextjs#typescript - 22.46frontend
Tiga Halaman 7 Baris, Satu Komponen 471 Baris
Modul Kelembagaan di admin CMS: tiga route server 7-14 baris, satu editor klien 471 baris, dan guard id yang melempar 404 sebelum fetch.
TL;DR: Halaman 404 muncul karena id organisasi tidak valid. Validasi id dilakukan di route sunting sebelum komponen dimuat. Komponen klien melakukan validasi tambahan untuk kenyamanan pengguna.
#nextjs#react#typescript - 20.28frontend
Server yang Menulis Judul, Klien yang Mengisi Daftar
Cangkang halaman, metadata, dan judul datang dari server; daftar, tab, dan pencarian debounce 350 ms hidup di satu island klien.
TL;DR: Halaman informasi olahraga baru dibuat. Server hanya menulis metadata dan judul, isi daftarnya diambil di browser. Judul dan metadata dihasilkan di server untuk mesin telusur.
#nextjs#react#seo - 05.22backend
Cek Benturan Jadwal sebagai Peringatan, Bukan Penghalang
Formulir peminjaman kini memperingatkan benturan jadwal tanpa memblokir: endpoint baca-saja, SQL irisan inklusif, debounce dan abort.
TL;DR: Dulu dua pengajuan sewa aula yang tabrak tanggal bisa lolos dua-duanya karena petugas beda nggak saling cek. Sekarang ada endpoint baca-saja yang nandain irisan jadwal, terus formulir munculin kotak peringatan kuning. Tapi tombol kirim tetap bebas, soalnya sistem cuma ngasih tahu, keputusan akhir tetap di tangan petugas.
#go#mysql#react - 01.30security
Ketika Server Fail-Closed, Antarmuka Pun Harus Jujur
Server menolak unggahan bebas dari editor ter-scope, tetapi tombolnya tetap ditawarkan. Gate antarmuka menertibkan affordance; penegakan tetap di server.
TL;DR: Jadi gini, editor yang cuma punya akses terbatas masih bisa lihat tombol upload media, padahal pasti kena 403 karena server emang cuma izinin admin-global. Server-nya sih udah aman fail-closed, masalahnya di UI, jadi tombolnya disembunyiin pakai gerbang canManageModule, niru pola canUploadFree. Intinya UI cuma cerminan aturan server, bukan penegak keamanan beneran.
#rbac#react#ux