← назад в блог

5 мин чтения#мобильные приложения#сайты#производительность

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: быстрое сравнение

PWAReact 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 проще, чем приложение для сторов.

Быстрый чек-лист для решения

Ответьте «да» или «нет»:

  1. Пользователям нужно приложение каждый день?
  2. Push на iOS абсолютно критичны?
  3. Нужны Bluetooth, NFC, фоновые задачи или встроенные покупки?
  4. Ваша аудитория ожидает найти вас в 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», чтобы сравнить объём и примерную оценку. Подробнее — на странице разработки приложений. А если вы ещё прикидываете бюджет — вот статья о том, из чего складывается стоимость сайта или приложения.