id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, verification_status, tags, raw_sources, last_reinforced, github_commit, tech_stack
id
title
category
status
canonical_id
aliases
duplicate_of
source_trust_level
confidence_score
verification_status
tags
raw_sources
last_reinforced
github_commit
tech_stack
wiki-2026-0508-lazy-loading-strategies
Lazy Loading Strategies
10_Wiki/Topics
verified
self
Lazy Load
Deferred Loading
On-Demand Loading
none
A
0.9
applied
frontend
performance
web
react
intersection-observer
2026-05-10
pending
language
framework
typescript
react
Lazy Loading Strategies
매 한 줄
"매 필요한 순간에만 로드" . 초기 bundle/네트워크 비용을 줄여 LCP, TTI 개선. Image, route, component, data 모두 적용 가능.
매 핵심
매 4가지 layer
Image lazy loading : loading="lazy", IntersectionObserver, blur placeholder.
Code splitting : dynamic import(), route-based, component-based.
Data lazy loading : virtual scroll, infinite scroll, pagination.
Resource hints : prefetch, preload, priority hints.
매 트리거
viewport 진입 (IntersectionObserver).
user interaction (click, hover).
idle (requestIdleCallback).
route navigation.
매 측정
LCP : Largest Contentful Paint < 2.5s.
CLS : lazy image 로 인한 layout shift 방지 (width/height 명시).
JS bundle size : route 별 < 200KB gzip 권장.
💻 패턴
Native image lazy
IntersectionObserver (커스텀)
React.lazy + Suspense (route)
Dynamic import on interaction
Virtual scrolling (TanStack Virtual)
React Query infinite scroll
Idle-time prefetch
Next.js dynamic
매 결정 기준
자원
전략
Above-the-fold image
eager + preload
Below-the-fold image
loading="lazy"
큰 third-party (chart, map)
dynamic import on demand
Route component
route-based code split
1만+ list rows
virtual scroll
다음에 갈 가능성 큰 route
idle prefetch
기본값 : native loading="lazy" for img, React.lazy for routes, virtual scroll > 200 rows.
🔗 Graph
🤖 LLM 활용
언제 : 페이지에 heavy component 가 conditional 로 필요, 큰 list, 이미지 많은 페이지.
언제 X : above-the-fold critical content, SEO-critical content (SSR 으로 처리).
❌ 안티패턴
모든 것을 lazy : critical hero image 까지 lazy → LCP 악화.
width/height 누락 : lazy image 로딩 후 layout shift (CLS↑).
Suspense fallback 부재 : blank flash.
Interaction-block lazy : 클릭하면 1초 fetch → ux 나쁨, idle prefetch 병행.
Spinner 남발 : skeleton/blur placeholder 가 체감 좋음.
🧪 검증 / 중복
web.dev "Lazy loading", MDN IntersectionObserver, React docs (lazy/Suspense).
TanStack Virtual, Next.js dynamic 공식 문서.
신뢰도 A.
🕓 Changelog
날짜
변경
2026-05-08
Phase 1
2026-05-10
Manual cleanup — image/route/data 4 layer, IntersectionObserver/React.lazy/virtual 패턴