PWA
PWA (Progressive Web App, прогрессивное веб-приложение) — это тип прикладного программного обеспечения, разрабатываемого с использованием веб-технологий (HTML, CSS, JavaScript) и способного функционировать на различных платформах и устройствах, сочетая в себе свойства обычных веб-сайтов и нативных (устанавливаемых) мобильных приложений. Ключевое отличие PWA от традиционных веб-сайтов заключается в возможности установки на устройство пользователя, работы в автономном режиме (офлайн), доступа к некоторым аппаратным функциям (например, камере или геолокации) и получения push-уведомлений, что приближает их по функциональности к приложениям, распространяемым через магазины приложений (App Store, Google Play).
История
Концепция PWA возникла как ответ на ограничения как веб-сайтов, так и нативных приложений. Веб-сайты не требуют установки, но не имеют доступа к функциям устройства и не работают без интернета. Нативные приложения обладают этими возможностями, но требуют загрузки из магазина, занимают место в памяти и часто требуют обновлений вручную.
Первые шаги к созданию PWA были сделаны компанией Google. В 2015 году инженер Google Алекс Рассел ввёл термин «Progressive Web App». В 2016 году Google опубликовал базовые критерии, которым должно соответствовать приложение, чтобы считаться прогрессивным веб-приложением. Основой для этой технологии стали Service Workers — специальные скрипты, работающие в фоновом режиме браузера, и манифест веб-приложения (Web App Manifest) — JSON-файл, содержащий метаданные приложения (название, иконки, цвет темы).
Первоначально PWA поддерживались только браузером Google Chrome на Android. Позднее, благодаря усилиям сообщества и разработчиков браузеров, поддержка была расширена. К концу 2010-х годов PWA стали поддерживать браузеры на базе Chromium (Microsoft Edge, Opera, Samsung Internet), а также Firefox и Safari (с ограничениями). Компания Microsoft активно продвигала PWA в своём магазине Microsoft Store, позволяя разработчикам публиковать веб-приложения как обычные приложения для Windows.
Технические основы и характеристики
Для того чтобы веб-сайт считался PWA, он должен соответствовать трём основным техническим требованиям:
- Service Worker: Это основной компонент, обеспечивающий офлайн-работу и фоновую синхронизацию. Service Worker — это JavaScript-файл, который браузер запускает отдельно от веб-страницы. Он перехватывает сетевые запросы, кэширует ответы (по заранее заданной стратегии) и может отдавать сохранённые данные при отсутствии интернета. Также Service Worker отвечает за получение push-уведомлений с сервера.
- Манифест веб-приложения (Web App Manifest): JSON-файл (обычно
manifest.json), который предоставляет браузеру информацию о приложении: его полное и краткое название, иконки разных размеров, начальный URL, цвет фона, цвет темы и ориентацию экрана. Наличие манифеста позволяет браузеру предложить пользователю «Установить приложение» на домашний экран или в меню «Пуск». - HTTPS: Все ресурсы PWA должны передаваться по защищённому протоколу HTTPS. Это требование безопасности, так как Service Worker может перехватывать и модифицировать сетевые запросы, что делает уязвимым незащищённое соединение.
Дополнительные возможности
Современные PWA могут использовать ряд API браузера для расширения функциональности:
- Push API: Получение push-уведомлений от сервера даже когда браузер закрыт.
- Notification API: Отображение системных уведомлений.
- Geolocation API: Доступ к данным геолокации.
- Media Capture and Streams API: Доступ к камере и микрофону.
- Web Bluetooth API: Взаимодействие с устройствами Bluetooth (с ограничениями).
- Web Share API: Использование системного меню «Поделиться».
- Background Sync API: Отложенная отправка данных на сервер при восстановлении соединения.
Преимущества и недостатки
Преимущества
- Кроссплатформенность: Один код работает на Windows, macOS, Android, iOS и в вебе. Разработка PWA значительно дешевле и быстрее, чем создание отдельных нативных приложений для каждой платформы.
- Автономная работа: Возможность просматривать контент и выполнять некоторые функции без подключения к интернету, что критически важно для пользователей с нестабильным соединением.
- Установка без магазина приложений: Пользователь может установить PWA прямо из браузера, минуя процесс загрузки из App Store или Google Play. Это упрощает распространение и позволяет избежать комиссий магазинов приложений (до 30%).
- Автоматическое обновление: Приложение обновляется в фоновом режиме при каждом запуске, пользователю не нужно вручную устанавливать обновления.
- Небольшой размер: PWA занимают значительно меньше места на устройстве, чем нативные приложения (часто от нескольких сотен килобайт до нескольких мегабайт).
- Push-уведомления: Возможность вовлекать пользователей через уведомления, как и в нативных приложениях.
Недостатки
- Ограниченный доступ к аппаратному обеспечению: PWA не имеют полного доступа ко всем функциям устройства (например, к NFC, к полному набору датчиков, к сложным Bluetooth-профилям, к файловой системе в полном объёме). Этот разрыв постепенно сокращается, но он остаётся.
- Зависимость от браузера: Функциональность PWA зависит от возможностей конкретного браузера. Поддержка некоторых API может отсутствовать или быть неполной, особенно в Safari (iOS). Например, на iOS PWA долгое время не могли отправлять push-уведомления, и эта возможность появилась только в iOS 16.4.
- Производительность: Хотя современные PWA работают быстро, сложные и ресурсоёмкие приложения (например, 3D-игры с интенсивной графикой или программы для видеомонтажа) могут уступать нативным аналогам в производительности.
- Обнаружение: PWA сложнее найти, чем приложения в магазинах. У них нет единого каталога, и пользователь должен знать адрес сайта или найти его через поисковую систему.
- Безопасность: Хотя HTTPS обеспечивает шифрование, PWA могут быть уязвимы для XSS-атак (межсайтового скриптинга) и других веб-уязвимостей, если не соблюдать стандарты безопасности веб-разработки.
Примеры известных PWA
Многие крупные компании внедрили PWA для улучшения пользовательского опыта, особенно на мобильных устройствах с медленным интернетом:
- Twitter Lite: Одна из самых известных реализаций PWA. Позволяла пользователям с ограниченным трафиком и медленным соединением пользоваться сервисом, занимала всего около 1 МБ на устройстве. Позднее Twitter (соцсеть признана экстремистской и запрещена в РФ) отказался от этой версии в пользу нативного приложения, но её влияние на популяризацию PWA было огромным.
- Pinterest: PWA от Pinterest показало увеличение времени, проводимого пользователями в приложении, на 40% и рост вовлечённости на 60% по сравнению с мобильным сайтом.
- Starbucks: PWA позволяет клиентам просматривать меню, настраивать напитки и добавлять их в корзину в автономном режиме, что особенно удобно в местах с плохим покрытием.
- AliExpress: PWA для AliExpress позволило увеличить конверсию на 104% для новых пользователей на мобильных устройствах.
- Spotify: Веб-плеер Spotify может быть установлен как PWA, предоставляя доступ к музыке и подкастам без необходимости загружать настольное приложение.
- Telegram: Веб-версия Telegram (Telegram Web) также доступна в качестве PWA, обеспечивая быстрый доступ к мессенджеру из браузера.
Критика и ограничения
Основная критика PWA связана с их ограниченной поддержкой на устройствах Apple. Компания Apple долгое время сопротивлялась внедрению полной поддержки PWA в Safari, что приводило к фрагментации функциональности. Например, до iOS 16.4 PWA на iPhone не могли отправлять push-уведомления, а их кэш мог быть очищен системой без предупреждения. Некоторые разработчики критикуют PWA за то, что они не могут полностью заменить нативные приложения для сложных задач, а также за то, что они не дают разработчикам такой же степени контроля над пользовательским интерфейсом.
Перспективы развития
Технология PWA продолжает развиваться. Основные направления развития включают:
- Улучшение поддержки на iOS: Apple постепенно добавляет недостающие функции, такие как push-уведомления и поддержка Service Workers в фоновом режиме.
- Новые API: Разрабатываются API для доступа к файловой системе (File System Access API), к USB-устройствам (WebUSB), к MIDI-устройствам (WebMIDI) и другие, что расширяет сферу применения PWA.
- Интеграция с магазинами приложений: Google Play и Microsoft Store уже позволяют публиковать PWA, и эта практика становится всё более распространённой. Google также активно продвигает технологию Trusted Web Activity (TWA), которая позволяет упаковывать PWA в оболочку нативного приложения для публикации в Google Play.
- Улучшение производительности: Браузеры продолжают оптимизировать выполнение JavaScript и работу Service Workers, что делает PWA всё более быстрыми и отзывчивыми.
Источники
- Документация Google Developers: Progressive Web Apps.
- Документация Mozilla Developer Network (MDN): Progressive web apps.
- Статья Алекса Рассела «Progressive Web Apps: Escaping Tabs Without Losing Our Soul» (2015).
- Материалы конференций Google I/O и Microsoft Build.
- Отчёты компаний (Pinterest, AliExpress, Starbucks) о внедрении PWA.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →