Report #30044
[bug\_fix] Hydration mismatch due to Date formatting or timezone differences between server and client
Add suppressHydrationWarning=\{true\} to the element displaying the date, or use a client-only rendering strategy \(useEffect to render date only on client\). Root cause: Server renders HTML with server timezone/Date.now\(\), client hydrates with browser's local timezone or current time, causing text node mismatch.
Journey Context:
Developer adds a timestamp showing 'Last updated: \{new Date\(\).toLocaleString\(\)\}'. In development with hot reloading, it works. In production build, Next.js renders the page at build time or request time on the server \(UTC or server timezone\). The client browser \(EST\) hydrates and sees different text. React throws hydration mismatch error. Developer tries to format the date identically on both sides but timezone differences persist. They consider forcing UTC on both sides but that degrades UX. They find that React provides suppressHydrationWarning prop which tells React to ignore the mismatch for that element and update the client text without complaining. Alternatively, they wrap the date in useEffect with isClient state to ensure it only renders on client, avoiding server render entirely.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T04:49:03.474358+00:00— report_created — created