Dzieje się, gdy HTML z SSR różni się od pierwszego renderu w przeglądarce (np. `Math.random()`, `Date.now()`, warunki na `window`, formatowanie locale). Naprawiasz przez deterministyczny pierwszy render albo przeniesienie wartości client-only do `useEffect`/Client Components.
Odpowiedź zaawansowana
Głębiej
Hydration to moment, gdy React „podczepia” event listenery i porównuje HTML z SSR z pierwszym renderem w przeglądarce. Mismatch pojawia się, gdy HTML z serwera nie zgadza się z tym, co klient renderuje na start.
Najczęstsze przyczyny
Niedeterministyczne wartości w renderze: `Math.random()`, `Date.now()`, `crypto.randomUUID()`.
Gałęzie zależne od przeglądarki: `typeof window !== 'undefined'` w trakcie renderu.