О PWA я узнал чисто случайно в 2015 году благодаря, как это ни странно, другой технологии — Web Components и проекту Google Polymer.
На Google I/O 2015 помимо самой библиотеки Polymer для создания Web Components был представлен набор готовых веб-компонентов Polymer Elements и шаблон для создания веб-приложений Polymer Starter Kit, который как раз и представлял из себя PWA.
youtu.be/fD2As5RmM8Q?t=…
Меня зацепила идея, что я могу делать не только сайты, но и приложения на веб-технологиях. А это уже совсем другой уровень. 😀
Какие преимущества я для себя выделил?
Низкий порог входа:
Для написания PWA не нужно изучать проприетарные SDK, достаточно знать HTML, JS, CSS.
Для разработки не требуется специальное оборудование (как, например, в случае с iOS), и можно даже обойтись без IDE и компилятора — JavaScript-код интерпретируется и может быть отлажен прямо в браузере.
А если у вас уже есть веб-приложение или сайт, можно постепенно внедрять различные Web API.
Настоящая кроссплатформенность:
PWA работают на устройствах любого форм-фактора, на любой архитектуре и ОС, где есть браузер и доступ в интернет. Они запускаются на любых устройствах от носимой электроники до телевизоров, от VR/AR-очков до самых немыслимых устройств вроде умных зеркал.
А единая кодовая база снижает стоимость разработки и дальнейшей поддержки.
PWA выглядят и работают как нативные приложения:
PWA глубоко интегрируются в операционную систему, запускаются через иконку на главном экране, получают push-уведомления, работают без доступа к интернету и могут получать доступ к аппаратным сенсорам устройства, таким как камера, микрофон, Bluetooth, USB, NFC и др.
Не требуют установки и обновлений:
Чтобы воспользоваться PWA, достаточно посетить сайт. Необходимый для работы код при первом запуске помещается в кэш, который автоматически обновляется в фоновом режиме.
Децентрализованность, открытость и независимость:
Веб — самая крупная платформа, больше, чем все остальные платформы вместе взятые. Чтобы распространять PWA не нужны магазины приложений, которые навязывают свои правила.
Однако при желании PWA можно упаковать в легковесную нативную оболочку и опубликовать в Google Play, App Store и других магазинах.
Все преимущества веб-платформы:
PWA — это сайт, а значит весь контент индексируется поисковиками. У каждой страницы есть URL, который можно скопировать и поделиться (такой вот встроенный в платформу deep linking).
Также пользователь может скопировать любой текст на экране и перевести на другой язык, изменить масштаб страницы, открыть одно и то же приложение одновременно в нескольких вкладках или окнах, вырезать рекламу и много чего еще.
Меньший размер:
PWA сами не реализовывают API — они лишь вызывают API, уже реализованные в браузере. При запуске они загружают необходимый минимум, а всё остальное подгружают по мере необходимости (см. PRPL-паттерн).
Безопасность:
Код PWA выполняется в песочнице браузера, а для его загрузки и передачи данных используется безопасное соединение HTTPS.
Также веб-приложения используют более защищенную модель разрешений. Например, в отличие от нативных Android-приложений, PWA запрашивают у пользователя разрешение на получение push-уведомлений, доступ к NFC и так далее.