Технически PWA держится на двух вещах. Манифест (manifest.json) описывает иконку, название и режим запуска, чтобы браузер предложил «установить» сайт на экран телефона. Сервис-воркер — фоновый скрипт, который кэширует файлы и отдаёт страницу даже без интернета.
Для SEO прямого бонуса от статуса PWA нет, поиск не ранжирует сайт выше просто за манифест. Но косвенный эффект ощутимый: кэширование разгоняет повторные загрузки, улучшает Core Web Vitals и удерживает мобильного пользователя. А скорость и поведенческие в мобильной выдаче решают многое.
Веб-сайт ведёт себя как нативное приложение
Кэш, офлайн-режим и иконка на домашнем экране
Повторные заходы грузятся мгновенно из кэша
Магазин обернул сайт в PWA: иконка на экране, работа офлайн, пуши о скидках. Повторные заходы выросли на 40 %, а мгновенная загрузка из кэша подтянула Core Web Vitals.
Сервис-воркер удобен для пользователя, но коварен для индексации: если он начнёт отдавать роботу закэшированную или урезанную версию страницы, в индекс попадёт устаревший контент. Робот Яндекса и Googlebot сервис-воркеры не исполняют — они краулят исходный ответ сервера, поэтому критично, чтобы первый HTML с сервера уже содержал весь контент и метатеги, а не дорисовывался скриптом после установки воркера. Проверять это нужно инструментом «Переобход» и просмотром кэша в Вебмастере, а в Google — через «Проверку URL» с рендером.
Главная ловушка PWA на JS-фреймворках — клиентский рендеринг (CSR): контент собирается в браузере, а серверный ответ почти пустой. Для mobile-first индексации это риск недополучить текст в индекс, поэтому ставьте SSR или пререндер. Сам по себе сервис-воркер не улучшает TTFB первого визита — он ускоряет повторные заходы из кэша; именно эта разница между «холодной» и «тёплой» загрузкой и подтягивает Core Web Vitals по возвращающимся пользователям.