Hydration 개요
TanStack Query
dehydrate/hydrate자동 상태 복원
전체 문서 Hydration
document 레벨완전한 SSR
Date 직렬화
dateReviver자동 변환
선택적 비활성화
disableHydrateCSR 전환
Sonamu Hydration 프로세스
1. 서버: Dehydration
서버에서 Query상태를 직렬화합니다.2. HTML에 데이터 주입
3. 클라이언트: Hydration
클라이언트에서 상태를 복원하고 React를 활성화합니다.Date 직렬화 처리
문제: Date 객체는 JSON.stringify로 문자열이 됨
해결: dateReviver
Sonamu는 자동으로 ISO 날짜 문자열을 Date 객체로 변환합니다.Hydration Mismatch 방지
문제: 서버와 클라이언트의 HTML이 다르면 에러
해결 1: useEffect 사용
해결 2: suppressHydrationWarning
의도적으로 서버/클라이언트가 다른 경우 사용합니다.disableHydrate 옵션
Hydration을 비활성화하고 CSR로 전환
- 실시간 데이터가 중요한 경우 (대시보드, 채팅 등)
- 서버/클라이언트 렌더링 결과가 의도적으로 다른 경우
- Hydration mismatch 해결이 어려운 경우
전체 문서 Hydration
Sonamu는 document 전체를 hydrate합니다 (div#root가 아님).- TanStack Router가
<html>,<head>태그까지 관리 <HeadContent />,<Scripts />컴포넌트가 head/body 수정- SEO 메타 태그를 동적으로 변경 가능
Suspense와 Hydration
서버에서 Suspense fallback을 렌더링하고 클라이언트에서 실제 컨텐츠를 로드할 수 있습니다.- SSR에서는 모든 데이터가 이미 로드되어 있음
- fallback이 보이지 않음
- Hydration mismatch 방지
QueryClient 설정
서버 설정
클라이언트 설정
staleTime을 동일하게 설정하는 것이 좋습니다.
