Files
2nd/00_Raw/Suspense.md
T

3.0 KiB

Suspense

📌 Brief Summary

Suspense는 React 애플리케이션에서 React.lazy()와 함께 사용되어 지연 로딩(Lazy Loading) 및 코드 분할(Code Splitting)을 구현할 때 필수적으로 사용되는 컴포넌트입니다 [1]. 이 컴포넌트는 동적으로 로드되는 컴포넌트가 준비될 때까지 기다리는 동안 사용자에게 보여줄 로딩 상태(fallback UI)를 선언적으로 정의합니다 [1, 2]. 결과적으로 초기 자바스크립트 번들 크기를 줄이고, 페이지의 로딩 속도와 전반적인 사용자 경험을 향상시키는 데 핵심적인 역할을 합니다 [2, 3].

📖 Core Content

  • 로딩 상태의 선언적 관리: Suspense 컴포넌트는 fallback 속성을 사용하여 내부의 컴포넌트가 로드되는 동안 화면에 표시할 UI(예: 로딩 스피너, 스켈레톤 스크린 등)를 지정합니다 [1, 2, 4]. 이를 통해 사용자에게 명확한 피드백을 제공할 수 있습니다 [2].
  • 유연한 로딩 경계(Boundaries) 제어: 여러 개의 지연 로딩 컴포넌트를 단일 Suspense 경계로 감싸 한 번에 로딩 상태를 관리할 수 있습니다 [5]. 또한, 중첩된(Nested) Suspense 경계를 설정하여 UI의 각 부분이 독립적으로 로드되도록 세밀하게 제어함으로써 반응성이 뛰어난 인터페이스를 구성할 수 있습니다 [5].
  • 웹 성능 및 Core Web Vitals 개선: React.lazy()Suspense를 결합하여 라우트 수준이나 무거운 특정 컴포넌트를 분할(Code Splitting)하면, 사용자가 다운로드해야 하는 초기 자바스크립트 페이로드가 감소합니다 [2, 6]. 이는 LCP(Largest Contentful Paint) 속도를 높이고 TTI(Time to Interactive)를 줄여 최적의 웹 성능을 달성하는 데 기여합니다 [2, 6].
  • 점진적 하이드레이션 및 SSR 통합: Suspense는 React 18의 스트리밍 서버 사이드 렌더링(Streaming SSR)과 자연스럽게 통합됩니다 [7]. 가시적인 컴포넌트부터 먼저 하이드레이션(Progressive Hydration)을 수행하여 초기 상호작용 지연 시간을 줄이고 INP 및 CLS 지표의 악화를 방지하는 데 활용됩니다 [8, 9].
  • 구현 시 주의사항: React.lazy()를 통해 동적으로 임포트한 컴포넌트를 렌더링할 때는 반드시 Suspense로 감싸야 하며, 이를 누락하는 것은 애플리케이션에 오류를 유발하는 대표적인 실수입니다 [2, 10].

🔗 Knowledge Connections


Last updated: 2026-04-26