Дублирование просмотров страниц при использовании history.pushState в одностраничных приложениях обычно означает, что хит в Метрику отправляется не только при реальной смене «виртуальной» страницы, но и при других вызовах pushState, не связанных с полноценной навигацией.
pushState используется не только для навигации
Некоторые SPA-фреймворки используют pushState также для обновления параметров URL без реальной смены отображаемого раздела — например, при изменении фильтров каталога. Если код отправки хита Метрики привязан к любому вызову pushState без разбора, каждое такое техническое обновление URL может ошибочно засчитываться как новый просмотр страницы.
Решение — точная привязка к реальной смене раздела
Отправляйте хит в Метрику только при действительно значимой смене отображаемого пользователю контента (переход в другой раздел приложения), а не при каждом техническом изменении URL, включая второстепенные параметры вроде фильтров или сортировки.
Как проверить корректность
Пройдите типичный путь пользователя по приложению вручную, отслеживая в реальном времени, сколько хитов отправляется в Метрику при каждом действии — несоответствие количества хитов количеству реальных смысловых переходов подтвердит проблему.



