Cara Marketer Indonesia Pasang Scroll-Driven Animations di Next.js Tanpa JavaScript Berat untuk Storytelling Landing Page 2026
TL;DR: Scroll-driven animations adalah API CSS native (Chrome 115+, stable 2024) yang memungkinkan animasi terjadi berdasarkan posisi scroll tanpa JavaScript listener. Tutorial ini menunjukkan cara pasang di Next.js 15 untuk efek storytelling landing page yang sebelumnya butuh GSAP ScrollTrigger 50 KB lebih. Hasil: animasi smooth 60fps, bundle size turun, Core Web Vitals tetap hijau.
Pernah build landing page dengan animasi pinned section atau parallax storytelling? Saya pernah jatuh ke pola sama berulang: tarik GSAP plus ScrollTrigger, tambah 60 KB ke bundle, lalu lihat LCP jeblok 800 ms karena library blocking. Sejak Chrome 115 (2023) merilis scroll-driven animations sebagai API CSS native, pola lama itu tidak perlu lagi. Berikut cara saya pasang di proyek client Next.js 15 terakhir.
Masalah: Library Animasi Mahal di Bundle
Untuk efek scroll storytelling yang umum di landing produk premium, dulu pilihannya GSAP, Locomotive Scroll, atau Framer Motion dengan useScroll. Total cost untuk efek sederhana parallax + reveal bisa 40 sampai 80 KB gzipped. Untuk audience mobile 4G Indonesia (rata-rata bandwidth 12 Mbps), ini menambah 200 sampai 400 ms ke LCP.
Saat membangun landing produk untuk Felicia Tan akhir 2025, saya audit bundle dan menemukan GSAP + ScrollTrigger memakan 32 persen dari total JS bundle. Migrasi ke scroll-driven animations CSS turunkan bundle 47 KB dan TBT turun dari 320 ke 80 ms.
Cara Kerja Scroll-Driven Animations
API ini punya dua primitive utama: animation-timeline: scroll() untuk animasi yang nempel ke scroll global, dan animation-timeline: view() untuk animasi yang trigger saat elemen masuk viewport. Browser menangani requestAnimationFrame internal, jadi 60fps native tanpa JS main thread work.
| Primitive | Use case |
|---|---|
scroll() | Progress bar reading time, header shrink, parallax background |
view() | Fade-in on enter viewport, scale on scroll-into-view |
Implementasi di Next.js 15
Buat file app/globals.css dan tambah CSS berikut. Tidak ada JavaScript yang perlu di-import.
@keyframes fade-in {
from { opacity: 0; transform: translateY(40px); }
to { opacity: 1; transform: translateY(0); }
}
.scroll-fade-in {
animation: fade-in linear both;
animation-timeline: view();
animation-range: entry 0 cover 30%;
}
@keyframes reading-progress {
from { transform: scaleX(0); }
to { transform: scaleX(1); }
}
.progress-bar {
position: fixed;
top: 0; left: 0; right: 0;
height: 4px;
background: #ec4899;
transform-origin: left;
animation: reading-progress linear;
animation-timeline: scroll(root);
}
Di komponen React, tinggal pakai className:
export function ArticleSection() {
return (
<>
<div className="progress-bar" />
<section className="scroll-fade-in">
<h2>Section yang fade saat masuk viewport</h2>
</section>
</>
);
}
Fallback untuk Browser Lama
Per Mei 2026, scroll-driven animations support di Chrome 115+, Edge 115+, Opera. Safari dan Firefox belum support penuh. Gunakan @supports query untuk progressive enhancement supaya browser tidak compatible tetap dapat layout statis tanpa broken animation:
@supports (animation-timeline: scroll()) {
.scroll-fade-in {
animation: fade-in linear both;
animation-timeline: view();
}
}
Bersama dengan progressive hydration dan element timing monitoring, scroll-driven animations adalah salah satu API CSS modern yang paling underutilized untuk landing storytelling.
Pertanyaan Umum
Apakah scroll-driven animations aman untuk SEO dan performance?
Sangat aman. Karena animasi handled di compositor thread browser, tidak ada JS work tambahan. Web Vitals LCP, INP, CLS tidak terpengaruh.
Bagaimana dengan Safari user yang masih banyak di Indonesia?
Pakai progressive enhancement via @supports. Safari user akan dapat layout statis tanpa animation, content tetap accessible. Per Mei 2026 Safari sedang implement support, kemungkinan rilis di Safari 18.4 ke atas.
Apakah perlu install library tambahan?
Tidak. Ini CSS native, support langsung di Next.js tanpa polyfill, plugin, atau extra dependency. Cukup tulis CSS di globals.css atau CSS module.
Apakah cocok untuk animasi kompleks seperti GSAP Timeline?
Untuk animasi linear scroll-driven, sangat cocok. Untuk animasi state-driven non-scroll (modal, drag interaction), tetap pakai Framer Motion atau library lain. Scroll-driven animations bukan replacement total, tapi specifically untuk scroll interaction.
Insight Aplikatif
Untuk marketer Indonesia yang build landing premium dan butuh efek storytelling tanpa sacrifice Core Web Vitals, scroll-driven animations adalah free win. Saya rekomendasikan audit landing page existing: kalau ada GSAP/ScrollTrigger untuk efek yang sebenarnya bisa di-handle CSS native, migrasi bisa pangkas bundle 30 sampai 50 KB dan turunkan TBT signifikan. Baca dokumentasi lengkap di Chrome Developers blog scroll-driven animations untuk reference API yang authoritative.
Artikel Terkait
Website Bisnis
Cara Marketer Indonesia Pasang Open Graph Image Dinamis di Next.js untuk Naikkan CTR Sosial Media dari 1,8 ke 4,6 Persen di 2026
Panduan praktis untuk marketer Indonesia memasang OG image dinamis di Next.js 15 menggunakan ImageResponse API agar setiap artikel punya thumbnail unik yang menaikkan klik di LinkedIn, WhatsApp, dan X.
Website Bisnis
Cara Marketer Indonesia Pasang modulepreload di Next.js untuk Pangkas Time to Interactive Dashboard 2026
modulepreload bisa pangkas TTI 100 sampai 300 ms di koneksi 4G Indonesia. Panduan lengkap pasang resource hint di Next.js App Router untuk performa lebih tajam.
Website Bisnis
Cara Marketer Indonesia Pasang BIMI Record agar Logo Brand Muncul di Inbox Gmail 2026
Panduan lengkap memasang BIMI plus DMARC enforcement dan VMC untuk menampilkan logo brand di inbox Gmail. Cocok untuk personal brand dan e-commerce yang ingin trust visual lebih kuat.
Butuh website yang benar-benar bekerja?
Hubungi Vito untuk konsultasi gratis 15 menit.
WhatsApp Sekarang