16 · Performance
Fase: 6 · Estimasi: 3–4 minggu · Prasyarat: 03 CSS, 04 JavaScript, 09 Build Tools
Kenapa ini penting
Performa langsung memengaruhi konversi, SEO (Core Web Vitals), dan pengalaman user di perangkat murah. Ini juga area di mana pemahaman mendalam paling terlihat: optimasi tanpa pengukuran hanyalah tebakan.
Peta konsep
Dasar
- Performance metrics: LCP, INP, CLS (Core Web Vitals), TTFB, FCP
- Lighthouse dan cara membaca laporannya
- DevTools: Network dan Performance panel
- Optimasi gambar, font, dan lazy loading
Menengah
- Model RAIL dan pola PRPL
- Critical rendering path, render-blocking resources
- Lab data vs field data (CrUX, RUM dengan library
web-vitals) - Code splitting, preload, prefetch
- Long tasks dan cara memecahnya (
scheduler.yield) - Virtualisasi list
Deep dive
- Rendering pipeline: style → layout → paint → composite; layer dan GPU
- Layout thrashing (forced synchronous layout)
- Cara INP diukur: input delay, processing time, presentation delay
- Memory profiling
- Performance budget di CI
Cara belajar
- Rekam satu interaksi lambat di Performance panel, lalu identifikasi long task dan penyebabnya.
- Pasang library
web-vitalsdi project nyata dan kirim datanya ke endpoint sendiri selama satu minggu. - Buat layout thrashing dengan sengaja (baca
offsetHeightlalu tulisstyledi loop), ukur, lalu perbaiki. - Throttle CPU 6x + Slow 4G di DevTools dan gunakan aplikasimu selama 10 menit.
Uji pemahaman
- Kenapa skor Lighthouse 100 tidak menjamin Core Web Vitals lolos di lapangan?
- Apa saja komponen LCP (TTFB, resource load delay, load time, render delay) dan cara mengoptimasi masing-masing?
- Kenapa animasi
transformlebih murah darileft? - Bagaimana
font-displaydansize-adjustmemengaruhi CLS? - Kenapa
React.memodi semua komponen bisa memperlambat aplikasi?
Proyek latihan
| Tingkat | Proyek | Yang dilatih |
|---|---|---|
| Dasar | Bawa satu halaman ke "Good" untuk semua Core Web Vitals | Metrik |
| Menengah | Dashboard RUM sederhana dari data web-vitals | Field data |
| Deep | Komponen virtualized list dari nol (tinggi dinamis) | Rendering, scroll |
Sumber primer
- web.dev: Web Vitals dan Optimize LCP/INP/CLS
- Chrome DevTools: Performance
- HTML spec: update the rendering
Toolkit terkait
@chalidade/utils:debounce,throttle@chalidade/react-hooks:useIntersectionObserver,useThrottledCallback- (rencana)
useVirtualListdi@chalidade/react-hooks - Deep dive: Efisiensi di React
- Deep dive: Browser Rendering Pipeline
- Deep dive: HTTP Caching