PWA или нативное приложение: что выбрать для MVP
PWA или нативное приложение, React Native или Flutter: что выбрать для MVP, где у каждого варианта потолок и когда пора переходить дальше.
PWA или нативное приложение — вопрос, который встаёт, как только у веб-MVP появляются первые пользователи с телефонов. PWA (progressive web app) — это сайт, который можно установить на главный экран и который умеет кое-что, что раньше умели только приложения: работать без сети, присылать уведомления, открываться без адресной строки. Нативное приложение пишется под конкретную платформу и ставится из магазина.
Между ними есть третий вариант — кроссплатформенные фреймворки, и для MVP он часто самый разумный. Разберём все три.
PWA или нативное приложение: три варианта простыми словами
- PWA. Тот же веб-код, плюс манифест и service worker — скрипт, который кэширует файлы и принимает уведомления. Одна кодовая база, без магазинов, без ревью, обновление — обычный деплой.
- React Native или Flutter. Одна кодовая база, из которой собираются настоящие приложения для iOS и Android. Публикуются через магазины, имеют доступ почти ко всему, что есть у телефона.
- Нативное. Swift для iOS и Kotlin для Android, две отдельные кодовые базы. Максимум возможностей и плавности, но и вдвое больше работы.
Есть ещё обёртки вроде Capacitor: сайт внутри оболочки приложения. Это рабочий путь, если внутри действительно приложение, а не копия сайта, — иначе магазин может отклонить его как «просто сайт».
Когда PWA хватает
PWA подходит, если твой продукт — в основном формы, списки и контент, а люди открывают его по ссылке, из письма или с компьютера. Админки, B2B-инструменты, кабинеты, сервисы, куда заходят раз в неделю, — здесь PWA даёт почти всё, а магазины добавляют только бюрократию.
Плюсы для MVP ощутимые: ты уже умеешь деплоить сайт, правка доходит до всех за минуту, оплату цифровых товаров можно принимать обычным платёжным провайдером.
Где у PWA потолок
Ограничения в основном на iPhone, и о них лучше знать заранее:
- уведомления на iOS работают только у тех, кто добавил сайт на главный экран, а это нужно объяснять руками;
- нет витрины в App Store — люди, которые ищут приложения только там, тебя не найдут;
- фоновая работа ограничена: ни трекинга геолокации в фоне, ни долгих загрузок после закрытия;
- часть железа недоступна или доступна не везде — Bluetooth, NFC, некоторые датчики;
- «установленное приложение» для многих людей — то, что пришло из магазина, а не иконка из браузера.
Когда брать React Native или Flutter
Если продукт живёт на телефоне — им пользуются каждый день, ему нужны надёжные уведомления, камера, геолокация, офлайн, — кроссплатформенный фреймворк обычно лучший выбор для MVP. Одна команда, одна кодовая база, два магазина.
Если твой веб-MVP собран на React, React Native (особенно с Expo) будет ближе по духу: тот же язык, похожие компоненты, часть логики можно переиспользовать. Flutter — отдельный мир со своим языком Dart, но с очень предсказуемым интерфейсом на обеих платформах. Выбирай то, что команда реально будет поддерживать, а не то, что выиграло в чьём-то сравнении.
Когда нужен натив
Чисто нативная разработка оправдана, когда продукт упирается в возможности платформы: сложная работа с камерой и видео, аудио в реальном времени, виджеты и интеграции с системой, тяжёлая графика, требования к плавности на слабых устройствах. Для большинства MVP это не так, и две кодовые базы на старте — способ тратить вдвое больше на каждую гипотезу.
Когда переходить с одного на другое
Хороший путь для многих продуктов: веб и PWA сначала, приложение — когда есть сигнал. Сигналы такие:
- пользователи сами спрашивают, где приложение, и не находят тебя в магазине;
- удержание упирается в то, что люди забывают вернуться, а уведомления на iOS доходят до единиц;
- нужна функция, которую браузер не даёт;
- конкуренты получают заметную долю установок из поиска в магазинах.
Переход дешевле, если с самого начала держать бизнес-логику на сервере, а не в клиенте. Тогда новое приложение — это новый интерфейс к тому же API, а не перенос всего продукта.
Коротко
- PWA — сайт, который ставится на экран; одна кодовая база и мгновенные обновления.
- Главные ограничения PWA — на iPhone: уведомления, фон, железо, отсутствие витрины в магазине.
- React Native или Flutter — разумный выбор для MVP, который живёт на телефоне.
- Натив нужен, когда продукт упирается в возможности платформы, а не по умолчанию.
- Логика на сервере делает любой будущий переход дешевле.
Если не уверен, какой вариант подходит твоему продукту, SUBXCAT может помочь решить это до того, как код будет написан дважды.