# [[Hydration Mismatch]] ## ๐Ÿ“Œ Brief Summary Hydration Mismatch๋Š” ์„œ๋ฒ„์—์„œ ๋ Œ๋”๋ง๋œ HTML ์ฝ˜ํ…์ธ ์™€ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ๊ธฐ๋Œ€ํ•˜๊ฑฐ๋‚˜ ์ƒ์„ฑํ•˜๋Š” ์ฝ˜ํ…์ธ ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅผ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜ ํ˜„์ƒ์ž…๋‹ˆ๋‹ค [1, 2]. ํŠนํžˆ React ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ(RSC) ํ™˜๊ฒฝ์ด๋‚˜ CSS-in-JS(์˜ˆ: styled-components)๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์— ๋‹ค๋ฅธ ๋™์  ๋ฐ์ดํ„ฐ๋‚˜ CSS ํด๋ž˜์Šค ์ด๋ฆ„์ด ์ƒ์„ฑ๋  ๊ฒฝ์šฐ ํ”ํ•˜๊ฒŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค [2, 3]. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฒฝ๊ณ„์—์„œ ์ผ๊ด€๋œ ๋ Œ๋”๋ง ๊ฒฐ๊ณผ๋ฌผ๊ณผ ์•ˆ์ •์ ์ธ ํ•ด์‹œ ๊ฐ’์„ ์ƒ์„ฑํ•˜๋„๋ก ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [3, 4]. ## ๐Ÿ“– Core Content - **Hydration์˜ ์›๋ฆฌ ๋ฐ Mismatch ๋ฐœ์ƒ ์กฐ๊ฑด** React์—์„œ Hydration์€ ์„œ๋ฒ„์—์„œ ๋ Œ๋”๋ง๋˜์–ด ์ „๋‹ฌ๋œ ์ •์  HTML์— ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ์™€ ์ƒํƒœ(State)๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ์ƒํ˜ธ์ž‘์šฉ ๊ฐ€๋Šฅํ•œ UI๋กœ ๋งŒ๋“œ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค [1]. Next.js 15์˜ App Router์™€ ๊ฐ™์€ ๊ตฌ์กฐ์—์„œ๋Š” ์ด ๊ณผ์ •์ด ์ฃผ๋กœ ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ(Client Components)์—์„œ๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค [1]. Hydration Mismatch๋Š” ์„œ๋ฒ„๊ฐ€ ์ƒ์„ฑํ•œ ์ฝ˜ํ…์ธ ์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ Œ๋”๋ง ์‹œ ๊ธฐ๋Œ€ํ•˜๋Š” ์ฝ˜ํ…์ธ ๊ฐ€ ๋‹ค๋ฅผ ๋•Œ ๋‚˜ํƒ€๋‚˜๋ฉฐ, ํƒ€์ž„์Šคํƒฌํ”„์™€ ๊ฐ™์ด ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ฐ๊ธฐ ๋‹ค๋ฅด๊ฒŒ ๊ณ„์‚ฐ๋˜๋Š” ๋™์  ๋ฐ์ดํ„ฐ๊ฐ€ ๋Œ€ํ‘œ์ ์ธ ์›์ธ์ž…๋‹ˆ๋‹ค [2]. - **CSS-in-JS(Styled Components) ํ™˜๊ฒฝ์—์„œ์˜ ์œ„ํ—˜์„ฑ** Next.js App Router์—์„œ Styled Components๊ฐ€ ์ž‘๋™ํ•˜๋„๋ก Style Registry ํŒจํ„ด์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ CSS ํด๋ž˜์Šค ์ด๋ฆ„์„ ์ƒ์„ฑํ•˜๋ฉด Hydration Mismatch๊ฐ€ ๋ฐœ์ƒํ•  ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค [3]. ๋˜ํ•œ, ๋‹คํฌ ๋ชจ๋“œ์™€ ๋ผ์ดํŠธ ๋ชจ๋“œ ๊ฐ„์— ํ…Œ๋งˆ๋ฅผ ์ „ํ™˜ํ•  ๋•Œ ์•ˆ์ •์ ์ธ ํด๋ž˜์Šค ์ด๋ฆ„ ํ•ด์‹œ(hash)๊ฐ€ ์œ ์ง€๋˜์ง€ ์•Š์œผ๋ฉด ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [4]. - **ํ•ด๊ฒฐ ๋ฐ ์™„ํ™” ์ „๋žต** - **๋™์  ๋ฐ์ดํ„ฐ ๋ Œ๋”๋ง ์ฒ˜๋ฆฌ:** ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์—์„œ ๊ฐ’์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋Š” ๋™์  ์š”์†Œ๋Š”, ํด๋ผ์ด์–ธํŠธ์—์„œ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋งˆ์šดํŠธ๋œ ์ดํ›„์— ๋ Œ๋”๋ง๋˜๋„๋ก ์ฒ˜๋ฆฌํ•˜์—ฌ ๋ถˆ์ผ์น˜๋ฅผ ํ”ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [2]. - **์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜ ํ™œ์šฉ:** Styled Components๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ `next.config.js`์—์„œ `styledComponents` ์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜์„ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฒฝ๊ณ„์—์„œ ์ผ๊ด€๋œ CSS ํด๋ž˜์Šค ์ด๋ฆ„ ์ƒ์„ฑ์„ ๋ณด์žฅํ•˜์—ฌ Hydration Mismatch๋ฅผ ์™„ํ™”ํ•ฉ๋‹ˆ๋‹ค [3]. - **์•ˆ์ •์ ์ธ ํ…Œ๋งˆ ๊ฐ์ฒด ์ „๋‹ฌ:** ํ…Œ๋งˆ ์ „ํ™˜ ์‹œ Hydration Mismatch๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด, `createTheme` ๋“ฑ์„ ํ™œ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋œ ํ…Œ๋งˆ ๊ฐ์ฒด๋ฅผ `ThemeProvider`์— ์ œ๋Œ€๋กœ ์ „๋‹ฌํ•จ์œผ๋กœ์จ ํ…Œ๋งˆ ๊ฐ„ ์ „ํ™˜์—๋„ ํด๋ž˜์Šค ์ด๋ฆ„ ํ•ด์‹œ๊ฐ€ ์•ˆ์ •์ ์œผ๋กœ ์œ ์ง€๋˜๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [4, 5]. ## ๐Ÿ”— Knowledge Connections - **Related Topics:** [[React Server Components (RSC)]], [[Styled Components]], [[Next.js App Router]], [[CSS-in-JS]] - **Projects/Contexts:** [[Next.js 15 ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํด๋ผ์ด์–ธํŠธ ๋ฐ ์„œ๋ฒ„ ๋ Œ๋”๋ง ๊ตฌ์„ฑ]], [[Styled Components์˜ ๊ธ€๋กœ๋ฒŒ ์Šคํƒ€์ผ ๋ฐ ํ…Œ๋งˆ ๊ตฌํ˜„]] - **Contradictions/Notes:** ์†Œ์Šค ๊ฐ„์˜ ๋ชจ์ˆœ์ ์€ ์—†์œผ๋ฉฐ, ๋™์  ๋ Œ๋”๋ง์ด๋‚˜ ๋Ÿฐํƒ€์ž„ CSS ์ƒ์„ฑ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ์„œ๋ฒ„-ํด๋ผ์ด์–ธํŠธ ๋ถˆ์ผ์น˜๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ปดํŒŒ์ผ๋Ÿฌ ๋‹จ์˜ ์„ค์ •(์˜ˆ: `styledComponents` ํ™œ์„ฑํ™”)์ด๋‚˜ ์ •์ ์ด๊ณ  ์•ˆ์ •์ ์ธ ํด๋ž˜์Šค ๋„ค์ž„ ์‚ฌ์šฉ์ด ๊ณตํ†ต์ ์ธ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ ์ œ์‹œ๋ฉ๋‹ˆ๋‹ค [2, 3]. --- *Last updated: 2026-04-26*