
Разбор · Опубликовали 07.10.2026
PWA добавляет сайту установку и офлайн-сценарии, а агенты проверяют обновление кэша
Как добавить PWA к существующему веб-продукту: выбрать границу офлайн, сохранить черновик и принять обновление на старой версии клиента.
Текст написан инженером, который ведёт vibecoding.ru, вместе с машиной агентов · факты проверены по первоисточникам 7 октября 2026
PWA, или прогрессивное веб-приложение, позволяет добавить сайту установку на устройство и выбранные сценарии без сети. Это полезно для продукта, куда клиенты возвращаются: личного кабинета, каталога, сервиса заявок. Но значок на экране ещё не означает, что клиент получит новую версию сайта и сохранит начатую работу.
Разберём внедрение на условном кабинете заказчика: клиент смотрит ранее загруженную заявку и пишет черновик ответа. Критерий готовности: после выпуска новой версии кабинет обновляется, черновик остаётся, отправка не выдаёт ложного успеха. Инженер ведёт машину агентов: агенты готовят код и прогоны, инженер принимает результат. Клиентского PWA-кейса у нас нет; наш опыт здесь относится к проверкам веб-сайта vibecoding.ru.
Не хотите разбираться сами? Внедряем ИИ в ваш бизнес: задачи без лимита, одна цена в месяц, отмена в любой момент.
1. Установка облегчает возврат, но не заменяет полезный сценарий.
Манифест описывает приложение для браузера: название, значки, адрес запуска и режим окна. На совместимом устройстве клиент может запускать сайт с домашнего экрана. Сам манифест не сохраняет заявки и не делает сервер доступным без интернета.
Способ установки зависит от браузера и устройства. В Safari на iPhone пользователь добавляет сайт на экран «Домой» через меню «Поделиться». Собственную кнопку установки нельзя обещать одинаковой для всех платформ. В задании должны быть названы браузеры клиентов, а в приёмке должен быть запуск с установленного значка.
Значок подтверждает установку; офлайн и обновление требуют своих прогонов.
MDN, Making PWAs installable и Caching, прочитаны 07.10.2026. Последняя колонка описывает предложенную редакцией приёмку. Эти прогоны мы не выполняли.
2. Офлайн ограничивают тем, что клиенту действительно нужно.
Для кабинета из примера полезен небольшой результат: открыть ранее загруженную заявку, прочитать вложенную инструкцию, продолжить черновик. Обещание «весь кабинет работает без сети» сразу включает вопросы про вход, вложения, отправку и устаревшие данные. Их нельзя решить одним кэшированием страниц.
Service worker запускает код отдельно от страницы. Он может перехватывать запросы и выбирать ответ из сети или кэша. Если для всех запросов брать сохранённый ответ первым, клиент рискует увидеть старый статус заявки. Для файлов интерфейса и изменяемых данных нужны разные правила.
Кэширование через CDN проверяют вместе с доставкой свежей версии страницы.
Данные другого пользователя вообще не должны попадать в такой ответ. Политику выхода, смены аккаунта и очистки локальных данных фиксируют в правилах для агентов до реализации. Черновик и кэш файлов тоже стоит разделить: удаление старых ресурсов при обновлении не должно удалять текст клиента.
Офлайн-копия должна сообщать, чего она не знает и не отправила.
MDN, Caching и Storage quotas and eviction criteria, проверены 07.10.2026. Сценарии и признаки брака составляют редакционную программу приёмки. Офлайн-отправка в её объём не входит.
3. Обновление принимают на старом кэше и с открытой формой.
Самый показательный прогон начинается до выпуска. Клиент открыл старую версию кабинета и набрал ответ. Команда выпускает новую версию. Приёмник возвращается в прежнюю вкладку, затем запускает установленный сайт. Так проверяют именно переход между версиями, который новый браузер с пустым хранилищем не покажет.
Новый service worker может ждать завершения работы старого. Принудительная активация через skipWaiting меняет это поведение, но способна связать старую страницу с новым обработчиком запросов. Поэтому «обновим сразу» требует отдельного решения: когда сохранить черновик, что сообщить клиенту и в какой момент перезагрузить интерфейс.
Обычный выпуск на сервере и откат тоже не гарантируют, что все установленные клиенты уже переключились. Нужен наблюдаемый признак версии и путь восстановления. Тот, кто принимает выпуск, несёт ответственность за ошибки. Агент может подготовить код и сценарии проверки; инженер принимает результат прогона.
Проверка обновления сайта должна подтверждать, какую версию получил посетитель.
Старая версия должна получить выпуск и сохранить начатую работу.
web.dev, The service worker lifecycle и Update, прочитаны 07.10.2026. Это список требуемых проверок, а не обещание автоматического восстановления при любом сбое.
Не очищайте кэш перед основным прогоном обновления. Такая подготовка удаляет состояние, которое требуется проверить. Отдельный запуск с пустым хранилищем нужен для нового клиента, но он не заменяет старую вкладку и установленное приложение.
4. Агенты готовят проверки, инженер принимает поведение на устройствах.
Агенту полезно дать наблюдаемую задачу: «На загруженной заявке без сети остаётся черновик; после обновления он не пропадает». Такая формулировка связывает код с критериями приёмки задачи. Просьба «сделай PWA» оставляет агенту выбор того, что вы потом будете считать готовым.
Агенты могут подготовить манифест, правила кэша, миграцию локальных данных и автоматические проверки перехода версий. В задании на прогон нужно сохранить исходное состояние клиента, выпустить следующую сборку и собрать наблюдения. Проверка только наличия файлов не отвечает на вопрос, что произойдёт с открытой формой.
На реальном Android и iPhone инженер отдельно смотрит установку, запуск со значка, уход в фон и возврат. Набор моделей и версий браузеров берут из аналитики продукта. Роль руководителя разработки с агентами здесь состоит в том, чтобы согласовать границы результата и принять поведение, включая неудачный путь.
Агенты приносят код и наблюдения; инженер принимает поведение.
Программа приёмки редакции, 07.10.2026. Предлагаем такой порядок разделения ролей; сравнительного замера скорости агентов для PWA у нас нет.
5. Наш опыт относится к веб-проверкам, а не к внедрённому PWA.
На vibecoding.ru мы уже сталкивались с тем, что код присутствует, а нужного поведения пользователь не получает. При проверке первого экрана /open выяснилось: заголовок находился в HTML, но анимация держала его невидимым до запуска JavaScript. Установленный значок тоже может создать впечатление готовности, пока не проверен следующий шаг клиента.
Позже заголовок прыгал после загрузки из-за пересчёта координат в JavaScript. Правилом стала геометрия первого кадра, заданная CSS. Это история о проверке видимого результата. Здесь мы проверяли первый экран веб-сайта. Кэш PWA в этом примере не проверяли.
02.09
Первый экран /open: заголовок был в HTML, но оставался скрытым до JavaScript. Правило: первый экран не должен ждать анимации появления. Замер включал профиль среднего Android, а не физическое устройство.
07.09
Заголовок /open менял положение после загрузки. Правило: геометрия первого кадра задана CSS, без позднего пересчёта координат.
Журнал публичной страницы /open, записи 02.09 и 07.09.2026; сверены 07.10.2026. Числа старых замеров не перенесены в статью. Живая страница: открытая стройка сайта.
Для PWA переносим способ работы: описать исходное состояние, поймать сбой, закрепить правило и повторить проверку. Именно такую последовательность разбирают наши уроки про задачи, правила и проверки. Результаты клиентского внедрения или прирост повторных визитов из этого опыта вывести нельзя.
Что и как мы проверяли
| Факт | Что известно | Проверено |
|---|---|---|
| Документация | MDN, web.dev и руководство Apple прочитаны 07.10.2026; установка отделена от офлайн и обновлений. | 2026-10-07 |
| Свой опыт | Сверены записи публичного /open от 02.09 и 07.09.2026. Это веб-проверки; профиль Android не выдаётся за физический телефон. | 2026-10-07 |
| Предложенная приёмка | Таблицы описывают будущий прогон кабинета. PWA на vibecoding.ru и клиентский кейс не предъявляются. | 2026-10-07 |
| Оффер | Тариф «Один проект» сверили с живым /services 07.10.2026. Это месячная подписка, а не фиксированная цена PWA. | 2026-10-07 |
6. Покупайте ограниченный результат с повторной проверкой после выпуска.
Первая задача может звучать так: «Добавить установку кабинета, просмотр ранее загруженной заявки и сохранение черновика без сети. Проверить получение следующего выпуска на устройствах клиентов». Платежи без сети, очередь отправки и другие сценарии требуют собственного задания и приёмки.
До начала работ согласуйте, что исполнитель покажет, какие данные хранит локально и кто проверяет реальный телефон. Тогда демо установки станет началом сдачи. Приёмка закончится после проверки обновления, выхода из аккаунта и поведения при отсутствии сохранённых данных.
В комплект сдачи входят границы офлайн и прогон следующего выпуска.
Редакционный шаблон заказа и приёмки, 07.10.2026. Трудоёмкость определяют после просмотра существующего продукта; эта таблица не задаёт срок разработки.
После выпуска смотрите не только установки. Зафиксируйте, открывают ли клиенты выбранный экран повторно, удаётся ли обновление, где появляется потеря черновика. Ошибка возвращается в задачу, исправление снова проходит старый клиент. Так внедрение получает обратную связь вместо разового демо.
Для реализации можно обсудить подписку «Один проект»: 250 000 ₽ в месяц на 07.10.2026. Манифест, установка, ограниченный офлайн-сценарий и проверка обновлений на реальных устройствах составляют обсуждаемый объём работ; это не фиксированная цена или срок отдельного PWA.
7. Частые вопросы
Что такое PWA простыми словами?+
Это веб-приложение, которому можно добавить установку на устройство и возможности вроде работы с сохранёнными данными без сети. Конкретные возможности зависят от реализации и браузера; значок сам по себе их не подтверждает.
Можно ли добавить PWA к готовому сайту?+
Да, если устройство и браузер поддерживают нужные возможности. Но сначала выбирают сценарий и проверяют устройство существующего продукта: авторизацию, загрузку данных и правила выпуска. Один манифест не решает эти задачи.
Любая установленная PWA работает без интернета?+
Нет. Установка и офлайн решают разные задачи. Для офлайн нужно заранее сохранить необходимые ресурсы и данные, а также описать поведение при их отсутствии.
Почему клиент видит старую версию после выпуска?+
Старую версию может отдавать service worker или кэш. Новая версия обработчика может ожидать активации. Причину устанавливают по состоянию конкретного клиента; совет очистить кэш не заменяет исправление пути обновления.
Можно ли автоматически отправить черновик, когда появится сеть?+
Это отдельный сценарий с правилами очереди, повторов и подтверждения сервера. В описанный здесь первый объём он не входит: черновик остаётся у клиента до подтверждённой отправки.
Сколько стоит такое внедрение?+
Универсальной суммы у нас нет: стоимость зависит от состояния продукта и объёма сценариев. Указанная в статье сумма относится к месячной подписке на разработку. Клиентский PWA-кейс с подтверждённой сметой и сроком мы не предъявляем.
Источники
- Making PWAs installable · MDN (проверено 07.10.2026) — документация
- Caching · MDN (проверено 07.10.2026) — документация
- The service worker lifecycle · web.dev (проверено 07.10.2026) — инженеры браузера
- Update · web.dev (проверено 07.10.2026) — инженеры браузера
- Storage quotas and eviction criteria · MDN (проверено 07.10.2026) — документация
- Turn a website into an app in Safari on iPhone · Apple (проверено 07.10.2026) — руководство платформы
- Открытая стройка сайта · vibecoding.ru (сверка журнала 07.10.2026) — наш опыт
- Агентная разработка для бизнеса · vibecoding.ru (тариф проверен 07.10.2026) — наш оффер
- Agentic engineering · vibecoding.ru (инвентарь уроков сверён 07.10.2026) — наш курс
Запомнить
1. Закажите установку, конкретный офлайн-сценарий и получение следующей версии как проверяемые результаты.
2. Назовите локальные данные, срок их актуальности и поведение при выходе из аккаунта.
3. Принимайте обновление на старом клиенте с открытой формой, не очищая его состояние.
4. Поручите агентам подготовку кода и прогонов; инженер проверяет целевые устройства и принимает выпуск.
5. После запуска возвращайте ошибки обновления и сохранения работы в очередь задач, затем повторяйте тот же прогон.