# [[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 - **Related Topics:** [[Code Splitting]], [[Lazy Loading]], [[React.lazy()]], [[Core Web Vitals]], [[Progressive Hydration]] - **Projects/Contexts:** [[ν”„λ‘ νŠΈμ—”λ“œ μ›Ή μ„±λŠ₯ μ΅œμ ν™”(Frontend Performance Optimization)]], [[React Router 기반 λΌμš°νŒ… 및 SSR ꡬ좕]] - **Contradictions/Notes:** μ†ŒμŠ€ κ°„μ˜ λͺ¨μˆœμ μ€ λ°œκ²¬λ˜μ§€ μ•Šμ•˜μœΌλ©°, 제곡된 λͺ¨λ“  μ†ŒμŠ€μ—μ„œ React μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ²ˆλ“€ μ‚¬μ΄μ¦ˆ μ΅œμ ν™” 및 λ‘œλ”© UI μ²˜λ¦¬μ— `Suspense`κ°€ ν•„μˆ˜μ μΈ 도ꡬ라고 μΌκ΄€λ˜κ²Œ μ„€λͺ…ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. --- *Last updated: 2026-04-26*