Когда два основателя садятся выбирать мобильный стек, кто-то обычно открывает тред на Hacker News, и через час они спорят про Dart. Это неправильное обсуждение. К 2026 оба фреймворка отгружают продакшн-приложения в качестве App Store и Play Store, и разница между ними для маленькой команды даже близко не такая, как разница между отгрузить и не отгрузить.
Вот что реально имеет значение, когда стартап из двух основателей выбирает между React Native и Flutter, от человека, который отгрузил React Native к миллиону суммарных загрузок и послушал достаточно Flutter-докладов, чтобы быть честным.
Техническое сравнение — почти вничью
Производительность, рендеринг, размер бинарника, холодный старт, плавность анимаций. Оба фреймворка в пределах 10% друг от друга на любом бенчмарке, отражающем реальное приложение. Ты не отгрузишь худший продукт из-за того, что выбрал другой.
- React Native 0.77+ с новой архитектурой (Fabric, TurboModules, JSI) закрыл большую часть исторического отставания по производительности от Flutter.
- Flutter всё ещё впереди на сильно кастомном, тяжёлом UI с необычными анимациями — Skia/Impeller дают попиксельный контроль, который компонентная модель RN может приблизить, но не до конца.
- Оба имеют зрелый state management, зрелую навигацию, зрелые формы, зрелый deep linking.
- Оба имеют библиотеки анимаций, которые справятся с 95% того, что себе представляет основатель.
Если ты выбираешь по технике — ты выбираешь неправильно. Тайбрейкеры в другом месте.
Что реально имеет значение — 4 настоящих фактора
1. Текущее знание JavaScript (или Dart) у команды
Это единственный самый большой фактор. Сильно.
Если ты или твой ко-фаундер еженедельно отгружаете React-веб-приложения, React Native — это тот же язык, та же ментальная модель, тот же тулинг. Кривая обучения — это «выучить мобильно-специфичные API», а не «выучить новый язык и новую экосистему».
Если никто из вас не трогал JS всерьёз, но у одного сильный бэкграунд на Java/Kotlin/Swift, Dart ощущается естественнее. Это типизированный, классовый, объектно-ориентированный язык со знакомой формой.
Если у вас обоих нет никакого релевантного бэкграунда — это подброс монетки, и лучше выбирать то, что будет знать ваш первый наём.
2. Нужен ли вам и веб
Большинство основателей, говорящих «нам нужен мобильный», на самом деле нуждаются в мобильном + маркетинговый сайт + веб-админка + веб-встройка. Когда это посчитаешь, экосистема React Native раскрывается.
- React Native Web позволяет делиться компонентами (аккуратно, не идеально) между мобильным и вебом.
- Ваша веб-команда уже на React. Ваша мобильная команда уже на React. Вы нанимаете одного React-разработчика, и он контрибьютит в оба.
- Flutter Web существует, но это отдельный рендерер, отдельная история оптимизации, и вывод заметно тяжелее обычного веб-приложения. Для маркетингового сайта или SEO — Flutter Web жёсткое нет.
Если продукт — только мобильный и останется только мобильным годами — Flutter тут нейтрален. Если веб имеет значение сейчас или на 2-й год — RN выигрывает.
3. Рынок найма и скорость
Вы будете нанимать. Посмотри на цифры:
- React-разработчики: миллионы в мире. React Native-разработчики: низкие сотни тысяч, большинство — React-девы, которые подхватили RN.
- Flutter-разработчики: растёт, но меньший, более специализированный пул.
На практике это значит:
- RN-подрядчики дешевле и быстрее находятся. €40–€80/час сеньор, доступен за дни.
- Flutter-подрядчики — меньше, более специализированы, €60–€100/час сеньор.
Для стартапа из двух основателей, которому понадобится нанимать фрилансера на 2-недельный крунч — это реальный фактор. Пул RN глубже.
4. Хостинги / интеграции, от которых вы зависите
Большинство SaaS-инструментов отгружают SDK для React Native первыми, Flutter — вторыми, а иногда не отгружают Flutter-SDK вообще.
Sanity check из моих собственных проектов:
- Stripe: Оба. SDK RN чуть более отполирован.
- Sentry: Оба.
- Amplitude / PostHog / Mixpanel: Оба, у RN больше покрытия в доке.
- Экосистема Expo (push, auth, in-app purchases): Только RN. Это реальный выигрыш в продуктивности, если идёшь в RN + Expo.
- Специфические нишевые SDK (платёжные процессоры вне US/EU, ML-вендоры, IoT-мосты): Часто только RN. Проверь свои конкретные интеграции до того, как коммитишься.
Если продукт опирается на необычный SDK, потрать час на проверку его мобильной поддержки до выбора фреймворка.
Когда Flutter реально выигрывает
Я по дефолту про-RN (по причинам выше), но есть конкретные формы, где Flutter — правильный выбор:
- UI сильно кастомный и насыщен анимациями — как игры, с визуализациями, с нестандартным видом. Рендерер Skia/Impeller у Flutter даёт больше контроля с меньшим трением.
- Вам важен идентичный визуальный вывод на iOS и Android — пиксель в пиксель. Flutter относится к платформам единообразнее; RN — более уважительно к нативным компонентам.
- Десктоп важен как first-class цель — Flutter Desktop зрелее, чем десктопная история RN, которая сообществом.
- У вас команда с сильным Dart или сильным Java/Kotlin-бэкграундом и без JS-инерции.
- Вы глубоко строите под экосистему Google — ChromeOS, Android Auto, специфические Google SDK. Собственные инструменты Google предпочитают Flutter.
Ничего из этого не применимо к большинству стартапов из двух основателей, строящих iOS + Android приложение, подпираемое веб-дашбордом. Это применимо к конкретным формам продукта.
Когда React Native реально выигрывает
- В команде есть React (веб) люди.
- Нужны веб, мобильный, и в идеале — шарить компоненты.
- Вы используете Expo. Экосистема Expo — push-уведомления, OTA-обновления, библиотека in-app purchase, auth — делает RN ощущаемо в два раза проще, чем три года назад.
- Приложение — стандартная SaaS-форма — формы, списки, онбординг, настройки, пара кастомных экранов, платежи. Всё, что есть в типовом RN-стартере.
- Вы зависите от SDK, которые отгружаются RN-first.
- Вы хотите более широкий пул найма для подрядчиков.
Большинство моих клиентов попадают в этот список. Поэтому большая часть моей мобильной работы — RN.
Честная середина: это не так важно, как говорит интернет
Я отгружал в обоих. На одном и том же продукте дельта — может 15% скорости разработки, и её полностью заливает тем, ясен ли объём, сделан ли дизайн вовремя и принимает ли основатель решения в течение 48 часов.
Сеньор RN-дев отгрузит быстрее мидла на Flutter каждый раз. Сеньор Flutter-дев отгрузит быстрее мидла на RN каждый раз. Фреймворк — не твоё ограничение. Твоё ограничение — люди, бриф и темп.
Практический процесс выбора
Шесть вопросов, по порядку:
- Ты (основатель) или ко-фаундер пишете React/JS сегодня? → RN.
- Нужен маркетинговый сайт или веб-дашборд, делящий логику с мобильным? → RN.
- UI крайне кастомный, насыщенный анимациями или околоигровой? → Flutter.
- Есть готовая команда с сильным Dart, Kotlin или Java? → Flutter.
- Зависите от SDK, которые отгружаются только к одному фреймворку? → Проверьте и выберите тот, что поддерживается.
- Если ничего из выше не подходит чисто → По дефолту RN по причинам найма и экосистемы.
Это отвечает на большинство кейсов с двумя основателями за 30 секунд, правильно, без Reddit-треда.
Что я бы сказал нетехническому ко-фаундеру
Сначала выбирай разработчика, а он пусть выбирает фреймворк. Сеньор-инженер, отгружающий на том, что знает, стоит больше, чем мид-инженер, использующий то, что сказал интернет. Стек имеет значение только тогда, когда он тормозит отгрузку — а для стартапа из двух основателей отгрузка — это 80% игры.
Если не можешь сделать выбор — по дефолту бери React Native с Expo. У него самое широкое применение к формам продукта, которые реально строят маленькие стартапы, самый широкий пул найма и лучшая веб-история. Flutter может побить его на конкретных формах, но «по дефолту RN» — правильно для 70% основателей, с которыми я говорил.
Если хочешь час честного думания о твоём конкретном продукте — какой стек, какая команда, какая последовательность — я сделаю 20-минутный скоупинг-созвон и скажу прямо. Даже если ответ — «найми кого-то другого, не меня». Записаться на созвон.