«Нативная разработка лучше» — фраза, за которой обычно стоит не аргумент, а привычка. На практике вопрос звучит иначе: что дешевле и быстрее даст вам работающий продукт нужного качества. Иногда это нативная разработка, гораздо чаще — кроссплатформа. Разбираемся без догм.

01 · Три варианта, если по-честному

Под капотом выбор всегда между тремя путями:

  • Две нативные команды. Отдельно iOS (Swift) и отдельно Android (Kotlin). Максимальный контроль над платформой — и почти двойная стоимость и сроки.
  • Flutter. Одна кодовая база на Dart, компилируется в нативный код под обе платформы. Своя система отрисовки — приложение выглядит одинаково везде.
  • React Native. Одна кодовая база на JavaScript/TypeScript, использует нативные компоненты платформы.

Flutter и React Native — это и есть «кроссплатформа»: один код вместо двух. Именно отсюда берётся экономия.

02 · Что «одна кодовая база» значит для бюджета

Главная цифра простая: две нативные команды — это примерно две стоимости и два срока. Кроссплатформа пишется один раз и собирается в обе сторы. На реальном проекте это экономит около трети бюджета мобильной части и столько же времени — при сопоставимом для большинства задач качестве.

Кроссплатформа выигрывает не потому, что «технически круче», а потому что вы платите за один код вместо двух — а пользователь разницы не замечает.

Плюс одна команда — это один источник правды. Не бывает, что фича на iOS уехала вперёд, а на Android отстала на спринт, потому что это две разные команды с разными приоритетами.

03 · Когда нужна именно нативная

Честно — есть задачи, где нативная разработка оправдана:

  • Тяжёлая графика и игры. 3D, сложные игровые движки, AR с высокой нагрузкой.
  • Глубокая работа с «железом». Нестандартные сценарии с Bluetooth, NFC, камерой на пределе возможностей, фоновая обработка сигналов.
  • Платформенные фишки на грани. Когда нужна самая свежая возможность iOS или Android в день её выхода.

Если ваш продукт — это бизнес-приложение, маркетплейс, сервис, кабинет, доставка, лояльность — почти наверняка это не ваш случай, и кроссплатформа подойдёт идеально.

04 · Flutter vs React Native на практике

Если кроссплатформа — то какая? Коротко, без холивара:

  • Внешний вид. Flutter рисует интерфейс сам — приложение выглядит идентично на iOS и Android, дизайн под полным контролем. React Native опирается на нативные компоненты — ближе к «родному» виду каждой платформы, но больше расхождений между ними.
  • Производительность. Flutter компилируется в нативный код, анимации и сложные интерфейсы идут плавно. Для насыщенных экранов это заметный плюс.
  • Команда. React Native удобен, если у вас уже есть веб-команда на React. Flutter — отдельный язык (Dart), но он быстро осваивается и даёт более предсказуемый результат на мобильных.

05 · Почему мы по умолчанию на Flutter

Наши проекты — сеть магазинов с 1С, таксопарк с real-time, AI-приложение для садоводов — все сделаны на Flutter, и причины у нас прагматичные:

  • Один код — две сторы. RuStore, App Store, Google Play из одной кодовой базы. Для российского рынка, где RuStore обязателен, это особенно важно.
  • Предсказуемый дизайн. Что нарисовали — то и видит пользователь на любом устройстве. Меньше сюрпризов на сдаче.
  • Скорость и поддержка. Меньше кода — меньше мест для багов и дешевле развитие после релиза.

Это не значит «Flutter всегда». Это значит, что для бизнес-приложений он по умолчанию даёт лучшее соотношение цена/срок/качество, и нужен веский повод выбрать иначе.

06 · Как выбрать под свой проект

  1. Это игра или тяжёлая графика? Да — нативная или игровой движок. Нет — кроссплатформа.
  2. Нужны редкие возможности «железа» на пределе? Да — возможно, нативная. Нет — кроссплатформа.
  3. Бюджет ограничен, а нужны обе платформы? Кроссплатформа — почти всегда.
  4. Уже есть React-команда? React Native может сэкономить на людях. Иначе — Flutter.

А как мы вообще принимаем это решение на проекте — подробно в статье «Как мы выбираем стек». Если хотите ответ под свою задачу — опишите её, и на бесплатном «Разборе» мы назовём конкретный стек с обоснованием.