Semua ArtikelPerformance & Optimization
11 Februari 2025·11 menit baca

Web Performance: Dari Skor 40 ke 100 di Lighthouse

Performa web bukan sekadar angka di Lighthouse. Ini tentang pengalaman pengguna nyata — seberapa cepat halaman terasa responsif dan siap digunakan.

Metrik Core Web Vitals yang Penting

Google menggunakan Core Web Vitals sebagai faktor ranking. Tiga metrik utama: LCP (Largest Contentful Paint) target < 2.5s, FID (First Input Delay) target < 100ms, dan CLS (Cumulative Layout Shift) target < 0.1.

1. Image Optimization

Gambar yang tidak dioptimasi adalah penyebab paling umum skor Lighthouse rendah. Selalu gunakan next/image dengan konfigurasi yang tepat.

tsx·Next.js Image Component
import Image from "next/image";

export function Hero() {
  return (
    <Image
      src="/hero.jpg"
      alt="Hero image"
      width={1200}
      height={630}
      priority           // LCP image: load segera
      placeholder="blur" // Blur placeholder saat loading
      sizes="(max-width: 768px) 100vw, 1200px"
    />
  );
}

2. Code Splitting & Dynamic Import

Jangan kirim JavaScript yang tidak dibutuhkan saat halaman pertama load. Gunakan dynamic import untuk komponen berat seperti chart library, rich text editor, dll.

tsx·Dynamic Import
import dynamic from "next/dynamic";

const ChartComponent = dynamic(
  () => import("./HeavyChart"),
  {
    loading: () => <div className="animate-pulse h-64 bg-gray-100 rounded" />,
    ssr: false,
  }
);

3. Font Loading yang Optimal

tsx·Next.js Font Optimization
// app/layout.tsx
import { Inter } from "next/font/google";

const inter = Inter({
  subsets: ["latin"],
  variable: "--font-inter",
  display: "swap",
});

export default function RootLayout({ children }) {
  return (
    <html className={inter.variable}>
      <body>{children}</body>
    </html>
  );
}
📊 Ukur sebelum optimize! Selalu gunakan Chrome DevTools Performance tab dan Lighthouse sebelum dan sesudah perubahan. Optimasi tanpa pengukuran adalah tebak-tebakan.