Приложение для ресторана на Flutter и WebView: кейс гриль-баров
Клиенту — сети гриль-баров — не хватало ретеншена, а полноценное мобильное приложение для ресторана казалось ему слишком дорогим. Мы взяли Flutter, сделали часть экранов на WebView, часть на API и легко прошли модерацию. За 2 недели — 4000 установок в App Store и Google Play, пуши и бюджет в пределах 1 млн рублей.

Пришел тут к нам клиент и говорит мобильную версию вы сделали хорошую, но ретеншена не хватает. Мы такие: дак сделай мобильное приложение, вот тебе и пуши, и минимум кликов у пользователя. Он такой дорого же, для сети гриль-баров такое не окупится.
Поэтому мы взяли Flutter, который под кросс-платформу сразу и под iOS и Android. Сделали часть приложения на Webview, часть на API. И получилось рабочее приложение. Модерацию прошло легко.
За первые 2 недели получилось 4000 установок в AppStore и Google PlayMarket, подключили пуши. И все в пределах 1млн рублей.
Запуск, как понимаете, тоже сравнительно быстрый. Сейчас уже формируем неспешные планы по полному переводу на API.
Фактически нашли способ почти к любому сайту подключить мобильное приложение быстро и экономно.
Читать кейс тут: https://alto.codes/portfolio/shampuriko-app.html
Зачем ресторану своё приложение, если есть мобильная версия
Мобильная версия сайта хорошо принимает первый заказ. Вернуть человека во второй и третий раз она почти не помогает. Иконка на экране телефона и пуш-уведомление работают как напоминание, а сохранённый адрес и история заказов сокращают путь до повторной покупки до пары нажатий.
Удержание считают просто: какая доля клиентов, сделавших первый заказ, вернулась через 30, 60 и 90 дней. В приложении эта цифра видна по каждому пользователю, а на сайте без авторизации половина гостей остаётся анонимной. Уже одно это помогает понять, какие акции действительно возвращают людей.
Именно ретеншена не хватало клиенту из поста. Для сети общепита с частыми недорогими заказами повторные покупки дают основную выручку, поэтому вопрос не в красоте интерфейса, а в том, как часто гость возвращается.
- пуши об акциях, новых позициях и статусе заказа;
- повтор прошлого заказа одной кнопкой;
- сохранённые адреса и способы оплаты;
- программа лояльности и бонусы внутри приложения;
- выбор ближайшей точки по геолокации.
Нативное, кросс-платформенное или WebView: что выбрать
Стоимость мобильного продукта сильно зависит от подхода. Два отдельных нативных приложения на Swift и Kotlin — это две кодовые базы и две команды. Кросс-платформа и WebView сокращают объём работы, но у каждого варианта свои ограничения.
| Подход | Код | Сроки и бюджет | Ограничения |
|---|---|---|---|
| Нативные приложения | Swift для iOS, Kotlin для Android | Самые долгие и дорогие | Две команды и две поддержки |
| Кросс-платформа | Flutter или React Native, одна кодовая база | Заметно дешевле двух нативных | Сложные системные функции иногда требуют нативных модулей |
| Гибрид: Flutter + WebView | Часть экранов — страницы сайта, часть — нативные на API | Минимальные, если сайт уже есть | Экраны из WebView работают медленнее и зависят от вёрстки сайта |
| PWA | Сайт с возможностью установки на экран | Почти без доработок | На iOS пуши появились только в 2023 году, магазины приложений не участвуют |
Flutter для приложения ресторана
Flutter — открытый фреймворк Google на языке Dart. Стабильная версия 1.0 вышла в декабре 2018 года. Из одной кодовой базы собираются сборки для iOS и Android, интерфейс рисуется собственным движком и выглядит одинаково на обеих платформах. Для меню, корзины, профиля и истории заказов этого с запасом хватает.
WebView-приложение: что брать с сайта
WebView встраивает веб-страницу внутрь приложения. Удобно отдать туда то, что часто меняется и уже хорошо работает на сайте: каталог, акции, страницы с текстом. Корзину, авторизацию и пуши лучше делать нативно через API. Тогда приложение ощущается приложением, а не сайтом в рамке.
Этот баланс важен и для модерации. В правилах App Store есть пункт 4.2 о минимальной функциональности: приложение, которое просто показывает сайт, Apple может отклонить. Наш гибрид модерацию прошёл легко.
Как устроены пуш-уведомления
На iOS пуши доставляет сервис Apple Push Notification service, на Android — Firebase Cloud Messaging. Обычно оба канала подключают через Firebase, чтобы отправлять рассылки из одного места. Пользователь даёт разрешение при первом запуске, и от того, как попросить, зависит доля согласившихся.
Частота рассылок решает больше, чем текст. Ежедневные пуши об акциях быстро приводят к отключению уведомлений или удалению приложения.
Для общепита лучше всего работают служебные пуши: заказ принят, курьер выехал, заказ у двери. Их ждут, и они приучают открывать уведомления. Рекламные рассылки разумно ограничить одной-двумя в неделю и сегментировать: тем, кто заказывает по пятницам, присылать предложение в пятницу днём, а не в понедельник утром. Сегменты строят по истории заказов, которая в приложении есть с первого дня.
Из чего складываются сроки и бюджет
Бюджет гибридного приложения определяют три вещи: сколько экранов делать нативно, готов ли API на стороне сайта и сколько платформ нужно с первого дня. Если сайт уже отдаёт каталог и заказы через API, основная работа уходит на интерфейс и интеграцию пушей. Если API нет, его разработка легко становится самой большой статьёй.
Отдельно стоит учесть обязательные платежи площадкам. Аккаунт разработчика Apple Developer Program стоит 99 долларов в год. В Google Play регистрация разовая, 25 долларов. Ещё нужны время на модерацию, тестовые сборки через TestFlight и бюджет на обновления под новые версии систем.
Наш вариант уложился в 1 млн рублей вместе с пушами. Для сети, которой полноценное приложение казалось неокупаемым, это и решило вопрос.
План запуска по шагам
- проверить, какие разделы сайта можно показать через WebView без переделки;
- выделить нативные экраны: вход, корзина, оформление, профиль;
- подготовить API для этих экранов на стороне сайта;
- собрать приложение на Flutter и подключить пуши;
- пройти модерацию в App Store и Google Play;
- после запуска смотреть установки, повторные заказы и отписки от пушей;
- постепенно переводить WebView-экраны на API.
Типичные ошибки
Чаще всего бюджет съедают не экраны, а решения, принятые до старта.
- сразу заказывать два нативных приложения, не проверив спрос;
- показывать весь сайт через WebView и получить отказ на модерации;
- не продумать, зачем пользователю устанавливать приложение, кроме скидки за установку;
- забыть про поддержку: новые версии iOS и Android выходят каждый год;
- рассылать пуши слишком часто.
Вопросы и ответы
Сколько стоит мобильное приложение для сети гриль-баров?
Наше приложение для сети гриль-баров вместе с подключением пушей уложилось в 1 млн рублей.
Можно ли сделать приложение из сайта?
Да. Мы взяли Flutter и сделали часть приложения на WebView, часть на API. Так почти к любому сайту можно быстро и экономно подключить мобильное приложение.