Installing and uninstalling web apps
This guide covers how users can install and uninstall PWAs on their devices. If you want to learn about making a web app installable as a PWA, see Making PWAs installable instead.
History of web app installation
Browsers have always enabled saving shortcuts to websites, known as «bookmarking.» These are just links to websites.
Some operating systems (OS) have enhanced bookmarking capabilities, enabling saving bookmarks to common places, such as the home screen or taskbar, with an icon launching the site in the OS’s default browser. For many websites, this is also just a link to the site. If the site is a Progressive Web Applications (PWA), saving to home screen installs the PWA on the user’s device, fully integrating it into the operating systems like native applications on most devices. Just like PWAs can be installed, they can also be uninstalled.
We’ll first cover the precursors — saving links to websites.
Bookmarking websites
All browsers have add-to-favorites bookmark functionality. A bookmark, or favorite, is a clickable shortcut for a web page. Bookmarks enable quick access to websites without the user having to enter a URL or otherwise search for content. Bookmarking is especially useful for long URLs and accessing frequently visited content that is not the site’s homepage.
All browsers enable users to view and manage their bookmarks, including renaming and deleting favorites. By default, the bookmark’s display includes the text content of the bookmarked page’s <title> element along with an icon consisting of the site’s favicon.
Browsers enable saving, editing, moving, deleting, and otherwise managing bookmarks. The UI for bookmark management differs by browser.
Add to home screen
Smartphones, starting with the iPhone in 2007, added «save to home screen» functionality. For regular (non-PWA) websites, this feature is similar to bookmarks, but instead of adding the favicon and title of the page to the bookmarks menu — a browser feature — favoriting in this manner adds an icon to the OS’s home screen.
Adding a non-PWA site to the home screen does not install the website on the device. Rather, it adds the developer-defined icon to the home screen, that, when clicked, opens the bookmarked link in the default browser.

If the site added to the home screen is a PWA, the PWA will be installed on the device.
Deleting the icon from the home screen removes the bookmark. The deletion confirmation provides information as to whether deleting the icon deletes a bookmark or entire application.
Installing and uninstalling PWAs
While installing a PWA only takes a couple of clicks, depending on the web application features, the result of installing a PWA usually goes well beyond creating a link to a page on the Internet; installing a PWA more deeply integrates the web application on the user’s device.
Depending on the PWA, device, and features of the operating system and browser, installing a PWA may enable native-like features, such as giving the app its own standalone window or registering it as a file handler. This also means uninstalling a PWA, which also only requires a couple of clicks, does more than just removing the PWA’s icon.
Installing PWAs
The UI for installing a PWA from the web varies from one browser to another, and from one platform to another.
The user interface for installing PWAs differs by device and OS combination. The «Add to homes screen» user interface installs the PWA on Safari on iOS. Other browsers, including Chrome for Android, include the app installation command in the browser setting menu. In Chrome and Edge on desktop, when the user navigates to the page, if the page is a PWA and the PWA is not currently installed by the browser, an installation icon will be visible in the URL bar:

When the user selects the icon, the browser displays a prompt asking if they want to install the PWA, and if they accept, the PWA is installed.

Once installed, the PWA will behave like other applications that are installed on the OS. For example, on macOS, the icon will appear in the dock, and will have the same icon options as other applications:

On most desktop browsers, the install prompt is in the URL bar. On mobile, the install prompt is generally found in the menu of browser options. No matter the browser or OS, the installation needs to be confirmed.

Once installed, the PWA behaves just like other installed applications: clicking on the application icon opens the PWA, even when the user is offline.
Installation is supported on all modern desktop and mobile devices. Whether the PWA can be installed by the browser on the operating system differs by browser/operating system combination. Most browsers support installing PWAs on all operating systems—Chrome OS, MacOS, Windows, Android, Linux, etc.—directly or when an extension is installed.
Firefox requires a PWA extension.
Apple is unique when it comes to PWAs: PWAs can be installed on macOS from any browser except Safari. The opposite is true for iOS versions before 16.4, where PWAs could only be installed in Safari. PWAs can be installed on iOS/iPadOS 16.4 or later from any supporting browser.
When an installed PWA is launched, it can be displayed in its own standalone window (without the full browser UI) but it still effectively runs in a browser window, even if the usual browser UI elements, such as the address bar or back button, aren’t visible. The application will be found where the OS saves other applications, within a folder specific to the browser.
PWAs installed by a browser remain specific to this browser. This means that the browser that was used to install a PWA is the one used to run that PWA. It also means that you can install the same PWA from a different browser and that the two apps will behave as two different instances and will not share any data.
The browser used to install the PWA will know the PWA is installed, but other browsers will not have access to the installed status. For example, if you install a PWA using MS Edge, Edge will prompt you to open the PWA when you visit the site while Chrome will continue to prompt you to install the application. If you install the PWA using Chrome as well, you will have two copies of the PWA. When multiple instances of a PWA are open, data is not shared between instances installed from different browsers.
When you tap the web app’s icon, it opens up in the browser environment that installed the PWA, generally without the browser’s UI around it, though that depends on the way the developer configured the web app manifest. Similarly, the method used to uninstall the PWA depends on the browser that was used to install it.
Uninstalling
On most mobile operating systems, uninstalling a PWA is accomplished in the same way as uninstalling other applications. On some mobile operating systems, PWAs appear in the same control panel where applications downloaded from app stores are managed and can be uninstalled there.
On iOS, PWAs installed from Safari are listed and searchable from the «App Library» screen, but are not listed along with other installed applications under «Settings». On iOS, long tapping an icon surfaces the delete bookmark UI; removing the icon from the home screen deletes the PWA.
In some desktop operating systems, uninstalling a PWA can be done directly in opened PWA. To uninstall, open the PWA. In the top right corner of the opened app, there will be an icon that must be expanded to see more tools. Depending on the browser used to install the PWA, there will either be a link to uninstall the PWA, or a settings link that opens the browser’s settings page with an uninstall link. Either click on the uninstall option in the drop-down menu, if there, or navigate to the app settings in a browser tab and click uninstall.
Installing Your PWA on iOS
![]()
The @angular/pwa package is a great way to get your app up and running as a PWA. All configuration is completed for you, and with little extra setup your users will be prompted to install the app…that is, if they are using Android. But for your iOS users, the install prompt does not show by default. In this article I’ll show you the steps to ensure your user gets the install prompt on their iOS device.
Determining if the Prompt Should Show
If your app meets the PWA install requirements, the Chromium based browsers kick off an event called beforeinstallprompt . On Android devices, the browser will see that event and show a default install prompt. If the app is already installed, the prompt won’t continue to show up to the user. But, again, this same thing doesn’t happen for iOS users.
To help ensure that iOS users are asked to install the PWA on their phone, we can make a couple of checks in our app and show a custom install prompt to the user, telling them how to install the app. Here’s an example of the method that you can run to decide if the prompt should be shown:
There are a few steps here; let’s take a look at each of them. First up is to check if the device’s user agent is running iOS. We get the user agent from the window.navigator object, and check to see if it matches iphone , ipad , or ipod . There is another way to do this, but it requires installing @angular/cdk . If you are able to do that, it is a little simpler and you can rely on the Angular team updating the checks for you if necessary. To use the CDK, first inject Platform from the CDK, and then the above function, where we check if the user is using iOS, will look like this:
Either way will work, though I do like the idea of using the CDK to ensure that my check is up to date as much as possible.
The next step in the process is determining if the app is in standalone mode already. The manifest.webmanifest file that is generated when you ng add @angular/pwa to your project defines the “display” option as standalone. On this step, we check to see if the app is already in standalone mode. If it is, the user has already installed the PWA and doesn’t need to be prompted to install it.
The last step is checking to see if we’ve already shown theme the install modal. In the case above, we only show them one time. We could expand the logic to show them every week, or two weeks or 6 months, for example. We pull a value from localStorage which we saved there to say if we showed the modal. We either use the value from localStorage , or set it to false .
If after making these checks the user:
- is on iOS
- is not in standalone mode already
- has not already seen the modal
Then we will return true so the app can show the user the modal. Otherwise false will be returned and the modal won’t be shown.
Content of the Prompt Modal
Once you know if you should show a modal or not to the user, you can show the user whatever you’d like. I would encourage you to let them know why the modal is showing and how to install the app, though. Something like this, perhaps:
Install this application on your home screen for quick, easy and offline access when you’re on the go. Close this modal, tap the “share” icon, and then tap on “Add to home screen”.
You can change that content, but I’d at least give them a form of that information so they know what steps to take next.
This also may go without saying, but you don’t have to show the user a traditional modal. You could show a banner, or navigate to a new page, or whatever else you’d like to do. That part is up to you.
Conclusion
The @angular/pwa package makes it really easy to add PWA functionality to your application. But without a little work on your own your iOS users will never be prompted to install the app and may not do it on their own. Hopefully in the future iOS devices and browsers have better PWA support and these steps will not be necessary. Until then, hopefully this helps you distribute your PWA to as many people as possible.
Join us at ng-conf 2023!
ng-conf | June 14–15, 2023
Workshops | June 12–13, 2023
Location | Salt Lake City, UT
ng-conf 2023 is a two-day single track conference focused on building the Angular community. Come be a part of this amazing event, meet the Angular Team and the biggest names in the community. Learn the latest in Angular, build your network, and grow your skills.
Как создать ярлык для сайта (PWA) на iOS: два способа
Наверняка в вашем браузере на iPhone есть такие вкладки, которые вы никогда не закрываете. Это могут быть любимые новостные ресурсы, часто используемые интернет-магазины или веб-версии популярных соцсетей. Все эти ресурсы можно вынести на рабочий стол в виде ярлыков и для этого существует сразу два способа. Первый — максимально простой, второй — сложнее, но с дополнительными возможностями.
Какой бы путь вы не выбрали, в итоге вы получите PWA (Progressive Web Application) или Прогрессивное веб-приложение. Оно подойдет вам, если вы хотите получить быстрый доступ к конкретному разделу сайта или использовать какой-либо ресурс так, как если бы это было отдельное приложение и запускать его непосредственно с рабочего стола.
Также PWA могут заменить вам существующие программы. Их преимущество в том, что они занимают меньше памяти и могут не иметь ограничений отдельно разработанных приложений. Впрочем, бывает и обратная ситуация, когда приложение предлагает более интересную функциональность, чем веб-версия, так что, все зависит от того, для какого конкретно сервиса вы планируете использовать прогрессивные веб-приложения.
Визуально PWA совсем не похожи на станицу браузера: адресной строки, вкладок и других элементов интерфейса обозревателя здесь нет, а всю полезную площадь экрана занимает исключительно интересующий вас ресурс. Уведомлений как таковых здесь нет, но веб-приложения умеют отправлять Push.
Способ первый: простой и логичный
К сожалению, вынести вкладку на рабочий стол в виде ярлыка можно только из браузера Safari и если вы привыкли использовать другие обозреватели, для создания PWA вам все же придется обратиться к штатному. Хорошая новость — элементов интерфейса Safari в созданном приложении вы все равно не увидите, так что не имеет никакого значения, через какой браузер вы создавали ярлык. Переходим на вкладку с интересующим нас ресурсом, выбираем Поделиться и На экран “Домой”. Собственно, на этом все: у вас есть готовое к использованию PWA.
Способ второй: если сайт нужно спрятать
Вообще сложно сказать, зачем изобретать велосипед и использовать Быстрые команды там, где и так можно сделать нужное буквально в пару кликов, но раз способ существует, мы не можем обойти его вниманием. Единственное явное преимущество, которое мы обнаружили в ходе тестирования — пользователь может самостоятельно подобрать иконку и название для создаваемого PWA. То есть, ярлык для приложения может стать более ярким, чем его предусмотрел создатель, или же наоборот — получить менее броское узнаваемое оформление. Называете сайт с любимой мангой калькулятором, находите подходящую иконку и наслаждаетесь жизнью. Недостаток — так можно создать только один ярлык.
Как мы уж написали выше, для реализации данного способа нам понадобятся Быстрые команды. Скорее всего, эта программа уже установлена на вашем iPhone, а если нет — находим ее в AppStore. Также отметим, что для описываемого способа у вас должна быть активирована установка сторонних команд. Если нет — переходим в Настройки — Быстрые команды и активируем переключатель напротив пункта Ненадежные команды.
Далее скачиваем и запускаем Make app from URL. Здесь, следуя подсказкам, вам нужно будет подобрать имя для ярлыка, вставить ссылку на ресурс и выбрать желаемую иконку.
После того, как вы сохранили все внесенные изменения, вновь переходим в Настройки — Профиль и устанавливаем созданный профиль. После этого PWA будет доступен на вашем рабочем столе. Из этого же пункта меню его можно быстро удалить.
Так выглядят два способа создать ярлык для сайта на рабочем столе iPhone или, говоря научным языком, прогрессивное веб-приложение. Мы постарались максимально подробно описать процесс их создания, но если у вас остались вопросы, вы всегда можете задать их в комментариях. И не забывайте подписываться на ТЕХМО в Telegram, чтобы не пропускать другие интересные новости и полезные материалы.
Автор
Алеся Шарапова
Как запустить мобильное приложение за две недели с помощью PWA
Наш Frontend-разработчик Никита Воробьев рассказывает, какие задачи решают PWA-приложения, есть ли у них ограничения и почему Frontend-разработчики справляются с PWA-разработкой лучше других. В конце материала — инструкция по интеграции прогрессивного веб-приложения в сайт.
PWA — промежуточная технология между сайтами и нативными мобильными приложениями. По сути, это «прокачанная» копия веб-сайта, размещенная на устройстве пользователя и не требующая отдельной разработки для iOS или Android.
«Прогрессивное web-приложение (англ. progressive web app, PWA) — технология в web-разработке, которая визуально и функционально трансформирует сайт в приложение (мобильное приложение в браузере)»
Так описывается технология в Wikipedia, но нам этого мало, так что давайте подробнее разберем, что это такое.

PWA-приложение не нужно отдельно разрабатывать для iOS и Android: оно устанавливается на главный экран смартфона, — для этого нужно заложить технологическую базу на этапе Frontend-разработки. Можно сказать, что PWA — это сайты с расширенной функциональностью, которая позволяет им быть похожими на нативные мобильные приложения.
Работают эти приложения так же, как и обычные мобильные приложения: показывают Push-уведомления, работают в автономном офлайн-режиме, сохраняют данные локально. По внешнему виду они ничем не отличаются от нативных приложений и могут размещать иконку на рабочем столе (домашнем экране) для быстрого запуска.
PWA, как обычные сайты, размещаются на доменах с https-шифрованием. Таким образом поддерживается уникальность приложений, поскольку не бывает двух одинаковых доменов.
Задачи, которые решает PWA:
Стимулировать повторные продажи.
Возвращать клиентов компании в одно нажатие на экране телефона.
Повышать узнаваемость бренда. Иконка с логотипом компании всегда на виду на рабочем столе у пользователя.
Повышать средний чек сделки, допродавая продукты при помощи Push-уведомлений.
Оставаться на связи с клиентом: показывать Push-уведомления о том, что товар прибыл в пункт самовывоза или будет доставлен сегодня.
Экономить на рекламе. Не нужно настраивать догоняющую рекламу с новой акцией, достаточно отправить уведомление для текущих клиентов.
Избавиться от конкуренции в поисковой выдаче. Пользователи возвращаются через приложение, в котором нет конкурентов, в отличии от поисковой выдачи.
Однако любую из этих задач может решить и нативное мобильное приложение, так что в случае с PWA-разработкой можно поставить знак равенства между PWA Frontend developer и Mobile developer, поскольку они решают одни и те же задачи.
История PWA
Технология была создана компанией Microsoft еще в 2000 году. В 2007 сотрудники Apple разработали свой вариант HTML-приложений.
Изначально приложения для оригинального iPhone разрабатывались именно на платформе web. Однако успеха технология не сыскала по причине скудного UX, и в скором времени появился App Store, который по факту отложил развитие PWA.
Ожила и приобрела широкую известность технология только в 2015 году благодаря расширению возможностей браузера Google Chrome и продвижению Service Worker и Web App Manifest. Тогда же дизайнер Фрэнсис Берримэн и инженер Google Chrome Алекс Рассел придумалитермин PWA.
Затем поддержку прогрессивного веб-приложения начали добавлять во все браузеры и операционные системы. К примеру, в Windows, начиная с 10 версии, появилась возможность распространения PWA через Microsoft Store.
Но все же основная причина развития данной технологии — привлечение и удержание мобильного трафика: так, в России мобильный трафик по итогам 2021 года составил рекордные 83%.
Примеры PWA
Существует огромное множество прогрессивных веб-приложений — Telegram, Pinterest, Tinder, Starbucks.

Появились и отдельные сайты-каталоги PWA, например appsco.peи findpwa.com. Другие ресурсы для тех, кто интересуется разработкой прогрессивных веб-приложений — pwastats.com и web.dev, раздел Case Study.
На этих сайтах можно прочитать про множество успешных кейсов применения PWA с цифрами и с результатами. Один из примеров — как Starbucks смогли в два раза увеличить количество ежедневных пользователей.
Структура PWA
Чаще всего PWA состоит из Service Workers, Application Manifest, Офлайн-кэширования, различных PWA-технологий, адаптивного дизайна, фоновой синхронизации, Push-уведомлений, Media API и Geolocation API.

Пример структуры PWA
Модификаций структуры множество, однако минимальные требования для работы PWA — это:
Валидное и защищенное HTTPS-подключение (у домена должен быть установлен SSL-сертификат).
Успешно установленный файл Service Worker`а.
Правильно установленный и валидный JSON-файл манифеста.
Любой сайт можно дополнить данными составляющими и тем самым получить прогрессивное веб-приложение.
Service Worker
«Сердце» PWA — Service Worker. Это проксирующий слой между фронтэндом и бэкэндом, находящийся в браузере. Все запросы браузера идут через него.
Из хранилищ у Service Worker’a есть доступ к Cache-хранилищу для web-ресурсов, и IndexDB для данных. Но, самое главное, — полная свобода для реализации бизнес-логики.
С точки зрения написания кода, Service Worker представляет собой Javascript-файл. В нем разработчик определяет логику работы с приходящими из фронтэнда запросами и другую функциональность.

Web App manifest
Web App manifest — JSON-файл, декларативно определяющий для браузера название приложения, иконку, как будет выглядеть PWA (fullscreen, standalone и другие варианты отображения) и некоторые другие параметры. Позволяет «установить» PWA как отдельное приложение на домашний экран смартфона.
Технические особенности PWA
Способы установки PWA
Существует три способа установки PWA: при помощи автоматического уведомления, через «…» (три точки) в меню браузера, при клике на кнопку установки на странице.

Так выглядит установка с помощью автоматического уведомления

Пример установки через «…» (три точки) в меню браузера

Пример установки при клике на кнопку установки на странице
Отображение PWA
PWA работают на базе WebView, который предоставляют браузеры. WebView очень популярный способ для отображения интерфейсов.
Браузер, который будет открывать PWA после установки приложения, определяется операционной системой iOS или Android.
Для Android используется Google Chrome, а для iOS — Safari.
Очень упрощенно можно сказать, что PWA открывается во вкладке браузера, но без интерфейса самого браузера. Однако мы можем отображать интерфейс браузера, если нам это необходимо.

Варианты отображения PWA
Поддержка PWA
По данным caniuse.com, 94% устройств пользователей поддерживают service workers, возможность установки на домашний экран есть у 87% пользователей.
Функциональность PWA
PWA поддерживает множество способов взаимодействия с аппаратной частью телефона.
Такие функции как доступ к контактам пользователя, NFC, считывание QR, поддержка AR/VR пока недоступны, но в ближайшее время их должны добавить.
Подробнее обо всех функциях с примерами кода можно узнать на сайте whatpwacando.today.

Фреймворки и библиотеки
Для PWA необходимо только два файла — Service Worker и Web App manifest, — поэтому для разработки подойдут все актуальные реактивные фреймворки. Для каждого из них есть плагин, который добавляет предустановленный файл манифеста, предустановленный файл service worker’a и дополнительную функциональность.
Также есть фреймворки конкретно для работы с PWA:
PWA Builder
С его помощью можно легко разработать прогрессивное веб-приложение и сгенерировать пакеты из PWA для размещения приложения в различных сторах. При этом нужно учесть, что размещение в AppStore на данный момент считается экспериментальной фичей и работает не всегда корректно.
Отличительные качества PWA
Ограниченный доступ к аппаратной части
К недостаткам PWA можно отнести ограниченный доступ к аппаратной части мобильного устройства.
Поскольку прогрессивные веб-приложения запускаются в браузере, они не имеют прямого доступа ко всем возможностям платформы (операционной системы и аппаратным возможностям), к которым имело бы доступ нативное приложение, созданное с использованием SDK-платформы.
Но поддержка и возможности постоянно развиваются и имеющейся на данный момент функциональности достаточно для реализация большинства задач.
Установка в обход магазинов приложений
PWA, хоть и можно добавить в сторы, но их дефолтный способ установки — через браузер, т.е. они устанавливаются в обход сторов.
Это огромный плюс, т.к. в таком случае не приходится связываться с политикой проверки магазинов перед публикацией приложения. Но это относительно натянутый факт, так как и на андроид можно апк-файл скачать в обход стора.
Фоновая установка обновлений
Больше не нужно заставлять пользователей устанавливать обновления. Когда вы выпускаете новую версию своего приложения, все ваши пользователи автоматически получают новую версию.
Вы также можете предупреждать пользователей об изменениях. Достигается это с помощью системы кэширования файлов приложения. Разработчики могут отследить изменения между файлами на устройстве пользователя и файлами на домене.
Меньший размер приложения
Размер PWA-приложения, как правило, не превышает 1-3 мегабайт. Это меньше, чем мобильное приложение. Средний размер мобильного приложений, по данным 2017 года, 38 Мб для iOS и 15 Мб для Android.

Меньшие затраты на разработчиков
Для компаний, бизнеса разработка и поддержка PWA финансово выгоднее.

rabota.ru Q1 2022
В общем, PWA имеет свои отличительные особенности и недостатки.

Таблица особенностей PWA и нативных приложений
В связи с ограничениями аппаратной части, PWA не может полностью заменить нативные приложения, но четыре ключевые функции PWA-приложений закрывают потребности 90% мобильных пользователей:
Отправка Push-уведомлений, чтобы вернуть пользователей.
Установка иконки на домашний экран, чтобы дать пользователям быстрый доступ к приложению.
Доступ к некоторым нативным аппаратным функциям, например, камеры, микрофона.
Возможность работы офлайн.
Мы рекомендуем разрабатывать PWA-приложения когда нужно:
Повысить удовлетворенность и вовлеченность клиентов/пользователей, например, дать пользователям быстрый доступ к повторным заказам.
Протестировать гипотезу с минимальными финансовыми вложениями: прежде чем вкладывать в разработку нативного приложения, можно протестировать на PWA.
Сделать кроссплатформенную совместимость в сжатые сроки
Предложить аудитории новый канал взаимодействия с компанией.
Как интегрировать PWA в сайт: инструкция для начинающих
Собрали полезные ресурсы, которые помогут разработать и запустить прогрессивное веб-приложение на любом стеке.
1. Добавить файлы manifest и serviceworker
Инструкция по добавлению файла manifest в проект. Пояснение по полям файла,
Ресурс для генерации файла manifest.
Документация по manifest от разработчиков Mozilla. Примеры файла manifest, пояснение по полям, совместимость с браузерами.
Инструкция по добавлению файла serviceworker, его регистрация, жизненный цикл.
Документация по serviceworker от разработчиков Mozilla. Примеры файла, архитектура, жизненный цикл, кеширование, запросы.
2. Подключить и настроить библиотеки workbox
Документация по всем способам и вариациям подключения workbox.
Все возможные фреймворки и библиотеки, интегрированные с workbox.
3. Добавить кнопки на сайте для установки приложения
Инструкция по добавлению кнопки установки приложения.
Инструкция по добавлению кнопки установки приложения.
4. Запросить разрешения на отправку push-уведомлений
Документация о push-уведомлениях со всеми тонкостями.
Инструкция от разработчиков Mozilla по добавлению push-уведомлений.
Последующие пункты необязательны, но могут пригодиться для дополнительных этапов интеграции.
5. Настроить различные стратегии кэширования для статичных файлов
Инструкция по настройке стратегий кеширования с примерами и пояснением.
Вариации стратегий кеширования, пояснение каждой.
6. Настроить показ уведомлений при обновлении кеша
Документация от разработчиков Mozilla по событию обновления кеша.
7. Запись и чтение данных в IndexedDB
Документация от разработчиков Mozilla по IndexedDB, интерфейсам, спецификацией.
Документация по IndexedDB с примерами использования.
Разработка PWA мало чем отличается от обычной веб-разработки и со стороны написания кода, и со стороны дизайна, — разработчику необходимо написать чуть больше кода, а дизайнеру буквально отрисовать иконку для отображения на главном экране.
PWA обладает схожей функциональностью и спектром задач с нативными приложениями, но разработка прогрессивного веб-приложения куда быстрее и дешевле. А еще PWA легко интегрировать в уже существующие веб-приложения. Если вы хотите прокачать свои скиллы в разработке PWA, приходите к нам!