Next.js에서 SSR/CSR timezone 불일치가 만든 Hydration 예외, Cookie로 timezone 동기화해서 해결하기
·
웹 프론트엔드
이 글은 React 19, Next.js 16, App Router를 기준으로 설명합니다.글에서 설명하는 코드 예시는 설명을 위해서 간단하게 작성했습니다.문제 상황글로벌 서비스를 개발하면서 서버에서 날짜를 어떻게 내려줄지 고민했습니다. Java의 LocalDateTime은 타임존 정보를 포함하지 않아, 서버의 실행 환경(OS 타임존 설정 등)에 따라 같은 값이 서로 다른 시점을 의미하게 될 위험이 있습니다. 반면 Instant는 UTC 기준의 절대 시각을 나타내기 때문에 어느 환경에서든 동일한 시각을 보장합니다. 글로벌 사용자를 대상으로 하는 서비스라면 서버는 Instant로 내려주고, 브라우저에서 사용자의 timezone에 맞게 포맷하는 것이 자연스러운 선택이었습니다. 구현은 단순해 보였습니다. 서버에..