Открыть сервис

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, он должен соответствовать трём основным техническим требованиям:

  1. Service Worker: Это основной компонент, обеспечивающий офлайн-работу и фоновую синхронизацию. Service Worker — это JavaScript-файл, который браузер запускает отдельно от веб-страницы. Он перехватывает сетевые запросы, кэширует ответы (по заранее заданной стратегии) и может отдавать сохранённые данные при отсутствии интернета. Также Service Worker отвечает за получение push-уведомлений с сервера.
  2. Манифест веб-приложения (Web App Manifest): JSON-файл (обычно manifest.json), который предоставляет браузеру информацию о приложении: его полное и краткое название, иконки разных размеров, начальный URL, цвет фона, цвет темы и ориентацию экрана. Наличие манифеста позволяет браузеру предложить пользователю «Установить приложение» на домашний экран или в меню «Пуск».
  3. 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 →