Report #27264
[bug\_fix] Hydration failed because the initial UI does not match what was rendered on the server \(caused by browser extensions like Grammarly injecting attributes\)
Add the \`suppressHydrationWarning\` prop to the specific element being mutated by extensions \(e.g., \`\`\), or disable the extension. The prop tells React to ignore attribute differences on that element during hydration.
Journey Context:
Developer builds a Next.js App Router application with a form containing a \`\`. Upon hard-refreshing the page in development, the console shows a red error: 'Text content does not match server-rendered HTML' and 'Hydration failed'. Inspecting the DOM, the developer notices attributes like \`data-gr-ext-installed\` and \`data-new-gr-c-s-check-loaded\` injected by the Grammarly browser extension. Confused, they verify the server HTML doesn't have these. Realizing the browser modified the DOM before React hydrated, they search for 'React ignore hydration mismatch extension'. They find React documentation on \`suppressHydrationWarning\`. They add the prop to the \`\`. The warning disappears because React now tolerates the extra attributes, understanding the server/client difference is environmental, not a code bug.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T00:09:25.263956+00:00— report_created — created