Progressive Web Applications
Progressive Web Application (PWA) — это веб-приложение, использующее современные возможности браузеров для предоставления пользовательского опыта, близкого к нативным (установленным) мобильным и десктопным приложениям. PWA сочетают в себе гибкость и доступность веб-сайтов (доступ по URL, индексация поисковыми системами) с функциями, традиционно присущими только установленному программному обеспечению: работа в офлайн-режиме, отправка push-уведомлений, доступ к некоторым аппаратным возможностям устройства и возможность добавления значка на главный экран.
История
Концепция PWA возникла как ответ на ограничения как веб-сайтов, так и нативных приложений. В 2015 году инженер Google Алекс Рассел ввёл термин «Progressive Web App», описав набор технологий, позволяющих веб-сайтам работать как приложения. Ключевым стимулом стало развитие Service Worker — скрипта, работающего в фоновом режиме и позволяющего перехватывать сетевые запросы, кэшировать ресурсы и реализовывать офлайн-функциональность.
В 2016 году Google, Microsoft и Mozilla начали активно продвигать PWA. Крупные сервисы, такие как Twitter (X), Pinterest, Spotify и Telegram, выпустили PWA-версии, что подтвердило жизнеспособность подхода. В 2018 году поддержка PWA была добавлена в браузеры на базе Chromium (включая Microsoft Edge), а позже — в Safari от Apple, хотя с некоторыми ограничениями (например, отсутствие полноценной поддержки push-уведомлений на iOS до 2023 года). В России PWA активно используются рядом сервисов, включая онлайн-кинотеатры и интернет-магазины, для снижения затрат на разработку отдельных мобильных приложений.
Ключевые технологии
PWA базируются на трёх основных технологических компонентах:
Service Worker
Service Worker — это JavaScript-скрипт, который браузер запускает в фоновом режиме, отдельно от веб-страницы. Он выполняет функции:
- Кэширование ресурсов (HTML, CSS, JavaScript, изображения) для работы без интернета.
- Перехват и обработка сетевых запросов (например, возврат кэшированной версии при отсутствии сети).
- Получение push-уведомлений от сервера.
- Фоновая синхронизация данных (например, отправка формы после восстановления соединения).
Service Worker работает только по протоколу HTTPS (для обеспечения безопасности) и имеет ограниченный жизненный цикл.
Манифест веб-приложения
Манифест (файл manifest.json) — это JSON-файл, который сообщает браузеру, как приложение должно выглядеть и вести себя при установке на устройство. Он содержит:
- name и short_name — название приложения.
- icons — массив иконок разных размеров для отображения на главном экране.
- start_url — URL, который открывается при запуске.
- display — режим отображения (например,
standalone— без строки браузера,fullscreen— полноэкранный режим). - background_color и theme_color — цвета для загрузочного экрана и панели инструментов.
HTTPS
Для работы Service Worker и других функций PWA требуется безопасное соединение. Это гарантирует, что скрипты не были подменены при передаче.
Характеристики и критерии
Чтобы веб-приложение считалось Progressive Web Application, оно должно соответствовать ряду критериев, определённых Google:
- Прогрессивность — работает в любом браузере, независимо от версии (с использованием прогрессивного улучшения).
- Адаптивность — корректно отображается на всех устройствах (мобильные, планшеты, десктопы).
- Независимость от сети — базовый функционал доступен офлайн или при нестабильном соединении.
- Устанавливаемость — пользователь может добавить значок на главный экран устройства.
- Обновляемость — приложение обновляется автоматически через Service Worker.
- Безопасность — передача данных только по HTTPS.
- Индексируемость — содержимое доступно для поисковых систем (SEO-оптимизация).
- Вовлечение — поддержка push-уведомлений для повторного привлечения пользователей.
Преимущества и недостатки
Преимущества
- Низкая стоимость разработки и поддержки — одно приложение работает на всех платформах (Windows, macOS, Android, iOS), не требуя создания отдельных версий для каждой операционной системы.
- Отсутствие необходимости в магазинах приложений — пользователь устанавливает PWA напрямую с сайта, минуя модерацию App Store или Google Play (что упрощает распространение и обновление).
- Малый размер — PWA весят значительно меньше нативных приложений (обычно от 1 до 10 МБ против 50–200 МБ).
- Автоматическое обновление — пользователь всегда использует последнюю версию, так как Service Worker загружает обновления в фоне.
- Офлайн-доступ — возможность работы без интернета для кэшированного контента.
Недостатки
- Ограниченный доступ к аппаратным возможностям — PWA не могут использовать Bluetooth, NFC, USB, камеру в полном объёме (например, для видеозвонков), датчики движения (акселерометр) и некоторые другие функции, доступные нативным приложениям.
- Зависимость от браузера — функциональность PWA может отличаться в разных браузерах и операционных системах. На iOS (Safari) до 2023 года не было поддержки push-уведомлений, а установка возможна только через меню «Поделиться».
- Меньшая производительность в сложных сценариях — для графически интенсивных приложений (игры, 3D-моделирование) PWA уступают нативным решениям.
- Сложность с монетизацией — встроенные покупки и подписки через магазины приложений (App Store, Google Play) для PWA реализовать сложнее, хотя существуют обходные пути (например, через веб-платежи).
Применение
PWA нашли применение в различных сферах:
- Интернет-магазины и e-commerce — например, AliExpress, Flipkart, Ozon (частично). PWA позволяют повысить конверсию за счёт быстрой загрузки и офлайн-доступа к каталогу.
- Медиа и новости — The Washington Post, BBC, Forbes используют PWA для доставки контента при плохом соединении.
- Социальные сети и мессенджеры — Twitter Lite (X), Telegram (PWA-версия), Pinterest.
- Образование и справка — Wikipedia (PWA-версия), Khan Academy.
- Финансовые сервисы — некоторые банки и платежные системы (например, Paytm) используют PWA для мобильного банкинга.
Примеры реализации
- Twitter Lite — одно из первых крупных PWA, запущенное в 2017 году. Приложение занимает менее 5 МБ, работает офлайн и отправляет push-уведомления. По данным Twitter, PWA увеличило количество страниц, просмотренных за сессию, на 65% и сократило потребление трафика на 70%.
- Pinterest — после перехода на PWA компания зафиксировала рост времени, проведённого пользователями в приложении, на 40% и увеличение рекламной выручки на 44%.
- Telegram — PWA-версия мессенджера (Telegram Web) предоставляет практически полный функционал настольной версии, включая отправку файлов, звонки и уведомления.
Перспективы развития
Технология PWA продолжает развиваться. Основные направления:
- Расширение доступа к API — группы разработчиков браузеров (W3C) работают над добавлением API для работы с Bluetooth, NFC, USB, а также над улучшением поддержки камеры и микрофона.
- Улучшение поддержки на iOS — с 2023 года Apple начала добавлять push-уведомления для PWA в Safari, что устраняет одно из главных ограничений платформы.
- Интеграция с магазинами приложений — Google Play и Microsoft Store уже поддерживают публикацию PWA (через Trusted Web Activity или PWABuilder). Apple пока не разрешает размещение PWA в App Store, но обсуждается возможность добавления.
- Улучшение производительности — технологии WebAssembly и WebGPU позволяют PWA приближаться по производительности к нативным приложениям в задачах, требующих вычислений (например, обработка изображений или видео).
Критика
Основные критические замечания в адрес PWA связаны с их ограниченной функциональностью по сравнению с нативными приложениями. Критики отмечают, что для сложных приложений (например, графических редакторов, игр или программ для видеомонтажа) PWA остаются непригодными. Также высказываются опасения по поводу безопасности: Service Worker, при неправильной реализации, может стать вектором для атак (например, XSS). Кроме того, зависимость от браузера означает, что пользователь не может получить доступ к PWA, если браузер не поддерживает необходимые технологии (например, старые версии Internet Explorer).
Источники
- Google Developers. «Progressive Web Apps».
- MDN Web Docs (Mozilla). «Progressive web apps».
- W3C. «Web App Manifest».
- Статья Алекса Рассела «Progressive Web Apps: Escaping Tabs Without Losing Our Soul» (2015).
- Официальная документация Microsoft Edge по PWA.
- Статья Forbes «How Progressive Web Apps Are Changing Mobile Commerce» (2020).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →