Содержание
Для большинства бизнес-приложений — магазинов, сервисов записи, личных кабинетов — кроссплатформенная разработка на Flutter или React Native даёт одно приложение для iOS и Android дешевле и быстрее двух нативных. Нативная разработка на Swift и Kotlin оправдана, когда приложение глубоко работает с железом, требует максимальной производительности или должно первым получать новые возможности платформ.
Разберём, чем отличаются подходы и как выбрать под свой продукт.
Чем кроссплатформенная разработка отличается от нативной?
Нативное приложение пишется отдельно для каждой платформы на её родном языке и инструментах: Swift для iOS, Kotlin для Android. Кроссплатформенное приложение пишется один раз и запускается на обеих платформах, а отличается способ, которым оно рисует интерфейс и обращается к системе.
| Критерий | Нативная (Swift, Kotlin) | Flutter | React Native |
|---|---|---|---|
| Язык | Swift и Kotlin | Dart | JavaScript или TypeScript |
| Кодовая база | Две отдельные | Одна | Одна |
| Интерфейс | Системные компоненты | Собственный движок отрисовки | Нативные компоненты платформы |
| Доступ к функциям устройства | Полный и сразу | Через плагины | Через модули |
| Новые возможности платформы | Доступны первыми | С задержкой, через плагины | С задержкой, через модули |
| Стоимость разработки | Выше: две команды или двойная работа | Ниже | Ниже |
| Переиспользование с вебом | Нет | Ограниченно | Логика и часть кода с React-вебом |
Когда выбирать Flutter?
Flutter стоит выбирать, когда нужен одинаковый и тщательно проработанный интерфейс на обеих платформах, а команда готова работать с Dart. Flutter рисует интерфейс собственным движком, поэтому приложение выглядит одинаково на любом устройстве, а анимации и нестандартный дизайн даются проще.
class OrderCard extends StatelessWidget {
const OrderCard({super.key, required this.order});
final Order order;
@override
Widget build(BuildContext context) {
return ListTile(
title: Text('Заказ №${order.number}'),
subtitle: Text(order.statusLabel),
trailing: Text('${order.total} ₽'),
);
}
}
Flutter хорошо подходит для приложений с фирменным дизайном, сложными анимациями, для внутренних приложений компании, где важны скорость разработки и единый вид на всех устройствах.
Когда выбирать React Native?
React Native стоит выбирать, когда у компании уже есть React-разработчики или веб-приложение на React: часть логики, подходы и даже людей можно переиспользовать. React Native использует нативные компоненты платформы, поэтому интерфейс выглядит привычно для пользователей iOS и Android.
export function OrderCard({ order }: { order: Order }) {
return (
<View style={styles.card}>
<Text style={styles.title}>Заказ №{order.number}</Text>
<Text>{order.statusLabel}</Text>
<Text>{order.total} ₽</Text>
</View>
)
}
Связку с React-вебом мы разбирали в статье Vue или React: возможность мобильного приложения на общей технологии — один из аргументов в пользу React.
Фото: Unsplash
Когда нужна нативная разработка?
Нативная разработка нужна, когда приложение глубоко использует возможности устройства или платформы: фоновые задачи, Bluetooth и работа с внешними устройствами, сложная работа с камерой, дополненная реальность, виджеты и интеграции с системой. Кроссплатформенные решения это умеют, но через плагины, которые появляются с задержкой и иногда требуют нативного кода.
Признаки, что натив оправдан:
- Производительность критична: сложная графика, обработка видео и звука в реальном времени.
- Нужны самые новые возможности платформ сразу после их выхода.
- Много нестандартных интеграций с железом и системой.
- У компании уже есть сильные iOS- и Android-команды.
Промежуточный вариант: общая логика, нативный интерфейс
Kotlin Multiplatform позволяет писать общую бизнес-логику один раз, а интерфейс делать нативным для каждой платформы. Это компромисс для команд, которым важен нативный интерфейс, но не хочется дублировать логику.
Как выбрать технологию для своего приложения?
Выбирайте по требованиям продукта и составу команды, а не по популярности. Для типичного бизнес-приложения обычно достаточно кроссплатформенного решения, а натив оставляют для случаев, где без него действительно не обойтись.
Вопросы для решения:
- Какие функции устройства нужны и есть ли для них зрелые плагины?
- Насколько важен фирменный интерфейс, одинаковый на всех устройствах?
- Есть ли в компании React-разработчики или веб на React?
- Каков бюджет на разработку и поддержку двух платформ?
- Как быстро нужно поддерживать новые версии iOS и Android?
Если вы ещё не решили, нужно ли приложение вообще, начните со статьи нужно ли бизнесу мобильное приложение.
Коротко
- Кроссплатформенная разработка даёт одно приложение для iOS и Android дешевле и быстрее двух нативных.
- Flutter — для фирменного интерфейса и сложных анимаций, одинаковых на всех устройствах.
- React Native — если в компании уже есть React и веб-приложение на нём.
- Натив — для глубокой работы с устройством, максимальной производительности и новейших возможностей платформ.
- Kotlin Multiplatform — компромисс: общая логика и нативный интерфейс.
Частые вопросы
Заметят ли пользователи, что приложение кроссплатформенное?
В хорошо сделанном приложении — нет. Разницу обычно замечают только в сложных анимациях, тяжёлой графике или при несоблюдении привычных для платформы паттернов интерфейса.
Можно ли перейти с кроссплатформы на натив позже?
Можно, но это переписывание приложения. Бэкенд и API при этом сохраняются, поэтому важно, чтобы вся бизнес-логика жила на сервере, а приложение было тонким клиентом.
Сколько стоит поддержка кроссплатформенного приложения?
Обычно меньше, чем двух нативных, потому что изменения делаются в одном коде. Но остаются обновления под новые версии iOS и Android, фреймворка и плагинов, которые нужно закладывать в бюджет.



