Что такое PWA
Progressive Web App — обычный сайт с тремя дополнениями.
- HTTPS (или
localhostпри разработке). Service worker работает только в безопасном контексте. - Web App Manifest: JSON-файл с именем, иконками, цветами и стартовым адресом.
- Service Worker: скрипт между страницей и сетью, который перехватывает запросы и может отвечать на них из кеша.
В итоге сайт можно установить на главный экран, он открывается в отдельном окне и продолжает работать без соединения. Учтите, что у service worker нет window и DOM; глобальный объект внутри него — self, а Cache API доступен как caches.
Manifest и установка
Manifest сообщает браузеру, как должно выглядеть установленное приложение. Подключите его на каждой странице:
<link rel="manifest" href="/manifest.webmanifest">
<meta name="theme-color" content="#2563eb">{
"name": "Prowid Notes",
"short_name": "Notes",
"start_url": "/?source=pwa",
"scope": "/",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#2563eb",
"icons": [
{ "src": "/icons/192.png", "sizes": "192x192", "type": "image/png" },
{ "src": "/icons/512.png", "sizes": "512x512", "type": "image/png" },
{ "src": "/icons/maskable-512.png", "sizes": "512x512",
"type": "image/png", "purpose": "maskable" }
]
}| Поле | Смысл |
|---|---|
name, short_name | Полное имя и короткая подпись под иконкой |
start_url | Страница, которая открывается с иконки; параметр ?source=pwa помогает аналитике |
display | standalone скрывает адресную строку; browser оставляет обычную вкладку |
icons | Обычный минимум — 192 и 512 px; maskable подстраивается под круглые и скруглённые формы |
💡 Правила установки у браузеров отличаются, поэтому проверяйте в нужных браузерах. Для работы офлайн service worker нужен в любом случае.