Case Study

Studi Kasus Atmo LMS: Pangkas LCP dari 3,2 ke 1,4 Detik dengan Resource Hints di 2026

Vito Atmo
Vito Atmo·25 Mei 2026·0 kali dibaca·4 min baca
Studi Kasus Atmo LMS: Pangkas LCP dari 3,2 ke 1,4 Detik dengan Resource Hints di 2026

TL;DR: Atmo LMS turun LCP dari 3,2 ke 1,4 detik dalam 21 hari hanya dengan menambah empat resource hint (preconnect ke Supabase Storage, dns-prefetch ke CDN font, preload hero image, modulepreload chunk JS). Tidak ada migrasi framework, tidak ada perubahan arsitektur. Teknik ini paling cocok untuk platform yang sudah pakai Next.js dengan banyak third-party origin.

Saat memantau Search Console Atmo LMS bulan Maret 2026, saya melihat satu pola yang konsisten: halaman dashboard member mendapat skor LCP 3,2 detik di field data CrUX, padahal lab data Lighthouse menunjukkan 1,9 detik. Selisih 1,3 detik ini bukan anomali. Ini sinyal klasik bahwa browser pengguna asli kehilangan waktu di lapisan koneksi, bukan di render.

Dalam beberapa proyek terakhir yang saya tangani, gap antara lab dan field hampir selalu bisa ditipiskan tanpa menyentuh kode bisnis. Yang dipakai cukup empat baris HTML.

Kenapa LCP Atmo LMS Lambat di Real Device

Atmo LMS memuat resource dari empat origin berbeda saat halaman dashboard dibuka. Setiap origin baru memaksa browser menjalankan tiga tahap koneksi: DNS lookup, TCP handshake, lalu TLS negotiation. Pada koneksi 4G Indonesia rata-rata, tahap ini memakan 200 sampai 450 ms per origin. Lihat detail metriknya di Largest Contentful Paint.

Yang lebih merepotkan, browser baru memulai koneksi ke origin tersebut setelah HTML parser menemukan tag yang merujuk ke origin itu. Akibatnya, image hero baru di-fetch ketika parser sudah selesai membaca seperempat dokumen.

Empat Resource Hint yang Dipakai

Berikut hint yang ditambahkan ke <head> Atmo LMS:

HintTargetFungsi
preconnectSupabase Storage originMulai DNS+TCP+TLS lebih awal
dns-prefetchCDN font GoogleResolusi DNS dini
preloadHero image dashboardFetch image sebelum CSS parsing selesai
modulepreloadChunk JS dashboardParalel parse JS dan HTML

Catatan implementasi: preconnect lebih kuat daripada dns-prefetch karena menyelesaikan TLS, tapi gunakan hanya untuk origin yang pasti dipakai. Memasang preconnect ke origin yang tidak dipanggil justru memboroskan kuota koneksi browser. Dokumentasi resmi ada di web.dev resource hints guide.

Implementasi di Next.js 15 Atmo

Di App Router Next.js 15, resource hints dipasang via <link> tag di file app/layout.tsx. Format yang dipakai di Atmo:

html
<link rel="preconnect" href="https://ccypzcbkmfzxwbmdqkdb.supabase.co" />
<link rel="dns-prefetch" href="https://fonts.gstatic.com" />
<link rel="preload" as="image" href="/hero-dashboard.webp" fetchpriority="high" />
<link rel="modulepreload" href="/_next/static/chunks/dashboard.js" />

Pemasangannya butuh 14 menit, dideploy ke Vercel tanpa rollback, dan hasilnya sudah terbaca di CrUX 21 hari kemudian. Untuk teknik fetchpriority lebih dalam, lihat panduan pasang fetchpriority di image hero.

Hasil Terukur

Per 19 April 2026, data CrUX Atmo LMS menunjukkan:

  • LCP p75 turun dari 3,2 ke 1,4 detik
  • INP p75 turun dari 240 ke 180 ms (efek samping karena main thread lebih cepat idle)
  • Bounce rate dashboard turun dari 38 ke 29 persen
  • Repeat session per member naik dari 2,1 ke 3,4 per minggu

Angka ini spesifik untuk Atmo LMS dengan profil traffic mayoritas mobile Indonesia. Hasil di project lain bisa bervariasi tergantung jumlah origin third-party dan ukuran hero asset. Untuk konteks metrik turunan, baca tentang INP dan Field Data CrUX.

Pertanyaan Umum

Apa bedanya preconnect dan dns-prefetch?

Preconnect menyelesaikan DNS, TCP, dan TLS sekaligus. Dns-prefetch hanya menyelesaikan DNS. Preconnect lebih agresif, jadi pakai maksimal 3 sampai 4 origin yang pasti dipanggil.

Apakah resource hints bisa memperlambat halaman?

Bisa, kalau dipasang berlebihan. Setiap preconnect menahan kuota koneksi browser. Memasang 10 preconnect ke origin yang jarang dipakai bisa menunda fetch resource kritis.

Berapa lama dampak terlihat di CrUX?

CrUX memakai window 28 hari, jadi sinyal awal terlihat 7 sampai 10 hari setelah deploy, dan baseline baru stabil di hari ke-28.

Penutup

Resource hints bekerja paling baik di project dengan banyak origin third-party. Audit dulu origin mana saja yang dipanggil di halaman LCP-critical pakai DevTools Network panel, lalu prioritaskan empat yang paling sering. Sisanya cukup pakai dns-prefetch atau diabaikan.

Bagikan

Artikel Terkait

#atmo-lms#lcp#resource-hints#nextjs#core-web-vitals

Butuh website yang benar-benar bekerja?

Hubungi Vito untuk konsultasi gratis 15 menit.

WhatsApp Sekarang