К прогрессивным веб-приложениям у разработчиков, бизнеса и пользователей все еще очень много вопросов о безопасности и технических возможностях. Но и адвокаты PWA не молчат. Так, например, Давид Хейнемейер Ханссон считает, что нативные мобильные приложения уже не обязательны для B2B-стартапов. Я Василь, СТО Clevertec. Мы с командой обсудили аргументы за и против PWA и делимся результатами с вами.
Кратко о понятиях
PWA – веб-сайт, который функционирует аналогично нативному приложению. Любой смартфон может запускать PWA из своего браузера.
Нативное приложение – мобильное приложение, которое разработано специально для операционной системы и в зависимости от нее устанавливается на смартфон из стора: Google Play Store, Apple App Store или другого.
Вот с чем мы с ходу не согласились: не стоит говорить о том, что PWA – это временное решение для стартапа. Быстрый и дешевый способ получить приложение, чтобы с ним дождаться лучших времен, заработать денег и вложиться в разработку “настоящих” приложений.
На самом деле PWA часто может закрыть все потребности бизнеса. И, более того, мы уверены, что есть сфера, где сейчас можно строить стратегии именно с PWA, игнорируя натив. Но о ней позже.
![](https://habrastorage.org/getpro/habr/upload_files/ff7/184/76d/ff718476d3975524b91646c64397e8b7.png)
Когда начали противопоставлять веб и нативные приложения?
Мысль о том, что web догонит и вытеснит приложения, появилась еще 16 лет назад. Стив Джобс презентовал идею веб-приложений, которые выглядят и ведут себя как мобильные приложения.
В начале 2010-х была мысль, что этот момент вот-вот настанет. Но натив только укреплял свои позиции.
Время пришло. К тому же год назад вышло обновление iOS с некоторыми существенными для PWA функциями. Для нас как для команды с опытом разработки финтех-приложений и мобильных банков это означает, что теперь мы можем делать (и делаем) PWA по функциональности и пользовательскому опыту практически неотличимые от натива.
Кстати, в феврале Apple здорово пошумели: объявили, что в iOS 17.4 отключат поддержку PWA для пользователей из Евросоюза. Это значило, что веб-приложения больше не смогут присылать уведомления и хранить данные пользователей. Правда уже в начале марта решение отменили из-за большого резонанса.
![](https://habrastorage.org/getpro/habr/upload_files/83f/9e4/3ac/83f9e43ac2d49785e42b28aee0ef69bf.gif)
Находим и поясняем аргументы в пользу PWA
-
Деньги. Бизнес всегда считает затраты. Стоимость разработки прогрессивного веб-приложения будет примерно на треть меньше нативной разработки.
Если упростить подсчеты, то на первый взгляд стоимость разработки должна быть вдвое меньше. Но в реальности мы учитываем стоимость аналитики, дизайна, тестирования, и общая сумма ниже примерно на 30%.
Косвенный бенефит PWA – экономия сил и средств на управление командой. У нативных приложений их всегда две, потому что универсальных разработчиков для Android и iOS сейчас не найти. Управлять двумя командами и синхронизировать разработку между ними и серверной частью сложнее, чем работать с одной более однородной командой.
-
Доступ независимо от операционной системы
Сейчас веб технологически вырос, и параллельно развивается тенденция на фрагментацию мобильных операционных систем. О разработке своих собственных OC говорят Xiaomi, Huawei. И эта фрагментация пойдет совсем не на руку нативу.
PWA выглядит как стратегически более выигрышный вариант. Когда есть PWA с общей кодовой базой, то достаточно следить за стандартами браузеров, чтобы приложение хорошо работало у всех пользователей. Если же новая операционная система станет доминирующей, а у вас будет кодовая база под iOS и Android, то придется очень быстро собрать команду и написать новое приложение, чтобы не потерять клиентов.
Про независимость от сторов скажем одной строкой. С одной стороны это плюс, с другой – может отпугивать пользователей, т.к. приложения не проверяются, как в сторах.
-
Скорость обновления
Все обновления становятся мгновенно доступны. Бизнес не ждет апрува в сторах, а потом не тратит ресурсы, чтобы уговорить клиента обновить приложение.
-
Удобства для пользователя
Технология предполагает, что на рабочем столе размещается PWA со своей иконкой. Это выглядит абсолютно как приложение. Пользователь даже не подозревает, что это самом деле веб.
И еще PWA занимает на устройстве на порядок меньше места, чем нативное приложение. Сравните: PWA обычно “весят” единицы мегабайт, а мобильные приложения – десятки или даже сотни мегабайт.
Разоблачаем “узкие” места PWA
Адвокаты нативных приложений обычно выдвигают неоспоримые аргументы против PWA. Но мы поспорим и с ними.
Что насчет быстродействия?
Быстродействие действительно вызывало опасения. Технически PWA всё-таки медленнее натива. Но с современными устройствами эта разница практически незаметна для приложений банковского типа. Она, возможно, будет заметна на слабых девайсах, каких-то старых моделях, но на большинстве современных – нет.
Как быть с разницей UI/UX на разных платформах?
Стайл-гайды по UX у Android и iOS разные, они предоставляют разный пользовательский опыт. И хотя сейчас платформы идут навстречу друг другу в этом плане, различия все же есть. Допустим, в Android есть жест “назад”, а в iOS – только “Домой”. Их не очень много, но они есть и пока это недостаток PWA. Который, кстати, можно нивелировать. Это зависит от мастерства разработчиков. Любая кроссплатформенная технология, в том числе PWA, может мимикрировать. Она понимает, что работает на iOS, и перестраивает интерфейс в привычный для пользователя.
В PWA нельзя собрать данные пользователей
Для бизнеса было бы неплохо следить за пользователями, составить портрет, собрать дополнительные данные для маркетинговых целей. У PWA-приложений для этого действительно меньше возможностей по сравнению с нативным приложением.
Но с другой стороны – больше возможностей для приватности. Здесь меньше средств для того, чтобы перехватывать пароли, подслушивать, без предупреждения отслеживать местоположения и действия пользователя, "портить" данные других приложений на устройстве. Это не очень очевидно, но технически именно так: зловредные приложения (вирусы, трояны) практически невозможны, и пользователи от этого выигрывают.
Могут PWA и натив работать в связке?
Попробуем поискать обход ограничений PWA, объединив его с возможностями мобильного приложения.
В нашей практике есть такой сценарий использования. Мы создали приложение, которое содержит в себе нативные функции. Оно показывает веб-контент во встроенном браузере. И когда веб-контенту нужен доступ к нативным функциям или нативу нужно что-то от веба, то они через разработанный нами интерфейс взаимодействуют друг с другом.
Это называют гибридным приложением. В нем совмещена часть преимуществ PWA и нативного приложения.
И что же, всем придется переходить на прогрессивные веб-приложения?
Мы видим явную тенденцию, что PWA будет вытеснять натив. Но с другой стороны огромная кодовая база уже существует на нативе. Невозможно одномоментно отказаться ото всех мобильных приложений.
Переход – это инвестиция, и не маленькая. Но с прицелом в будущее. Если бизнес планирует существовать еще долго и развиваться, то скорее всего, это будет оправданно. Возможно, в этом случае можно будет убить нативное приложение и продолжать развивать только PWA.
![](https://habrastorage.org/getpro/habr/upload_files/9a2/609/0cf/9a26090cf146cf8e2ed93208e3f39689.png)
Сейчас мы не видим признаков, что натив по каким-то причинам потеснит PWA в отрасли банковских приложений
Потому что основные фишки, которых очень сильно не хватало: доступ к биометрии, пуш-уведомления, доступ к адресной книге, возможность перехвата SMS с одноразовыми паролями и другие вещи уже доступны. По сути это все, что нужно, чтобы сделать хорошее и безопасное банковское приложение.
В каких случаях мы все-таки не рекомендуем PWA?
Когда необходимы вычислительные мощности или прямой доступ к аппаратному обеспечению. Допустим, игры, где нужен доступ к прямой графике, сложная анимация.
Если вам нужно фоновое отслеживание. Некоторые особенности аппаратуры по-прежнему недоступны в PWA. Нельзя получить доступ к локации, микрофону, когда устройство заблокировано. Для приложений типа банковских это не ограничение, но, например, музыкальный плеер или навигатор сделать не получится.
Если приложение использует специфические библиотеки, которых нет в веб. Например, обертка для работы с сервером или специфичным форматом файлов.
Кейс из нашего опыта: в нативных приложениях есть библиотека для распознавания документов. В нашем случае она нужна, чтобы выездной сотрудник банка мог с помощью камеры сканировать паспорт или другие документы. Так он не вносит данные вручную, а только проверять их.
Долгое время это приложение существовало как нативное, потому что не было соответствующей веб-библиотеки. И это было сдерживающим фактором для развития. Сейчас нужная библиотека появилась, но до этого момента прошли годы.
Но ни один бизнес не согласится ждать этого события в бездействии.
Вместо вывода
Потому что вывод здесь, как и в любом сравнении технологий, не может быть однозначным. Какой путь выбрать – зависит от конкретных задач и особенностей бизнеса.
Действительно, при общих равных если сегодня разрабатывать банковские или подобные им приложения с нуля, то очень большой резон вкладываться именно в PWA, а не в натив. Это даст независимость от сторов и мобильных платформ.
А какие по-вашему перспективы у прогрессивных веб-приложений? Давайте обсудим.
Если интересная техническая сторона, наши разработчики уже рассказали:
Комментарии (18)
furniture
14.08.2024 07:57Скорость интернет постоянно растет, читал что Япония уже 6G тестировали, если 5G ,будет доступна то PWA мобильным приложениям не уступит по скорости загрузки.
fransua
14.08.2024 07:57+1PWA как и натив при установке код и ассеты сохраняют на устройство и дальше могут работать без интернета
furniture
14.08.2024 07:57В любом случае сначала интернет нужен.
fransua
14.08.2024 07:57+2В статье сравнивают PWA и native, и там и там интернет необходим только при инициализации - установке из AppStore/GooglePlay или первом посещении сайта. Так что тут нет отличий, и PWA не уступают мобильным приложениям уже сейчас, независимо от 5G или 6G
Octabun
14.08.2024 07:57Для кого про PWA пишите? Наверно для тех, кто их не поьлзует. Почему не? Если не любит, то увы. Если не знает - пишите не о том. По себе сужу. Чтобы моё невежество рассеять, нужно объяснить как минимум следующее...
Кратко о понятиях
Если пончтия - нативное приложение и PWA, то далее - строго чушь собачья, ибо понятия - как минимум натив, кросс-платформа, PWA и сайт, причём кросс-платформу надо бы разделить на использующую и не использующую WebView. Это важно, потому что многие непонятки проистекают из нежелания не видеть этих понятий.
Бизнес всегда считает затраты.
Тогда однозначно - Flutter. Соискатель - Tauri, ему до мобилок месяц остаётся. Быстрее чем так точно не пишется. Да, а что будет с деньгами бизнеса когда нативный функционал понадобится столь остро, что PWA придётся выкинуть? Альтернатива, PWA оставить а выгоду упускать, сильно лучше?
Сейчас веб технологически вырос, и параллельно развивается тенденция на фрагментацию мобильных операционных систем. О разработке своих собственных OC говорят Xiaomi, Huawei. И эта фрагментация пойдет совсем не на руку нативу.
Что не пойдёт на пользу нативу, то совсем не значит что пойдёт на пользу Вебу или PWA. Может пойти на пользу кросс-платформе.
Кстати, была такая фрагментация - macOS и iOS, тоже не шла на пользу нативу по тем же самым соображениям. И тут Catalyst и далее - внезапно на пользу нативу стала идти. Кстати, иначе потуги Хуавей - просто безумие.
Про независимость от сторов скажем одной строкой. С одной стороны это плюс, с другой – может отпугивать пользователей, т.к. приложения не проверяются, как в сторах.
Да они, по факту, и в сторах пренебрежимо проверяются. Тут выбор между хоть чем-то и нафиг пошёл, то есть выбор однозначен. У PWA есть интересный (ИМХО) способ популяризации - разработка приложений для смартфона или планшета на самом смартфоне или планшете, но тут надо работать, а бизнесу по русски это не свойственно, бизнесу же по нерусски, похоже, табуировано.
Все обновления становятся мгновенно доступны. Бизнес не ждет апрува в
сторах, а потом не тратит ресурсы, чтобы уговорить клиента обновить
приложение.Не всегда становятся доступны, а только тогда, когда хороший коннект. И пользователь может иметь особое мнение по поводу того, что его не уговаривают на обновление.
Технология предполагает, что на рабочем столе размещается PWA со своей иконкой. Это выглядит абсолютно как приложение.
Это да, но не по понятиям и заголовку где против натива, это против сайта.
И еще PWA занимает на устройстве на порядок меньше места, чем нативное приложение.
Неверно, посмотрите сколько места занимает на iPad, скажем, FaceTime, Translate, TV, Lua ISE... Это кросс-платформа занимает больше места, но я бы усомнился что тенденция сохранится, см. то же Tauri.
Технически PWA всё-таки медленнее натива.
А сайта? Кросс-платформы? А с WebAssembly? Я делал кустарный тест - JavaScript оказался примерно на столько же медленнее языков со сборкой мусора на сколько они медленнее языков без таковой, но в разных браузерах и версиях Node разброс велик. Тут сложнее чем "заметно - не заметно".
Как быть с разницей UI/UX на разных платформах?
ИМХО - уже известно, на опыте Flutter и аналитике показано - более успешна та кросс-платформа, которая не мимикрирует под платформу. Да, так нельзя делать произвольные приложения, но в области применимости - работает отлично. А кросс-платформа мимикрирующая - испытывает проблемы типа uncanny valley.
Для бизнеса было бы неплохо следить за пользователями, составить портрет, собрать дополнительные данные для маркетинговых целей.
Тут я не понял - для какого бизнеса? Если для создавшего приложение - какие проблемы? Если для того бизнеса которому сливают данные пользователя, Интернет предназначен для перекрёстного опыления - наверно да, есть сложности, ну тогда договоритесь иначе.
Попробуем поискать обход ограничений PWA, объединив его с возможностями мобильного приложения.
Знаю единственный способ это сделать - deep links. Но PWA и к нему несколько мобильных приложений - знак беды.
Это называют гибридным приложением. В нем совмещена часть преимуществ PWA и нативного приложения.
Называют, но "это" включает не PWA а WebView со товарищи. Про совмещение преимуществ я бы сказал иначе - плказывает отсцтствие таковых у собственно PWA.
А теперь что я сам думаю.
возможность обойти цензуру - это бесценно, но на Андроид можно и иначе, а у Эппл PWA ограничены сильнее всего, в том числе и по хранимым данным. Увеличивать их возможности - увеличивать возможности браузера, спасибо, НЕНАДА.
возможность избавить сайт от визуального мусора браузера - это хорошо, но вместо радости со стороны бизнеса недовольство - пользователю же нужно пальцем пошевелить. А так - могло бы быть удобно, не успел доитать что-то умное - установил сайт как PWA. Документацию по тому же Tauri, например, но как раз тут я не вижу энтузиазма вообще.
Джобс придумал PWA для того, чтобы на любых платформах можно было уйти от платформенного налога, это ОК - от Эппл будут уходить меньше, и чтобы реализовать технологическое превосходство Эппл в Интернете - обычные сайты при наличии PWA должны были работать на устройствах Эппл лучше чем на других.
да, попытки противостоять друг-другу достали всех и всем вышли боком, даже Эппл, но этот ветер в паруса кросс-платформы а не PWA.
lvr Автор
14.08.2024 07:57Спасибо за развёрнутый комментарий и за свои мысли!
Позволю себе некоторые тезисы прокомментировать.
Если пончтия - нативное приложение и PWA, то далее - строго чушь собачья, ибо понятия - как минимум натив, кросс-платформа, PWA и сайт, причём кросс-платформу надо бы разделить на использующую и не использующую WebView. Это важно, потому что многие непонятки проистекают из нежелания не видеть этих понятий.
Не соглашусь, что понятия не определены. Вначале статьи как раз описаны отдельно натив, отдельно - PWA и отдельно гибридные приложения. Про отличия PWA от простого сайта ничего не писал - решил не перегружать этим статью.
Тогда однозначно - Flutter. Соискатель - Tauri, ему до мобилок месяц остаётся. Быстрее чем так точно не пишется. Да, а что будет с деньгами бизнеса когда нативный функционал понадобится столь остро, что PWA придётся выкинуть? Альтернатива, PWA оставить а выгоду упускать, сильно лучше?
Тему кросс-платформы не упоминал, согласен. Но прямо что однозначно Flutter я бы не говорил. Команд, способных писать под web по моему опыту гораздо больше, чем Dart/Flutter и тем более, чем Tauri. А это тоже отражается на затратах бизнеса, особенно когда нужно масштабироваться.
Что же касается острой необходимости нативной функциональности в PWA - интересен Ваш опыт. Мы в компании с таким не сталкивались и не слышали про такие случаи.
Тут я не понял - для какого бизнеса? Если для создавшего приложение - какие проблемы? Если для того бизнеса которому сливают данные пользователя, Интернет предназначен для перекрёстного опыления - наверно да, есть сложности, ну тогда договоритесь иначе.
Имел в виду для бизнеса, создавшего приложение. PWA всё-таки имеют меньше средств создать портрет пользователя, чем натив.
isumix
14.08.2024 07:57+3Вэб уже самая большая и быстрорастущая платформа приложений, если считать по количеству сайтов.
Многие сайты ПРОГРЕССИВНО дополняются новыми фичами, что только улучшает пользовательский опыт. Да и называются они уже приложениями.
Геморой со сторами, подписками, оплатами, банами, обновлениями, апрувами, разным стеком для каждой платформы mustdie!
Те кто критикует являются мобильными разработчиками. Они достаточно много сил инвестировали в свою платформу, их можно понять.
zoto_ff
14.08.2024 07:57+1Если приложение использует специфические библиотеки, которых нет в веб. Например, обертка для работы с сервером или специфичным форматом файлов.
Есть WASM, в который можно запихнуть практически что угодно.
ScratchBoom
14.08.2024 07:57+2Уже давно почти перестал пользоваться приложениями. Почти всё в браузере. Только телега осталась в виде приложения
HemulGM
PWA банкиг приложения сейчас имеют спрос, потому что нативных просто напросто нет (на iOS, например). Но я уверен, что как только ограничения спадут и в AppStore будет нативный банковский клиент, пользователи буду использовать именно его.
K0styan
У банкинга и екомма есть очень неслабая зависимость от онлайна: и балансы, и каталог надо держать актуальными; для проведения транзакций тоже без онлайна никуда. Поэтому тут как раз даже нативное приложение по сути представляет собой скелет, на который навешиваются подтянутые из бэка данные. Какой-то выгоды именно от локального приложения почти нет.
HemulGM
Тоже верно