Состояние LocalStorage и React не сбрасывается после развертывания Firebase, но работает корректно в локальной разработке

Столкнулась с проблемой, которая возникает только после деплоя на Firebase Hosting — локально всё работает идеально.

? Как работает локально

Во время локальной разработки данные игрока корректно сохраняются и очищаются:

при нажатии пользователем на кнопку Exit:

его статистика и данные полностью удаляются из localStorage;

массив players сбрасывается к defaultPlayers;

пользователь возвращается на страницу Login;

при повторном входе он может залогиниться под новым ником, при этом статистика старого игрока не сохраняется (хранится только в localStorage на время сессии и полностью очищается после выхода).

? Проблема после деплоя на Firebase

После публикации на Firebase Hosting поведение становится другим:

После выхода одного игрока через кнопку Exit, следующий игрок получает его старую статистику из localStorage, несмотря на то, что объект userStats очищается в handleExit().

Данные пользователя не удаляются из массива players, хотя в handleExit() выполняется переинициализация:

setPlayers(defaultPlayers);

Но в новой сессии новый игрок всё ещё видит старого игрока в таблице рейтинга.

То есть в продакшене создаётся ощущение, будто localStorage.removeItem() или сброс state не срабатывают — хотя локально всё работает корректно.

❓ Вопросы

Почему после деплоя на Firebase старые данные userStats и players продолжают появляться, хотя они были очищены в функции handleExit?

Как правильно очистить и переинициализировать:

объект userStats,

массив players,

данные в localStorage,чтобы новая сессия начиналась с нуля, как это происходит локально?

Может ли быть, что usePersistedState или механизм обновления состояния React работает иначе в продакшене?

? Исходный код

Ссылка на GitHub (ветка main): https://github.com/Neo-o-svg/Tic-tac-toe-task01/tree/main

Firebase Hosting URL: https://tic-tac-toe-reactapp.web.app

Буду благодарна за любые подсказки — что упускаю и как корректно сбрасывать данные, чтобы новая сессия игрока не получала статистику предыдущего.


Ответы (0 шт):