Here are the main hydration error tools compared. Use React's console or the Next.js overlay while working on a page. Use lint rules to catch risky code before it runs. Use hydration-proof to check routes in CI, and Sentry to see errors from real users.
Hydration error tools compared
| Tool | Best for | Main limit |
|---|---|---|
| React browser console | Debugging the page you have open | Reports only what React logs |
| Next.js dev overlay | Finding a mismatch while coding | Development only |
@builder.io/react-hydration-overlay | Seeing a server/client diff | The open page, not a route-wide CI check |
| Sentry Session Replay | Investigating real user sessions | Reports after a user encounters the error |
eslint-plugin-react-hooks | Catching impure render code | Cannot see runtime HTML |
eslint-plugin-validate-jsx-nesting | Catching invalid JSX nesting | Cannot see markup across components |
eslint-plugin-hydration-proof | Catching hydration patterns in code | Cannot see changes outside your source |
| hydration-proof | Checking routes in a browser or CI | Needs a running app or build |
Runtime tools show what happened on a page. Linters inspect source code before it runs, so they cannot detect a CDN rewrite, browser extension, or changed server response.
When to choose each
The browser console and the Next.js dev overlay
Use the console and overlay while developing a page. React can name the component and show a diff, but these tools cover only the page you open. See hydration-proof vs the Next.js dev overlay.
react-hydration-overlay
@builder.io/react-hydration-overlay adds a visual diff when an error happens
on the open page. It requires an app wrapper and plugin. See
hydration-proof vs react-hydration-overlay
for setup and limitations.
Sentry
Sentry Session Replay helps investigate an error a real user encountered. Its hydration diff compares the page before and after React hydrated. See hydration-proof vs Sentry.
ESLint rules
Lint rules run in your editor and CI before the page loads:
- The
purityrule ofeslint-plugin-react-hooksis part of its recommended preset, whicheslint-config-nextincludes. It flags impure calls such asDate.now()andMath.random()in components and hooks. See hydration-proof vs eslint-plugin-react-hooks. eslint-plugin-validate-jsx-nesting(version 0.1.1) reports invalid HTML nesting in JSX. See hydration-proof vs eslint-plugin-validate-jsx-nesting.eslint-plugin-hydration-proofhas 15 rules aimed at hydration: browser globals, storage,matchMedia, locale and timezone formatting, generated ids and more.
hydration-proof
Use hydration-proof to check routes in a browser, including a production build. It runs in CI and reports the changed element, both values, and a likely cause. Start with the quick start, then add it to CI.
How the tools fit together
You can use them together:
- Lint rules in the editor, so the common mistakes never get written.
- The console or the dev overlay while you build a page.
- hydration-proof in CI, for every route and the production build.
- Sentry in production, for what only real users' browsers show.
Sources
Claims about other tools, as of September 2026:
- Next.js 16.2 release notes, "Hydration Diff Indicator": https://nextjs.org/blog/next-16-2
- Next.js, "Text content does not match server-rendered HTML": https://nextjs.org/docs/messages/react-hydration-error
- Next.js ESLint plugin (
eslint-config-nextincludes theeslint-plugin-react-hooksrecommended rules): https://nextjs.org/docs/app/api-reference/config/eslint @builder.io/react-hydration-overlayREADME: https://github.com/BuilderIO/hydration-overlay- Sentry changelog, "Diff hydration errors with Replay" (SDK 7.90.0 or later): https://sentry.io/changelog/2024-1-5-diff-hydration-errors-with-replay
- Sentry changelog, hydration error diff generally available: https://sentry.io/changelog/debug-hydration-errors-with-our-diff-tool---now-generally-available
- React,
puritylint: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity - React,
eslint-plugin-react-hookspresets: https://react.dev/reference/eslint-plugin-react-hooks eslint-plugin-validate-jsx-nesting: https://github.com/MananTank/eslint-plugin-validate-jsx-nesting