Разработчики веб-приложения «Чатограмма» столкнулись с некорректной работой определения авиарежима на iPhone. Выяснилось, что в Safari значение navigator.onLine остается true, а событие offline не срабатывает. Инструменты разработчика в браузерах, включая режим Offline, не воспроизводят эту проблему, так как они имитируют ошибку соединения, а не его отсутствие.
Для решения проблемы команда внедрила проверку сети через файл version.json с таймаутом в 2 секунды. Любой ответ, кроме успешного в течение этого времени, интерпретируется как отсутствие сети. Использование AbortController позволило ограничить количество одновременных запросов, предотвращая их накопление и массовую отправку на сервер при восстановлении связи.
Также была обнаружена ошибка установки service worker у новых пользователей: метод cache.addAll прерывался, если в списке предзагрузки оказывался несуществующий файл. Разработчики добавили проверку сборки, которая блокирует процесс при отсутствии файлов. Использование clients.claim() позволило service worker управлять страницей сразу после первого визита.
По итогам работы сформулированы четыре правила: navigator.onLine не гарантирует наличие сети, тишину соединения нужно считать отсутствием сети, каждый fetch-запрос должен иметь ограничение по времени ожидания, а система сборки должна прерываться при ошибках в списке предзагрузки.






