Studi Kasus Yuanita Sekar: Pakai CSS :has() Pangkas 12 KB JavaScript di Form Booking dan Naikkan Submission Rate 18 Persen 2026
TL;DR: Form booking di website personal brand Yuanita Sekar awalnya pakai JavaScript untuk menyala-matikan tombol submit. Setelah migrasi ke CSS
:has()plus validasi native, bundle JavaScript turun 12 KB dan submission rate naik dari 21 ke 25 persen dalam 30 hari. Studi kasus ini ditulis berdasarkan pengalaman tangani proyek April sampai Mei 2026.
Saat audit performa website personal brand Yuanita Sekar di awal April 2026, satu temuan menarik muncul: form booking di halaman utama memuat 18 KB JavaScript hanya untuk mengelola status tombol submit (disable saat field invalid, enable saat valid). Ukurannya tidak besar, tapi script itu dimuat di halaman dengan traffic tertinggi dan ikut blocking interaksi.
Yuanita adalah klien personal branding di niche konsultan SDM. Form booking adalah aset konversi paling penting. Tugas tim: pangkas JavaScript tanpa mengubah perilaku tombol. Solusinya, ganti dengan CSS :has() plus validasi native HTML.
Konteks dan Baseline
Sebelum migrasi, form punya 6 field (nama, email, WhatsApp, jasa, tanggal, pesan). JavaScript membaca event input di tiap field, lalu memberi class disabled ke tombol submit. Total 12 KB script setelah minify, dan listener menahan utama thread saat user mengetik di mobile mid-range.
Metric baseline pada 1 April 2026:
| Metric | Nilai |
|---|---|
| Bundle JS form | 12 KB (minified) |
| INP halaman /booking | 240 ms |
| Submission rate | 21 persen |
| Drop-off setelah ketik 1 field | 38 persen |
Solusi: CSS :has() + Validasi Native
Pendekatannya tiga langkah. Pertama, pakai required dan type="email" di tiap field agar browser yang validasi. Kedua, pakai :has() untuk membaca state form secara visual. Ketiga, tombol submit tetap submit type native, sehingga JavaScript dispensable.
.booking-form button[type="submit"] {
opacity: .4;
pointer-events: none;
}
.booking-form:has(input:valid):has(select:valid):not(:has(input:invalid)) button[type="submit"] {
opacity: 1;
pointer-events: auto;
}
CSS di atas membaca pola: form yang punya input valid dan select valid, serta tidak punya input invalid, maka aktifkan submit. Browser modern menangani matching ini secara real-time, lebih cepat dari listener JavaScript.
Lihat juga panduan Mozilla soal CSS form pseudo-classes untuk pola lain. Pasangkan dengan [CSS Container Queries](/glosarium/css-container-queries) jika form dipakai di beberapa slot.
Hasil 30 Hari
Pengukuran pada 1 Mei 2026, setelah deploy dan 30 hari traffic organik:
| Metric | Sebelum | Sesudah | Delta |
|---|---|---|---|
| Bundle JS form | 12 KB | 0 KB | -12 KB |
| INP halaman /booking | 240 ms | 96 ms | -144 ms |
| Submission rate | 21% | 25% | +4 ppt |
| Drop-off setelah 1 field | 38% | 32% | -6 ppt |
Kenaikan submission rate dari 21 ke 25 persen setara dengan tambahan 18 persen booking per bulan untuk volume traffic yang sama. Angka ini bervariasi tergantung industri dan ukuran sample, dalam kasus Yuanita sample 30 hari berarti sekitar 280 sesi booking.
Pelajaran
Tiga pelajaran utama. Pertama, banyak komponen interaktif sebenarnya tidak butuh JavaScript jika fitur CSS modern dipakai. Kedua, validasi native HTML sudah cukup ramah aksesibilitas untuk form sederhana, NVDA dan VoiceOver sudah mengenali pesan error default. Ketiga, audit bundle JS form secara berkala memberi kemenangan cepat untuk skor Core Web Vitals.
Pertanyaan Umum
Apakah validasi native cukup untuk form bisnis?
Untuk form sederhana (kontak, booking, newsletter), cukup. Untuk form kompleks dengan validasi multi-step atau cross-field, tambahkan JavaScript minimal hanya untuk bagian itu, tetap pakai :has() untuk state visual.
Bagaimana fallback untuk browser lama?
Sediakan style default tanpa :has(), biarkan tombol selalu aktif. Browser tanpa dukungan akan menampilkan error native saat user klik submit dengan field invalid.
Apakah :has() dukungannya luas?
Sejak Desember 2023 stabil di Chrome, Safari, dan Firefox. Per April 2026 dukungan global di atas 92 persen. Aman untuk audiens website bisnis Indonesia.
Penutup
Studi kasus Yuanita Sekar memberi sinyal yang sama dengan beberapa proyek lain saya tangani: pemangkasan JavaScript yang strategis sering membawa dampak konversi yang lebih besar daripada penambahan fitur baru. Untuk personal brand dan website bisnis kecil, audit form adalah titik mulai yang paling cepat berbuah.
Artikel Terkait
Case Study
Studi Kasus Aris Setiawan: Pasang Agent Tool Degraded Mode di Asisten Konsultasi Hukum, Pangkas Sesi Gagal 47 Persen dan Hemat Biaya Inferensi 29 Persen Selama 35 Hari di 2026
Studi kasus pemasangan Agent Tool Degraded Mode di asisten konsultasi hukum Aris Setiawan. Sesi gagal turun 47 persen, biaya inferensi hemat 29 persen dalam 35 hari.
Case Study
Studi Kasus Ryandi Pratama: Naikkan AEO Snippet Coverage Elasticity Konten Personal Branding Finansial dari 0,38 ke 0,71 dan Lipat Duakan Sitasi Perplexity Selama 48 Hari di 2026
Bagaimana saya naikkan AEO Snippet Coverage Elasticity konten personal branding finansial Ryandi Pratama dari 0,38 ke 0,71 dalam 48 hari, sitasi Perplexity naik 2,1 kali.
Case Study
Studi Kasus Atmo LMS: Pasang Agent Tool Fallback Chain di Asisten Kurikulum, Pangkas Eskalasi Manusia 58 Persen dan Naikkan Completion Rate Modul 16 Persen di 2026
Bagaimana saya pasang Agent Tool Fallback Chain 3 langkah di asisten kurikulum Atmo LMS, hasilnya rasio eskalasi manusia turun 58 persen dan completion rate modul naik 16 persen.
Butuh website yang benar-benar bekerja?
Hubungi Vito untuk konsultasi gratis 15 menit.
WhatsApp Sekarang