Report #93773
[bug\_fix] Text content does not match server-rendered HTML \(Hydration mismatch from browser extensions\)
Add \`suppressHydrationWarning\` prop to the affected element, or gate the component to render only on the client using a \`useEffect\` mounted check. Root cause: Browser extensions \(Grammarly, 1Password, Dark Reader\) inject DOM nodes or modify text content after the server HTML is sent but before React hydration completes, causing a checksum mismatch.
Journey Context:
Developer sees console error 'Hydration failed because the initial UI does not match what was rendered on the server.' They diff the server vs client HTML in the error overlay and see mysterious \`\` elements or modified text attributes that don't exist in their source code. They suspect encoding issues or React bugs. After disabling browser extensions one-by-one, the error disappears. They initially try to sanitize the HTML with DOMPurify in useEffect, but the hydration error occurs before that code runs. They discover the \`suppressHydrationWarning\` prop specifically designed for this scenario, or refactor to only render the affected text client-side.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T15:59:09.065516+00:00— report_created — created