๐Ÿ“š hydration mismatch ๋Œ€์‘ ์ •๋ฆฌ - codesquad-masters2025-team01/issue-tracker GitHub Wiki

๐Ÿค” ๊ณ ๋ฏผ ์ƒํ™ฉ

  • Next.js App Router์—์„œ layout.tsx์— "use client"๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์Œ์—๋„ hydration mismatch ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•จ.
// src/app/layout.tsx
export default function RootLayout({ children }) {
  return (
    <html lang="ko">
      <body>
        <ClientProviders>{children}</ClientProviders>
      </body>
    </html>
  );
}

๐Ÿ“Œ ๋ฌธ์ œ ์›์ธ ๋ถ„์„

์—๋Ÿฌ๋ฉ”์„ธ์ง€

Error: A tree hydrated but some attributes of the server rendered HTML didn't match the client properties...
  <body
    cz-shortcut-listen="true"
    style={{}}
  >
  • ColorZilla ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์ด <body> ํƒœ๊ทธ์— cz-shortcut-listen="true" ์†์„ฑ์„ ๋™์ ์œผ๋กœ ์ถ”๊ฐ€
  • React DevOverlay ๋˜๋Š” Emotion์ด ํด๋ผ์ด์–ธํŠธ์—์„œ ๋นˆ style={{}}์„ ์‚ฝ์ž…
  • ์ด๋กœ ์ธํ•ด ์„œ๋ฒ„์—์„œ ๋ Œ๋”๋ง๋œ HTML๊ณผ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ณ„์‚ฐํ•œ DOM์ด ์ผ์น˜ํ•˜์ง€ ์•Š์•„ hydration mismatch ๊ฒฝ๊ณ  ๋ฐœ์ƒ

๐Ÿ“ฆ ์—๋Ÿฌ ํ•ด๊ฒฐ๊ณผ ๊ด€๋ จ๋œ ์œ ์šฉํ•œ ๊ฐœ๋…

  • Hydration: SSR๋กœ ์ƒ์„ฑ๋œ HTML์„ React๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—์„œ React ํŠธ๋ฆฌ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •
  • SSR vs CSR: ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ๋Š” Node.js์—์„œ ์ˆœ์ˆ˜ HTML์„, ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ JS ๋ Œ๋”๋ง
  • Dynamic ์†์„ฑ: ๋ธŒ๋ผ์šฐ์ € ํ™•์žฅ์ด๋‚˜ DevOverlay๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—์„œ๋งŒ ์‚ฝ์ž…ํ•˜๋Š” ์†์„ฑ
  • suppressHydrationWarning: React์—์„œ ํŠน์ • ์š”์†Œ์˜ ์„œ๋ฒ„/ํด๋ผ์ด์–ธํŠธ DOM ์ฐจ์ด๋ฅผ ๋ฌด์‹œํ•˜๋„๋ก ํ•˜๋Š” ์†์„ฑ

โœ… ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

  1. ColorZilla ํ™•์žฅ ๊ธฐ๋Šฅ ์‚ฌ์šฉ ์ค‘์ง€
  • ๋ธŒ๋ผ์šฐ์ € ํ™•์žฅ ๊ด€๋ฆฌ์ž์—์„œ ColorZilla๋ฅผ ๋น„ํ™œ์„ฑํ™”
  • ํŽ˜์ด์ง€ ์ƒˆ๋กœ๊ณ ์นจ ํ›„ <body>์— ๋” ์ด์ƒ cz-shortcut-listen="true" ์†์„ฑ์ด ๋ถ™์ง€ ์•Š๋Š”์ง€ ํ™•์ธ
  • hydration mismatch ๊ฒฝ๊ณ ๊ฐ€ ์‚ฌ๋ผ์กŒ๋‹ค๋ฉด ํ•ด๊ฒฐ ์™„๋ฃŒ

  1. <body suppressHydrationWarning> ์†์„ฑ ์ถ”๊ฐ€
// src/app/layout.tsx
export default function RootLayout({ children }) {
  return (
    <html lang="ko">
      <body suppressHydrationWarning>
        <ClientProviders>{children}</ClientProviders>
      </body>
    </html>
  );
}
  • React๊ฐ€ <body>์˜ ์„œ๋ฒ„/ํด๋ผ์ด์–ธํŠธ ์†์„ฑ ์ฐจ์ด๋ฅผ ๋ฌด์‹œํ•˜์—ฌ hydration mismatch ๊ฒฝ๊ณ  ์ œ๊ฑฐ

โš ๏ธ **GitHub.com Fallback** โš ๏ธ