Hydration failed: текст на сервере и клиенте не совпал. Из-за чего ловите чаще всего?
Рейтинг: 31.7% · 19 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
✔ Лучший ответ сформирован автоматически — sergeyserov
@idlebteam, стоп, белый экран это не сам по себе mismatch. React 18 mismatch обычно проглатывает с варнингом и доклеивает на клиенте, экран не белеет. Если у тебя именно белый экран, значит где-то throw в рендере на клиентских данных и нет error boundary который бы поймал. Цепляй Sentry или хотя бы window.onerror, лови стектрейс с прода. По форуму это гадание на кофейной гуще.
Re: Hydration failed: текст на сервере и клиенте не совпал. Из-за чего ловите чаще всего?
У меня топ-1 это new Date().toLocaleString() прямо в рендере. Сервер в UTC, клиент в своей таймзоне — текст разный, привет mismatch. Выноси форматирование даты в useEffect или suppressHydrationWarning точечно.
- regexninja
- Сообщения: 18
- Зарегистрирован: 12 май 2026, 16:04
Re: Hydration failed: текст на сервере и клиенте не совпал. Из-за чего ловите чаще всего?
У меня топ-1 источник hydration mismatch — это Date и toLocaleDateString(). Сервер рендерит дату в UTC или в таймзоне сервера, клиент подхватывает локальную зону браузера и получается другой текст. Лечится либо явным указанием таймзоны при форматировании, либо оборачиванием в suppressHydrationWarning на конкретном элементе если дата реально должна быть по-разному.
Re: Hydration failed: текст на сервере и клиенте не совпал. Из-за чего ловите чаще всего?
Частый виновник которого не видно в локалке — расширения браузера. Они вставляют элементы в DOM до гидрации, React смотрит на реальный DOM и не совпадает с ожидаемым. Особенно часто это рекламные блокировщики и переводчики. Именно поэтому не воспроизводится локально — там чистый браузер. Проверь в инкогнито у пользователей у которых белый экран.
Re: Hydration failed: текст на сервере и клиенте не совпал. Из-за чего ловите чаще всего?
Ещё одна классика — Math.random() или crypto.randomUUID() прямо в JSX для key или id. Сервер генерит одно значение, клиент другое, мисматч. Решается через useId() хук в React 18+ который гарантированно одинаков на сервере и клиенте, или вынести рандом в useEffect.
Re: Hydration failed: текст на сервере и клиенте не совпал. Из-за чего ловите чаще всего?
третий человек подряд про Date, и это реально топ-1. Добавлю что в Next 13+ на app router мисматч ещё прилетает на проверках window прямо в рендере, typeof window !== undefined в JSX даёт одну ветку на сервере и другую на клиенте. И localStorage оттуда же, читать его на первом рендере нельзя.
Re: Hydration failed: текст на сервере и клиенте не совпал. Из-за чего ловите чаще всего?
@qawsqaws, вот расширения это самое подлое, локально не воспроизведёшь вообще никогда. Grammarly и автопереводчики втыкают свои спаны прямо в текстовые ноды, и React 18 на это спотыкается. suppressHydrationWarning на body частично гасит, но это пластырь, а не лечение. Проверять в инкогнито у пострадавших юзеров это дельный совет, плюсую.
- sergeyserov
- Сообщения: 56
- Зарегистрирован: 12 май 2026, 05:59
Re: Hydration failed: текст на сервере и клиенте не совпал. Из-за чего ловите чаще всего?
✔ Лучший ответ — сформирован автоматически
@idlebteam, стоп, белый экран это не сам по себе mismatch. React 18 mismatch обычно проглатывает с варнингом и доклеивает на клиенте, экран не белеет. Если у тебя именно белый экран, значит где-то throw в рендере на клиентских данных и нет error boundary который бы поймал. Цепляй Sentry или хотя бы window.onerror, лови стектрейс с прода. По форуму это гадание на кофейной гуще.
Поделиться темой:
✈ Telegram
VK
- Похожие темы
-
- Ошибка handshake failed при подключении к WireGuard серверу как исправить
9 ответов · 105 просмотров
-
- WireGuard хранит IP на сервере — это реально проблема приватности или хайп?
9 ответов · 98 просмотров
-
- Dockge vs Portainer — что реально удобнее для управления docker compose на домашнем сервере?
8 ответов · 85 просмотров
-
-
- Нашёл открытый Redis без пароля на клиентском сервере — как правильно оформить находку в отчёте?
4 ответов · 53 просмотров
-
Похожие запросы:
что такое ubuntu server и зачем он нужен
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость