Клиент хотел нативное приложение за 2 млн — мы предложили PWA за 400К. Почему он согласился и что из этого вышло
Клиент хотел нативное приложение за 2 млн — мы предложили PWA за 400К. Почему он согласился и что из этого вышло
Когда заказчик приходит с запросом «хочу приложение», он почти никогда не имеет в виду «нативную разработку на Swift и Kotlin». Он имеет в виду иконку на экране телефона, быструю загрузку и чтобы клиенты не уходили. Это история о том, как мы разобрали реальный запрос на части, честно обсудили ограничения — и в итоге закрыли задачу в пять раз дешевле.
Клиент пришёл с бюджетом 2 млн и запросом на «нативное приложение»
Типичная ситуация: предприниматель из сегмента услуг, аудитория — несколько тысяч активных клиентов, 60% мобильного трафика на сайте. Хочет приложение. Спрашиваешь «зачем?» — получаешь: «Чтобы было как у конкурентов. Иконка на телефоне, push-уведомления, быстро грузилось».
Он уже обошёл две студии. Ему насчитали 2–2,5 млн за одну платформу. Покрытие iOS и Android — от 4 млн. Это стандартные цифры по рынку: по данным Surf и vc.ru, MVP нативного приложения в России стартует от 2 млн рублей за платформу.
Проблема в том, что слово «нативное» в этих переговорах произнёс не клиент. Его произнесли студии, которые продают нативную разработку. Клиент хотел конкретные вещи: иконку на экране, push, быструю загрузку, работу без тормозов. Ни одна из этих задач не требовала двух отдельных кодовых баз и публикации в сторах.
Почему мы предложили PWA: три раунда переговоров
Мы не сказали «вам не нужно нативное приложение» в первом же письме. Это было бы высокомерно и неубедительно. Разговор шёл в три этапа.
Первый раунд: разбор ТЗ. Прошлись по каждому пункту списка фич и задали вопрос: «Это точно требует нативного кода?» Каталог товаров — нет. Личный кабинет — нет. Push-уведомления — с оговорками, но тоже нет. Геолокация — работает в браузере. Камера — работает через Web API. Из 12 пунктов ТЗ ни один не требовал прямого доступа к нативным API устройства, который недоступен через веб.
Второй раунд: возражения. Главное сомнение — iOS. Клиент слышал, что «на айфонах PWA работают плохо». Это отчасти правда, и мы не стали это замалчивать (об этом ниже). Второе возражение — «а клиенты не будут скачивать из App Store?». Ответ: для бизнеса его масштаба отсутствие в сторе — не потеря, а экономия. Никакого органического трафика из App Store он бы не получил: его клиенты приходят из конкретных каналов, а не ищут приложение в каталоге.
Третий раунд: демо. Мы собрали прототип за два дня и показали на телефоне клиента. Иконка на экране, полноэкранный режим, мгновенная загрузка. Клиент сказал: «Подождите, это и есть приложение?» — и это был момент, когда решение стало очевидным.
Что умеет PWA — и чего до сих пор не умеет
Progressive Web App — это веб-приложение, которое ведёт себя как нативное: устанавливается на главный экран, работает в полноэкранном режиме, может отправлять push-уведомления и кешировать данные для оффлайн-доступа. Единая кодовая база для всех платформ.
Что работает хорошо на обеих платформах:
- Установка на главный экран — иконка неотличима от нативного приложения
- Оффлайн-режим — через Service Worker кешируются ключевые ресурсы
- Push-уведомления — на Android полностью, на iOS с версии 16.4
- Геолокация, камера, микрофон — через стандартные Web API
- Полноэкранный режим — без адресной строки браузера
Ограничения iOS: что мы сказали клиенту до подписания договора
Apple ведёт политику ограничения PWA, и это нужно проговаривать на берегу. Конкретно:
- Изолированное хранилище. Если пользователь залогинился на сайте через Safari, в установленном PWA он будет разлогинен. localStorage и cookies не шарятся между Safari и PWA. Для клиента это значило, что пользователю придётся войти в аккаунт заново после установки.
- Нет автоматического промпта установки. На Android браузер сам предлагает установить PWA. На iOS пользователь должен нажать «Поделиться → На экран Домой». Многие не знают об этом шаге. Мы заложили в интерфейс баннер с пошаговой инструкцией.
- Push-уведомления с ограничениями. Работают с iOS 16.4, но только если PWA установлено и пользователь явно дал разрешение. Фоновые уведомления без взаимодействия — нет. Background Sync недоступен.
- Только WebKit. Все браузеры на iOS используют один движок. Это значит, что обойти ограничения через Chrome или Firefox на iPhone не получится.
Клиент спросил: «Какой процент моей аудитории на iPhone?» — оказалось 35%. Мы показали, что базовый функционал работает для всех, а ограничения касаются edge-кейсов, с которыми можно жить. Решение было взвешенным, не эмоциональным.
Смета: куда ушли 400К и что было бы за 2 млн в нативе
Это главная часть, которую обычно не показывают. Вот реальное сравнение:
Подписывайся на Телеграм Вайблаб, чтобы наблюдать за тем, как мы строим AI-first компанию.
Напишите нам напрямую