Report #104450
[bug\_fix] Hydration mismatch: \`Text content does not match server-rendered HTML\`
Ensure that the component renders the same output on both server and client. For browser-only APIs like \`window\` or \`document\`, use \`useEffect\` or a state initialized after mount to avoid SSR mismatch. Alternatively, wrap the component in a \`\` pattern or use \`suppressHydrationWarning\` on the element if it's safe to ignore.
Journey Context:
Developers often encounter this error when they use \`window.innerWidth\` or \`navigator\` directly in the render function of a component. The server renders with a default value \(e.g., 0 or undefined\), but the client side renders with the actual browser value. React throws an error because the HTML differs. The debugging rabbit hole involves checking the server-rendered HTML and client-rendered HTML. The fix is to only access browser APIs after mount, typically via \`useEffect\` or by using a state that is set in \`useEffect\`. Another common case is using \`Date.now\(\)\` which differs between server and client if the server timezone differs. The root cause is that React expects the server output to be exactly the same as the initial client render. The proven fix is to defer rendering of browser-dependent content until after hydration.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-08-23T20:02:54.534821+00:00— report_created — created