Вопрос обычно задают как технический, а решается он экономикой: две кодовые базы стоят почти вдвое дороже одной и всегда дороже в поддержке.
Что даёт кроссплатформа
Одна кодовая база, одно поведение на обеих платформах, релизы одновременно, один набор багов вместо двух. Мы делаем на Flutter: наш собственный маркетплейс написан на нём, и это приложение с платежами, чатом, загрузкой видео и ИИ-студией внутри — то есть не витрина.
Для подавляющего большинства продуктов вопрос на этом закрывается.
Когда честный ответ — нативно
Продукт живёт на возможностях платформы. Тяжёлая работа с камерой в реальном времени, обработка звука, фоновая геолокация как основа продукта, системные виджеты и глубокие интеграции с ОС.
Частота кадров решает. Игры, AR, всё, что должно быть идеально плавным. Это не наш профиль, и мы скажем это прямо.
У вас уже есть нативная команда. Технически правильный выбор, который развалит процесс, — плохой выбор.
Чего кроссплатформа НЕ означает
Не означает, что можно не тестировать на обеих платформах. Android убивает фоновые приложения охотнее, разрешения ведут себя иначе, платёжные шторки выглядят по-разному. Одна кодовая база — не одна среда.
Не означает экономию на бэкенде: он тот же самый и часто дороже клиента.
Не означает, что вторая платформа бесплатна. Она дешёвая, но тестирование, публикация и ревью удваиваются.
Что это значит для сроков и денег
Разница считается не в процентах на строку кода, а в том, сколько раз надо
сделать одну и ту же работу.
Экраны и логика пишутся один раз вместо двух — это основная экономия, и она
заметна сразу.
Платформенные куски всё равно делаются дважды: пуши, оплата в приложении,
разрешения, работа в фоне. Их немного, но они всегда есть, и подрядчик, который
обещает «ноль платформенного кода», либо не делал этого, либо не считает то, что
уже написал за него автор библиотеки.
Проверка и публикация — двойные в любом случае: два стора, два ревью, два
набора устройств. Тестировать приложение [надо на обеих платформах и на живых
устройствах](/ru/services/test-automation), а не на эмуляторе: половина
интересных отказов случается именно на настоящем телефоне.
Итог в наших проектах: кроссплатформа даёт экономию порядка трети на первой
версии и больше — на втором году, когда каждая правка делается один раз, а не
дважды.
Что делать, если вы уже начали нативно
Частый случай: есть iOS-приложение, теперь нужен Android, и вопрос звучит как
«переписать всё или добавить вторую нативную команду».
Третий вариант — оставить рабочее приложение как есть, а вторую платформу
сделать кроссплатформенной, договорившись, что общий у них только сервер.
Звучит как компромисс и обычно им и является: вы получаете вторую платформу
быстрее и дешевле, но живёте с двумя интерфейсными кодовыми базами вместо одной.
Разумно это тогда, когда первое приложение уже приносит деньги и трогать его
рискованно. Неразумно — когда оно ещё меняет форму: тогда дешевле один раз
свести всё к одной базе и дальше идти вдвое быстрее.
Как решить за один разговор
Назовите три вещи: что приложение делает, где им пользуются и есть ли внутри деньги. Этого хватает, чтобы дать честный ответ, а не продать то, что удобнее.
У нас первый релиз на обеих платформах стоит от 800 000 ₽ и занимает восемь недель. Если после разговора окажется, что вам нужно нативно, мы так и скажем — даже когда это значит, что заказ не наш.
Кстати, спросите заодно, как подрядчик тестирует то, что живёт вне приложения: системное окно разрешений, платёжную шторку, пуш на заблокированном экране. Мы это гоняем автотестами на живом устройстве, и таких сценариев у нашего приложения тридцать.
Соседний разбор: сколько стоит разработка мобильного приложения и что двигает эту цифру.