Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

Gak kerasa, teknologi CSS View Transitions sekarang sudah bisa bikin navigasi antar halaman di website atau aplikasi web lo jadi smooth tanpa harus ribet pakai JavaScript berat. Fitur ini tuh secara fundamental ngubah cara kita mikirin transisi antar halaman, bikin pengalaman user jadi lebih mulus kayak di aplikasi native. Yuk, kita kupas tuntas dari dasar sampai implementasi nyata!
View transitions css multi-page apps lagi sering dicari karena pemain pengin dapet pengalaman terbaik tapi tetap hemat dan aman. Di artikel ini kita bahas poin penting + rangkuman dari sumber terbaru, terus lanjut ke langkah yang bisa langsung kamu praktekkan.

Kalau lo pernah buka aplikasi mobile kayak Instagram atau Twitter (X), lo pasti sadar bahwa perpindahan antar halaman tuh terasa banget smooth-nya. Tidak ada flash putih, tidak ada loading yang njenggleng, semuanya mengalir natural. Nah, di dunia web tradisional, hal ini masih jadi momokan. Setiap kali lo klik link dan buka halaman baru, yang terjadi biasanya browser melakukan full-page reload — halaman lama menghilang, loading indicator muter-muter, lalu halaman baru muncul. Bagi user, pengalaman ini terasa patah-patah dan less premium.
Masalah ini makin kerasa kalau lo bikin game berbasis web atau dashboard aplikasi yang perlu navigasi cepat. Bayangin aja kalau player lagi main game, terus mau buka inventory lalu layar nge-flash putih dan nge-reload. Pasti bikin pengalaman gaming jadi turun drastis, kan?
CSS View Transitions hadir untuk menyelesaikan masalah ini. Dengan satu baris CSS, lo bisa bikin navigasi antar halaman terasa seperti aplikasi native — mulus, cepat, dan enak dipandang. Bukan cuma bikin web keliatan lebih keren, tapi benar-benar meningkatkan user experience dan mengurangi perceived load time.
View Transitions API adalah fitur browser modern yang memungkinkan perpindahan antar halaman (atau state di dalam satu halaman) terjadi dengan animasi transisi yang halus. Awalnya fitur ini cuma tersedia untuk Single Page Application (SPA), tapi sekarang sudah diperluas jadi cross-document view transitions — artinya lo bisa pakai ini untuk navigasi antar halaman yang berbeda di dokumen HTML yang berbeda juga.
Inti dari View Transitions tuh sederhana: browser menangkap screenshot dari state lama dan state baru, terus bikin animasi transisi di antara keduanya. Lo gak perlu nulis JavaScript yang kompleks untuk handle animasi manual. Browser yang urus semua proses rendering-nya.
Menariknya, pendekatan ini terinspirasi dari cara kerja game engine dalam mengelola transisi antar scene. Game engine biasanya punya sistem scene management yang bikin perpindahan antar level atau menu terjadi tanpa loading screen yang patah-patah. Nah, View Transitions CSS membawa pendekatan serupa ke dunia web. Buat lo yang tertarik ngembangin game berbasis web, memahami fitur ini jadi nilai plus yang besar.
Spec View Transitions itu ada dua level. Level 1 cuma bisa dipakai di dalam satu dokumen (antara elemen yang berbeda di halaman yang sama). Kalau lo mau bikin transisi antar dokumen (halaman A ke halaman B), lo butuh Level 2 yang pakai mekanisme cross-document navigation.
Mekanisme Level 2 ini luar biasa simpel di sisi developer. Lo gak perlu JavaScript khusus, gak butuh library tambahan. Cukup tambahin satu baris CSS, dan browser otomatis handle transisi antar halaman.
Versi browser yang sudah mendukung fitur ini termasuk Chrome/Edge 126+, Safari 18+, dan Firefox 134+. Ini artinya sebagian besar browser modern sudah bisa jalanin fitur ini. Bagi web developer yang target audiensnya gamers atau pengguna web aktif, ini adalah waktu yang tepat untuk mulai adopt teknologi ini.
Oke, langsung masuk ke praktik. Berikut langkah-langkah mengaktifkan View Transitions untuk navigasi antar halaman.
Tambahkan rule ini di file CSS global lo:
@view-transition {
navigation: auto;
}Satu baris itu aja. Secara otomatis, browser akan menangkap snapshot dari halaman lama dan halaman baru, terus bikin animasi cross-fade default. Gampang, kan?
Kalau lo mau kustomisasi animasinya, lo bisa pakai pseudo-elemen ::view-transition. Berikut contoh bikin animasi slide dari kanan:
@view-transition {
navigation: auto;
}
::view-transition-old(root) {
animation: slide-out 300ms ease-out;
}
::view-transition-new(root) {
animation: slide-in 300ms ease-in;
}
@keyframes slide-out {
to { transform: translateX(-100%); opacity: 0; }
}
@keyframes slide-in {
from { transform: translateX(100%); opacity: 0; }
}Kalau lo butuh kontrol lebih — misalnya mau trigger transisi manual atau handle state sebelum/sesudah transisi — lo bisa pakai API JavaScript:
// Trigger transisi manual
document.startViewTransition(() => {
// update DOM di sini
updateGameUI();
});
// Event hooks
document.addEventListener('viewtransitionstart', () => {
console.log('Transisi dimulai!');
});
document.addEventListener('viewtransitionend', () => {
console.log('Transisi selesai!');
initializeNextPage();
});Pastikan lo testing di browser yang sudah mendukung fitur ini. Lo bisa cek di DevTools bagian Console untuk lihat apakah View Transitions aktif tanpa error.
Nah, bagian ini yang seru. Mari kita bahas gimana View Transitions bisa dipake di konteks yang relate sama audiens gamer. Berikut tiga skenario nyata:
Bayangin lo bikin game web-based yang punya menu sistem kayak game RPG. Pemain bisa buka menu utama, terus masuk ke sub-menu kayak inventory, skill tree, atau settings. Biasanya perpindahan ini dilakukan dengan JavaScript yang nge-hide/show elemen, tapi hasilnya terasa kaku. Dengan View Transitions:
::view-transition-old(menu-screen) {
animation: menu-slide-left 250ms ease-in-out;
}
::view-transition-new(menu-screen) {
animation: menu-slide-right 250ms ease-in-out;
}
@keyframes menu-slide-left {
to { transform: translateX(-100%); opacity: 0; }
}
@keyframes menu-slide-right {
from { transform: translateX(100%); opacity: 0; }
}Kode di atas bikin perpindahan antar menu screen terasa kayak geser kartu — smooth dan natural. Gak perlu library animasi tambahan, gak bikin bundle size membengkak.
Ini yang paling sering bikin pengalaman gaming di browser jadi turun. Loading screen yang kaku dan nge-flash bikin pemain ngerasa wait time-nya lebih lama dari واقعnya. Dengan View Transitions, lo bisa bikin transisi dari loading screen ke gameplay yang mulus:
// Saat game finish loading
document.startViewTransition(() => {
loadingScreen.classList.add('hidden');
gameContainer.classList.remove('hidden');
gameContainer.classList.add('active');
});Dengan animasi yang dirancang baik, perceived loading time bisa turun drastis karena user udah dikasih feedback visual sejak awal proses.
Kalau lo bikin website portal esports atau platform tournament bracket, navigasi antar halaman (misalnya dari halaman bracket ke halaman detail team) bisa dipercantik dengan View Transitions. Ini menambah kesan premium dan profesional yang penting di ekosistem esports.
Sebelum View Transitions resmi didukung browser, para developer biasanya pakai beberapa pendekatan alternatif:
View Transitions CSS ngelurusin semua masalah itu. Lo gak perlu library tambahan, gak perlu setup SPA yang berat, dan browser yang handle optimasinya. Plus, karena ini native browser API, performanya jauh lebih baik daripada solusi JavaScript pihak ketiga.
Tapi tetap, kalau lo butuh kontrol yang sangat granular atau mau animasi yang sangat kompleks (misalnya animasi karakter yang multi-stage), library seperti GSAP masih punya keunggulan. View Transitions CSS ideal buat transisi navigasi standar yang bikin UX lebih smooth tanpa effort berlebih.
Perlu dipahami juga bahwa Level 1 View Transitions cuma bekerja di dalam satu halaman. Lo trigger transisi manual dengan document.startViewTransition(), dan browser animasi elemen yang berubah. Tapi ini gak bisa dipakai untuk navigasi antar halaman (cross-document) tanpa JavaScript tambahan yang nge-handle History API.
Level 2 yang kita bahas di artikel ini benar-benar native cross-document. Browser otomatis bikin transisi tanpa lo perlu panggil startViewTransition(). Cukup CSS, selesai. Ini yang bikin Level 2 jadi game changer buat web developer yang mau enhance UX tanpa complexity.
Berikut beberapa best practice yang bisa lo ikutin:
@view-transition { navigation: auto; }, observe hasilnya, baru kustomisasi pelan-pelan.
.hero-image {
view-transition-name: hero-banner;
}
::view-transition-old(hero-banner),
::view-transition-new(hero-banner) {
animation-duration: 500ms;
animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}Dengan named view transition, lo bisa bikin elemen Hero Image misalnya berpindah dari halaman list ke halaman detail dengan animasi morphing yang keren — elemen itu “nombok” dari satu halaman ke halaman lain, bukan fade/black screen.
Salah satu alasan kenapa View Transitions CSS sangat worth it untuk diadopsi adalah dampaknya ke perceived performance. Core Web Vitals sendiri punya metric yang namanya LCP (Largest Contentful Paint) dan CLS (Cumulative Layout Shift). Transisi yang dirancang baik bisa bantu menurunkan CLS karena user melihat transisi yang smooth alih-alih halaman yang “loncat” saat dimuat.
Yang bikin View Transitions keren dari sisi performa adalah semua proses compositing-nya ditangani langsung oleh browser engine — sama kayak cara browser handle animasi CSS properties lainnya. Ini berarti GPU acceleration secara otomatis diterapkan tanpa lo perlu set apa-apa.
Di konteks platform yang jual top up game atau voucher in-game credits, performa halaman yang baik itu krusial. User yang mau beli diamond atau top up harus dapat pengalaman yang seamless — dari halaman landing sampai checkout. View Transitions bisa bantu bikin proses itu terasa premium dan professional.
Untuk hasil terbaik, kombinasikan View Transitions dengan <link rel="prefetch"> untuk preload halaman yang mungkin dituju user. Dengan begini, transisi yang smooth bukan cuma animasinya yang mulus, tapi juga kontennya udah siap sebelum user sampai.
<link rel="prefetch" href="/next-page">
<link rel="prerender" href="/checkout">Kombinasi preloading + View Transitions = pengalaman web yang hampir tidak bisa dibedakan dari aplikasi native. Ini standar baru yang harus咱们 mulai terapkan sekarang.
Berikut referensi yang dipakai untuk menyusun artikel ini:

“Lebih penting konsisten + ngerti konsep, daripada sekadar ikut-ikutan setting.”
View Transitions Level 2 (cross-document) sudah didukung di Chrome/Edge 126+, Safari 18+, dan Firefox 134+. Untuk Level 1 (same-document), support-nya sudah lebih luas lagi. Pastikan selalu cek caniuse.com untuk data terbaru.
Level 1 cuma bisa animasi elemen dalam satu dokumen yang sama, butuh trigger manual dengan document.startViewTransition(). Level 2 sudah support cross-document navigation — artinya navigasi antar halaman beda HTML bisa auto-transisi hanya dengan CSS @view-transition rule.
Bisa banget! View Transitions cocok buat transisi antar scene atau menu di game web. Dengan named view-transition, elemen spesifik (misalnya hero banner atau karakter portrait) bisa dianimasi secara terpisah dari transisi halaman utama.
Untuk navigasi halaman dan transisi antar state, View Transitions sudah lebih dari cukup dan performanya lebih baik karena native browser API. Tapi untuk animasi kompleks yang butuh timeline kontrol, easing custom, atau stagger effects, library seperti GSAP masih punya keunggulan.
Pakai progressive enhancement. Pastikan website lo tetap berfungsi baik tanpa View Transitions. Lo bisa deteksi support dengan feature detection: if (document.startViewTransition) { } else { }.
View Transitions bisa bantu turunkan CLS (Cumulative Layout Shift) karena transisi antar halaman jadi lebih smooth dan predictable. Ini berdampak ke perceived performance yang lebih baik, yang pada akhirnya bikin user experience lebih positif.
Kalau kamu punya pengalaman atau trik soal view transitions css multi-page apps, drop di komentar ya — biar kita saling bantu komunitas.