Содержание

Для большинства бизнес-приложений — магазинов, сервисов записи, личных кабинетов — кроссплатформенная разработка на 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 и работа с внешними устройствами, сложная работа с камерой, дополненная реальность, виджеты и интеграции с системой. Кроссплатформенные решения это умеют, но через плагины, которые появляются с задержкой и иногда требуют нативного кода.

Признаки, что натив оправдан:

  1. Производительность критична: сложная графика, обработка видео и звука в реальном времени.
  2. Нужны самые новые возможности платформ сразу после их выхода.
  3. Много нестандартных интеграций с железом и системой.
  4. У компании уже есть сильные iOS- и Android-команды.

Промежуточный вариант: общая логика, нативный интерфейс

Kotlin Multiplatform позволяет писать общую бизнес-логику один раз, а интерфейс делать нативным для каждой платформы. Это компромисс для команд, которым важен нативный интерфейс, но не хочется дублировать логику.

Как выбрать технологию для своего приложения?

Выбирайте по требованиям продукта и составу команды, а не по популярности. Для типичного бизнес-приложения обычно достаточно кроссплатформенного решения, а натив оставляют для случаев, где без него действительно не обойтись.

Вопросы для решения:

  • Какие функции устройства нужны и есть ли для них зрелые плагины?
  • Насколько важен фирменный интерфейс, одинаковый на всех устройствах?
  • Есть ли в компании React-разработчики или веб на React?
  • Каков бюджет на разработку и поддержку двух платформ?
  • Как быстро нужно поддерживать новые версии iOS и Android?

Если вы ещё не решили, нужно ли приложение вообще, начните со статьи нужно ли бизнесу мобильное приложение.

Коротко

  • Кроссплатформенная разработка даёт одно приложение для iOS и Android дешевле и быстрее двух нативных.
  • Flutter — для фирменного интерфейса и сложных анимаций, одинаковых на всех устройствах.
  • React Native — если в компании уже есть React и веб-приложение на нём.
  • Натив — для глубокой работы с устройством, максимальной производительности и новейших возможностей платформ.
  • Kotlin Multiplatform — компромисс: общая логика и нативный интерфейс.

Частые вопросы

  • Заметят ли пользователи, что приложение кроссплатформенное?

    В хорошо сделанном приложении — нет. Разницу обычно замечают только в сложных анимациях, тяжёлой графике или при несоблюдении привычных для платформы паттернов интерфейса.

  • Можно ли перейти с кроссплатформы на натив позже?

    Можно, но это переписывание приложения. Бэкенд и API при этом сохраняются, поэтому важно, чтобы вся бизнес-логика жила на сервере, а приложение было тонким клиентом.

  • Сколько стоит поддержка кроссплатформенного приложения?

    Обычно меньше, чем двух нативных, потому что изменения делаются в одном коде. Но остаются обновления под новые версии iOS и Android, фреймворка и плагинов, которые нужно закладывать в бюджет.