A/B-скрипт показывает старую страницу: проверка мерцания
Проверка мерцания A/B-варианта: первый видимый кадр, медленная сеть, задержка SDK, сбой загрузки и соответствие exposure фактическому показу.

Посетитель успевает прочитать старый заголовок, затем скрипт заменяет его тестовым. В отчёте он числится участником варианта Б, хотя увидел оба сообщения. Такой эксперимент проверяет уже последовательность двух экранов, а не только текст Б.
Это техническая проверка перед запуском эксперимента лендинга. Она не выбирает гипотезу и не подтверждает эффект на конверсию. Результат проверки — запись того, что действительно отобразилось при загрузке.
Три момента, которые нельзя объединять
Зафиксируйте назначение варианта, его первое видимое отображение и отправку события показа. Они могут происходить в разное время. Назначенный пользователю вариант ещё может не отрисоваться; событие может уйти до изменения DOM. При позднем ответе сервиса экран успевает показать контроль.
Например, JavaScript SDK Amplitude Experiment описывает получение вариантов, чтение локального варианта, автоматический и ручной exposure. При определённых интеграциях вызов variant() отправляет exposure автоматически. Это техническая семантика SDK, а не видеоподтверждение отображения.
Перед проверкой запишите версию страницы, эксперимент и ожидаемый путь. Используйте тестовое назначение нужного варианта, если система поддерживает его. Несколько случайных обновлений, на которых попадался только контроль, не проверяют тестовый экран.
Как записать первый видимый экран
- Откройте Performance в Chrome DevTools, включите Screenshots и запись загрузки страницы. Сохраните URL, назначение и параметры сеанса.
- Отключите кэш для проверки холодной загрузки. Выберите сетевое замедление и при необходимости замедление CPU; запишите конкретные параметры.
- Запустите перезагрузку с записью. Просмотрите первые содержательные кадры и момент смены текста, цены, кнопки или положения формы.
- Сопоставьте кадры с запросом сервиса экспериментов и событием exposure. Проверьте, не ушло ли событие до фактического появления варианта.
- Повторите с доступным сервисом, задержанным ответом и заблокированным скриптом. Для каждого сценария сохраните отдельный результат.
Chrome документирует запись загрузки, снимки кадров и ограничения сети/CPU. Эмуляция не повторяет устройство пользователя полностью. Поэтому после лабораторной записи полезно пройти сценарий на целевом телефоне; один чистый прогон не доказывает отсутствие проблемы во всех условиях.
Матрица проверки сбоя
| Условие | Что смотреть | Какое решение требуется |
|---|---|---|
| Холодный запуск | Первый содержательный кадр | Совпадает ли видимый текст с назначением |
| Медленная сеть | Длительность показа контроля до замены | Устранять смешанное отображение |
| Задержка ответа SDK | Состояние страницы до назначения | Ограниченный срок ожидания |
| Скрипт недоступен | Форма и основной контент доступны | Рабочий резервный вариант |
| Переход внутри SPA | Повторное применение варианта и показ | Отсутствие лишней замены и дублей события |
| Возврат из истории | Кадр после возврата | Согласованность состояния и аналитики |
Резервный вариант задаётся до запуска. Если сервис недоступен, страница должна прийти к заранее выбранному рабочему состоянию, а событие — описывать фактический показ по принятой схеме. Не маскируйте аварийное падение в контроль как штатно показанный Б.
Почему скрыть всё до загрузки недостаточно
Anti-flicker может убрать видимую смену и оставить пустой экран при сбое. Для такого решения нужны ограниченное ожидание, гарантированное снятие скрытия и проверка доступности формы. Чем шире область скрытия, тем больше содержимого зависит от внешнего скрипта.
Другой вариант — назначить и отрисовать нужное состояние до первого клиентского показа. Реализация зависит от стека: сервер, ранняя загрузка конфигурации или другой поддержанный способ. У Amplitude есть bootstrapping начальных вариантов, но он не гарантирует отсутствие мерцания в произвольной интеграции. Проверьте совпадение серверного состояния и клиента после гидратации.
В журнале дефекта оставьте ожидаемый вариант, видимые кадры, задержку, условия сети, фактические события и путь воспроизведения. До устранения смешанного показа интерпретацию текущих данных нужно ограничить: красивое распределение A/B не восстанавливает потерянную чистоту воздействия.
Начните с холодной загрузки Б на замедленной сети и одного намеренного сбоя. Если страница зависает пустой или успевает показать оба предложения, сначала исправьте этот маршрут, затем возвращайтесь к правилам анализа эксперимента.