Studi Kasus Yuanita Sekar: Intersection Observer Trigger Animasi Personal Brand Tanpa Library Animasi 2026
TL;DR: Pada website personal brand Yuanita Sekar, animasi section dipicu oleh Intersection Observer native, bukan oleh library animasi berat. Hasilnya bundle JavaScript tetap di bawah 90 KB, INP terjaga di 142 ms, dan animasi terasa halus di Moto G Power throttled 4G. Pola ini cocok untuk personal brand yang ingin tampil profesional tanpa membebani performa.
Yuanita Sekar adalah klien personal branding yang menargetkan audiens HR profesional. Saat brief awal di April 2026, beliau minta dua hal yang sering tampak bertentangan: tampilan yang halus dan elegan layaknya portfolio designer, tapi tetap cepat di koneksi 4G Indonesia. Banyak template personal brand memakai Framer Motion atau GSAP, dan keduanya menambah 30 sampai 60 KB ke bundle.
Strategi yang saya pakai untuk Yuanita: pakai Intersection Observer native untuk mendeteksi section masuk viewport, lalu toggle class CSS dengan transition. Animasi tetap halus, bundle tetap ramping, dan tidak ada library yang harus di-hydrate.
Masalah Awal
Versi pertama website Yuanita memakai Framer Motion untuk fade-in setiap section. Audit performa menunjukkan:
- Initial JS: 187 KB (Framer Motion + dependencies ikut)
- INP rata-rata: 280 ms di Moto G Power throttled 4G
- LCP: 2,1 detik, masih aman tapi bisa lebih baik
- Animasi terasa lag saat scroll cepat di halaman tentang
Audiens HR profesional cenderung scroll cepat untuk memindai kredensial. Lag saat scroll merusak kesan profesional yang justru ingin dibangun. Saya ulas lebih dalam soal trade-off animasi di artikel bundle size budget Next.js.
Pendekatan Solusi
Implementasi dipecah jadi tiga komponen kecil yang reusable. Pola atomic design tetap dipertahankan supaya DRY.
| Komponen | Letak | Fungsi |
|---|---|---|
useInView | hooks/ | Wrapper Intersection Observer jadi React state |
RevealOnScroll | components/atoms/ | Wrapper yang toggle class is-visible |
globals.css | app/ | Definisi transition opacity + translateY |
Snippet CSS:
.reveal { opacity: 0; transform: translateY(16px); transition: opacity .5s ease, transform .5s ease; }
.reveal.is-visible { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .reveal, .reveal.is-visible { opacity: 1; transform: none; transition: none; } }
Penting menghormati prefers-reduced-motion agar pengguna yang sensitif tetap nyaman. Standar ini dibahas di WCAG 2.3.3.
Hasil yang Diukur
Setelah migrasi dari Framer Motion ke pola Intersection Observer native, hasilnya:
| Metrik | Sebelum | Sesudah |
|---|---|---|
| Initial JS | 187 KB | 86 KB |
| INP | 280 ms | 142 ms |
| LCP | 2,1 detik | 1,4 detik |
| Bundle dependencies | 14 paket | 8 paket |
Audit dilakukan di Moto G Power dengan throttling Slow 4G di Chrome DevTools, sampel 20 trace, median dipakai. Lighthouse skor performance naik dari 78 ke 96. Pola yang sama saya pakai juga di website Atmo LMS, dengan dampak konsisten pada Core Web Vitals.
Pertanyaan Umum
Apakah animasi CSS native cukup canggih untuk personal brand?
Untuk fade, slide, scale, dan stagger sederhana, ya. Library animasi unggul ketika dibutuhkan physics-based animation, gesture interaktif, atau timeline kompleks. Personal brand jarang butuh yang ekstrem.
Apakah perlu mempertimbangkan SEO?
Konten utama tetap di server-render dan terbaca tanpa JavaScript. Animasi hanya enhancement visual, jadi tidak mempengaruhi crawl dan indexing.
Bagaimana dengan animasi yang harus berulang?
Untuk repeat animation, jangan .disconnect() setelah trigger pertama. Toggle class on/off berdasarkan isIntersecting. Konsekuensinya observer terus aktif dan sedikit menambah beban, jadi pakai dengan bijak.
Penutup Aplikatif
Personal brand profesional tidak harus mahal di sisi bundle. Mulai dari mengganti satu library animasi dengan kombinasi Intersection Observer dan CSS transition. Audit ulang dengan Lighthouse dan WebPageTest. Jika dampaknya jelas pada INP dan initial JS, lanjutkan pola yang sama untuk komponen lain seperti counter angka, parallax ringan, dan reveal heading.
Artikel Terkait
Case Study
Studi Kasus Nalesha: Container Query Bikin 1 Product Card Adaptif di 4 Slot Tanpa Duplikasi CSS 2026
Nalesha pakai 1 komponen product card untuk hero, grid, sidebar, dan related. Dengan Container Query, CSS turun dari 4 file ke 1 file dan maintenance jauh lebih ringan.
Case Study
Studi Kasus Aris Setiawan: Pasang Priority Hints di Hero Image Pangkas LCP dari 3,1 ke 1,2 Detik 2026
Hero image personal branding Aris Setiawan punya LCP 3,1 detik karena bersaing dengan font dan script analytics. Dengan priority hints, prioritas download diatur ulang dan LCP turun ke 1,2 detik. Berikut detail teknisnya.
Case Study
Studi Kasus Felicia Tan: Pasang Service Worker Pangkas Repeat Visit Load dari 2,4 ke 0,3 Detik 2026
Pelajari studi kasus pasang service worker di website personal branding Felicia Tan yang memangkas waktu muat repeat visit dari 2,4 detik ke 0,3 detik dalam 45 hari.
Butuh website yang benar-benar bekerja?
Hubungi Vito untuk konsultasi gratis 15 menit.
WhatsApp Sekarang