Установленная PWA остаётся частью браузерного origin. Удаление ярлыка или приложения не во всех браузерах означает автоматическую очистку cookies, Cache Storage, IndexedDB и зарегистрированного Service Worker.
Решение должно начинаться не с принудительной очистки при каждом запуске, а с явного выхода пользователя, удаления чувствительных данных и управляемой версии офлайн-кэша.
Что сделать в первую очередь
- Определите, где именно остались данные: cookie, localStorage, IndexedDB или Cache Storage.
- Проверьте, активен ли старый Service Worker.
- Отделите пользовательские данные от статического офлайн-кэша.
- Выйдите из аккаунта и отзовите серверную сессию.
Почему возникает проблема
Браузер хранит данные сайта независимо от иконки PWA, чтобы повторная установка и обычное посещение могли продолжить работу.
- Logout удаляет cookie, но оставляет IndexedDB.
- Service Worker продолжает отдавать старый shell из кэша.
- Кэш имеет постоянное имя без версии.
- Данные нескольких аккаунтов лежат в общей записи.
- Серверный refresh token не отзывается при выходе.
Пошаговая диагностика
- Откройте Application в DevTools и составьте список хранилищ.
- Проверьте controlled clients и версии Service Worker.
- Сравните поведение после logout, удаления PWA и очистки данных сайта.
- Проверьте вход под другим пользователем на том же устройстве.
- Отключите сеть и убедитесь, какие данные доступны офлайн.
Как исправить
Чувствительные данные нужно удалять в сценарии выхода, не полагаясь на удаление PWA операционной системой.
- Реализуйте централизованный clearUserData для всех клиентских хранилищ.
- Удаляйте пользовательские записи IndexedDB по account_id.
- Версионируйте Cache Storage и удаляйте старые кэши в activate.
- Отзывайте серверные токены и очищайте push-подписку при необходимости.
- Добавьте в интерфейс отдельное действие «Удалить данные на устройстве».
Как проверить результат
- После выхода офлайн-режим не показывает прежние персональные данные.
- Другой аккаунт не видит записи предыдущего.
- Обновление Service Worker удаляет только устаревший кэш.
- Повторная установка начинает с ожидаемого состояния.
Как не допустить повторения
- Документируйте назначение каждого хранилища.
- Не помещайте чувствительные ответы в общий runtime-кэш.
- Тестируйте общий планшет и смену аккаунтов.
- Добавьте версию схемы IndexedDB и миграции.
Чего не стоит делать
- Не очищайте весь origin при каждом обновлении приложения.
- Не храните access token в доступном JavaScript постоянном хранилище без необходимости.
- Не считайте удаление ярлыка подтверждённым logout.
Что подготовить для диагностики
- Список браузеров и устройств с ошибкой.
- Снимок раздела Application без секретов.
- Код logout и Service Worker.
- Перечень данных, необходимых для офлайн-работы.
Частые вопросы
Можно ли узнать момент удаления PWA?
Надёжного универсального события удаления для выполнения очистки нет, поэтому критичные данные удаляют раньше — при выходе и отзыве доступа.
Нужно ли unregister Service Worker при logout?
Обычно нет. Достаточно очистить пользовательские данные; Service Worker может продолжать обслуживать публичный shell.
Когда стоит обратиться за помощью
Если данные возвращаются после очистки или PWA работает по-разному в браузерах, нужно проверить Service Worker, серверную сессию и стратегию кэширования вместе.
Итог
Удаление PWA и удаление пользовательских данных — разные процессы. Если нужно безопасно переработать logout, офлайн-хранилище и кэш, я могу провести аудит и исправить жизненный цикл данных на устройстве.