하이드레이션(Hydration)이란 서버에서 미리 렌더링(SSR)된 정적인 HTML에 React가 이벤트 핸들러와 상태 관리 로직을 연결하는 과정입니다.
서버 컴포넌트나 SSR을 통해 클라이언트로 전송된 HTML은 단순한 문자열로, 사용자의 상호작용(클릭, 입력)에 반응하지 않습니다.
이런 HTML에 React의 클라이언트 사이드 렌더링 로직을 결합하는 것이 바로 Hydration입니다.

Hydration 과정 상세
page.tsx가 서버 컴포넌트와 클라이언트 컴포넌트를 혼합해 만든 HTML을 서버에서 생성합니다.useState, useEffect)이나 이벤트 핸들러(onClick, onChange) 같은 로직을 포함하고 있습니다.<button onClick={...}>와 같이 정의된 클라이언트 컴포넌트의 버튼은 이제 클릭 시 실제로 이벤트가 발생하고, 상태가 변하며, UI 갱신이 일어납니다.
div 안에 "Hello"라는 텍스트를 렌더링했는데, 클라이언트 초기 상태에서는 "Hi"라고 렌더링한다면, Hydration시, "일관성이 없다"며 경고 메시지를 띄울 수 있습니다.🤾 이 문제를 피하려면, 서버와 클라이언트가 동일한 초기 상태를 가질 수 있도록 해야 합니다.
예를 들어,
SSR로 페이지를 구성할 때 사용한 데이터와 클라이언트 측 초기 상태 데이터가 동일하도록 설정하거나, 렌더링 시점에 따라 시계가 바뀌는 데이터(Date.now()) 같은 것을 유의해서 사용해야 합니다.
잘 활용하는 방법:
SEO가 중요한 부분은 서버 컴포넌트로 렌더링해서 초기 표시를 빠르게 하고, JS번들을 줄여 Hydration부담도 줄입니다.