Установленная 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, офлайн-хранилище и кэш, я могу провести аудит и исправить жизненный цикл данных на устройстве.