PWA или приложение на React Native: что нужно вашему бизнесу?
PWA или приложение на React Native: честное сравнение стоимости, офлайна, push-уведомлений на iOS и Android, публикации в сторах — и когда что выбирать.
Вы хотите, чтобы у клиентов было «приложение». Понятное желание. Но прежде чем закладывать бюджет на два стора и прохождение модерации, стоит решить главный вопрос — PWA или приложение на React Native: нужно ли вам приложение в сторах или с задачей справится прогрессивное веб-приложение (PWA) и обойдётся дешевле?
Короткий ответ: PWA выигрывает для каталогов, записи, личных кабинетов и всего, чем пользуются нечасто или находят через Google. Приложение на React Native / Expo — когда нужны присутствие в сторах, надёжные push на iPhone, глубокий доступ к устройству или ежедневное использование. Разберёмся без хайпа.
Что это такое
PWA — это сайт, который ведёт себя как приложение. Он открывается в браузере, но его можно установить на главный экран: он запускается на весь экран, кэширует данные для работы офлайн и умеет присылать push-уведомления. Один код, один адрес, без сторов.
Приложение на React Native / Expo — это настоящее нативное приложение для iOS и Android, собранное из общего кода на JavaScript/TypeScript. Оно распространяется через App Store и Google Play и имеет полный доступ к устройству: камера, Bluetooth, фоновые задачи, датчики и так далее. Expo берёт на себя много неприятных частей — сборки, обновления «по воздуху», публикацию в сторы.
PWA или React Native: быстрое сравнение
| PWA | React Native / Expo | |
|---|---|---|
| Где живёт | Браузер + главный экран | App Store + Google Play |
| Установка | Android: предложение установить прямо с сайта; iPhone: «Поделиться» → «На экран „Домой“» | Страница в сторе, загрузка |
| Обновления | Мгновенно, при следующем открытии | Через модерацию (или OTA для JS-изменений) |
| Офлайн | Да, через service worker | Да, с полным контролем |
| Push-уведомления | Android — да; iOS — для установленных PWA (16.4+) | Да, на обеих платформах |
| Функции устройства | Камера, геолокация, базовые датчики | Почти всё |
| SEO и ссылки | Да, это же сайт | Нет (только страница в сторе) |
| Относительная стоимость | Ниже | Выше |
Когда PWA — разумный выбор
- Продукт — это в основном контент, каталог или формы. Меню, записи, личные кабинеты, внутренние инструменты, программы лояльности отлично работают как PWA.
- Нужен трафик из Google. Каждый экран PWA индексируется и отправляется ссылкой. У приложения так не получится.
- Хочется быстро проверить идею. Запускаете одну версию, смотрите, пользуются ли ей, и только потом решаете, нужен ли натив.
- Пользователи заходят нечасто. Мало кто скачивает приложение ради того, чем пользуется раз в месяц. Попросить добавить ярлык на экран проще.
- Важен бюджет. Один код для веба, Android и iOS, без комиссий сторов и ожидания модерации.
Когда нужно приложение на React Native / Expo
- Присутствие в сторах — часть продукта. Часть аудитории просто ищет всё сначала в App Store.
- Надёжные push критичны. Доставка, мессенджеры, напоминания — push на iOS для PWA работают только после установки на главный экран, а многие этого так и не делают.
- Нужен глубокий доступ к устройству. Bluetooth-устройства, геолокация в фоне, NFC, данные о здоровье, встроенные покупки.
- Тяжёлый интерфейс. Сложные жесты, анимации, карты с живыми данными нативно ощущаются плавнее.
- Ежедневное использование. Если приложение открывают каждый день, разовая установка окупается.
Стоимость и сроки — честно
PWA обычно заметно дешевле нативного приложения с теми же функциями. Причины простые: одна платформа для деплоя, нет аккаунтов в сторах и модерации, нет отдельных сборок под каждую платформу, и часто можно использовать уже существующий сайт.
React Native с Expo сильно сокращает этот разрыв по сравнению с двумя отдельными нативными приложениями (Swift + Kotlin). Но вы всё равно платите за настройку сторов, тестирование на каждой платформе, циклы модерации и постоянную поддержку новых версий iOS и Android.
Практичный путь, который выбирают многие: начать с PWA, измерить, потом переходить на натив там, где это действительно нужно. При грамотной архитектуре это обходится дешевле — API и бизнес-логика остаются теми же. Если вы пока на этапе идеи, в статье как запустить MVP разобрано, как определить объём первой версии.
Как «устанавливаемость» выглядит в коде
Ядро PWA совсем небольшое. Манифест веб-приложения объясняет браузеру, как установить приложение, а service worker отвечает за кэш и офлайн:
// main.ts — регистрируем service worker после загрузки страницы
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/sw.js')
.catch(err => console.error('SW registration failed', err))
})
}{
"name": "My Shop",
"short_name": "Shop",
"start_url": "/",
"display": "standalone",
"background_color": "#09090b",
"theme_color": "#d4ff3a",
"icons": [{ "src": "/icon-512.png", "sizes": "512x512", "type": "image/png" }]
}Это скелет. Основная работа — в продуманной стратегии кэширования, нормальном офлайн-режиме и настройке push. Но уже видно, почему PWA проще, чем приложение для сторов.
Быстрый чек-лист для решения
Ответьте «да» или «нет»:
- Пользователям нужно приложение каждый день?
- Push на iOS абсолютно критичны?
- Нужны Bluetooth, NFC, фоновые задачи или встроенные покупки?
- Ваша аудитория ожидает найти вас в App Store?
В основном «нет»? Скорее всего, вам подойдёт PWA. Два и больше «да»? Смотрите в сторону React Native / Expo — это избавит от переписывания в будущем.
Частые вопросы
Можно ли опубликовать PWA в Google Play или App Store?
В Google Play — да: PWA можно упаковать как Trusted Web Activity и разместить как обычное приложение. App Store строже: простую «обёртку» над сайтом часто отклоняют за минимальную функциональность, так что если нужен App Store, планируйте полноценное приложение.
Работает ли PWA на iPhone?
Да. Пользователь открывает сайт в Safari и выбирает «Поделиться» → «На экран „Домой“». С iOS 16.4 веб-приложения, добавленные на экран «Домой», могут получать и push-уведомления — после разрешения пользователя.
Приложение на React Native хуже нативного?
Для большинства бизнес-приложений пользователи разницы не заметят: React Native отрисовывает настоящие нативные элементы интерфейса. При этом iOS и Android получаются из одного кода — подробнее в статье React Native и Expo простыми словами.
Можно ли превратить существующий сайт в PWA?
Часто да — нужно добавить манифест, service worker и продумать офлайн-режим. Объём работы зависит от того, как устроен сайт.
Ещё не определились?
Это нормально — правильный ответ зависит от ваших пользователей, а не от трендов. Набросайте проект в конструкторе: выберите «Мобильное приложение» и переключайтесь между пресетами «PWA» и «MVP», чтобы сравнить объём и примерную оценку. Подробнее — на странице разработки приложений. А если вы ещё прикидываете бюджет — вот статья о том, из чего складывается стоимость сайта или приложения.