--- id: FE-SSR-HYDRA-001 category: "10_Wiki/πŸ’‘ Topics/AI" confidence_score: 1.0 tags: [react, ssr, hydration, hydration-mismatch, debugging, frontend-performance, nextjs] last_reinforced: 2026-04-26 --- # Hydration Mismatch and SSR Debugging (μˆ˜ν™” 뢈일치 및 SSR 디버깅) ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > "μ„œλ²„κ°€ κ΅¬μ›Œλ‚Έ HTMLκ³Ό ν΄λΌμ΄μ–ΈνŠΈκ°€ λ Œλ”λ§ν•œ 초기 결과물이 1λΉ„νŠΈλΌλ„ λ‹€λ₯Ό λ•Œ λ°œμƒν•˜λŠ” κ²½κ³ λ₯Ό λ¬΄μ‹œν•˜μ§€ 말고, 정적 일관성을 ν™•λ³΄ν•˜μ—¬ λΆˆν•„μš”ν•œ 전체 λ¦¬λ Œλ”λ§μ˜ λŠͺμ—μ„œ νƒˆμΆœν•˜λΌ" β€” SSR ν™˜κ²½μ—μ„œ μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈ κ°„μ˜ λ Œλ”λ§ 트리 정합성을 μœ μ§€ν•˜κΈ° μœ„ν•œ 기술적 κ°€μ΄λ“œ. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) - **μΆ”μΆœλœ νŒ¨ν„΄:** "Pre-rendering Consistency and Client-only Escape" β€” μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈμ˜ λ Œλ”λ§ κ²°κ³Όκ°€ μΌμΉ˜ν•΄μ•Ό ν•œλ‹€λŠ” SSR의 λŒ€μ „μ œλ₯Ό μ€€μˆ˜ν•˜λ˜, λΈŒλΌμš°μ € μ „μš© 데이터(window, localStorage)κ°€ ν•„μš”ν•œ 경우 'useEffect' μ΄ν›„λ‘œ λ Œλ”λ§μ„ μ§€μ—°μ‹œν‚€λŠ” νŒ¨ν„΄. - **μˆ˜ν™” 뢈일치(Hydration Mismatch)의 μ£Όμš” 원인:** - **Browser-only APIs:** μ„œλ²„μ—λŠ” μ—†λŠ” `window`, `document` 객체λ₯Ό 초기 λ Œλ”λ§ μ‹œμ μ— 직접 μ°Έμ‘°. - **Non-deterministic Data:** `Math.random()`μ΄λ‚˜ `new Date()` λ“± μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ 값이 λ‹¬λΌμ§€λŠ” 둜직 μ‚¬μš©. - **Invalid HTML Structure:** `p` νƒœκ·Έ μ•ˆμ— `div`λ₯Ό λ„£λŠ” λ“± λΈŒλΌμš°μ €κ°€ κ°•μ œλ‘œ μˆ˜μ •ν•˜λŠ” 비정상적인 HTML ꡬ쑰. - **ν•΄κ²° 및 디버깅 μ „λž΅:** - **Isomorphic Consistency:** 곡톡 μƒμˆ˜λ‚˜ ν™˜κ²½ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ–‘μͺ½ ν™˜κ²½μ˜ 초기 값을 μΌμΉ˜μ‹œν‚΄. - **Two-pass Rendering:** `isMounted` μƒνƒœ 등을 ν™œμš©ν•˜μ—¬ μ„œλ²„ λ Œλ”λ§ μ‹œμ—λŠ” 곡톡 UIλ₯Ό, ν΄λΌμ΄μ–ΈνŠΈ 마운트 이후에 λΈŒλΌμš°μ € μ „μš© UIλ₯Ό λ Œλ”λ§. - **Suppression Tag:** 극히 μ œν•œμ μΈ μƒν™©μ—μ„œλ§Œ `suppressHydrationWarning` 속성 μ‚¬μš©. - **의의:** λΆˆν•„μš”ν•œ UI 흔듀림(Flicker)을 λ°©μ§€ν•˜κ³ , λΈŒλΌμš°μ €μ˜ λ Œλ”λ§ μ„±λŠ₯ μ΅œμ ν™”(Hydration νš¨μœ¨μ„±)λ₯Ό 보μž₯함. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** κ³Όκ±°μ—λŠ” μˆ˜ν™” 뢈일치 κ²½κ³ λ₯Ό μ‚¬μ†Œν•œ κ²½κ³  μ •μ±…μœΌλ‘œ λ³΄μ•˜μœΌλ‚˜, ν˜„λŒ€ React 정책은 이λ₯Ό μ„±λŠ₯ μ €ν•˜μ™€ λ²„κ·Έμ˜ μ „μ‘°λ‘œ κ°„μ£Όν•˜μ—¬ μ—„κ²©νžˆ 관리할 것을 μš”κ΅¬ν•¨. 특히 Next.js 15+ ν™˜κ²½μ—μ„œλŠ” λΉŒλ“œ νƒ€μž„μ— 이λ₯Ό 더 곡격적으둜 κ²€μΆœ 정책화함. - **μ •μ±… λ³€ν™”:** Antigravity ν”„λ‘œμ νŠΈλŠ” λͺ¨λ“  SSR μ»΄ν¬λ„ŒνŠΈμ— λŒ€ν•΄ 'Zero Hydration Warning' 정책을 μ‹œν–‰ν•˜λ©°, λΈŒλΌμš°μ € μ „μš© λ‘œμ§μ€ λ°˜λ“œμ‹œ μ „μš© μ»€μŠ€ν…€ ν›…(`useIsMounted`)을 ν†΅ν•΄μ„œλ§Œ μ²˜λ¦¬ν•˜λ„λ‘ κ°•μ œν•¨. ## πŸ”— 지식 μ—°κ²° (Graph) - [[Web-Rendering-Strategies-CSR-vs-SSR]], Server-Side-Rendering-SSR, [[Nextjs-App-Router-Architecture]], [[Frontend-Debugging-and-Testing]] - **Raw Source:** 00_Raw/Hydration Mismatch.md