Перейти к основному содержанию
Мобильные приложения3 мин чтения

Нативное или кроссплатформенное приложение: как выбрать

Спор «нативно или кроссплатформенно» решается не вкусом, а требованиями продукта. Разбираем, какие требования склоняют выбор в каждую сторону.

Смартфон на тёмном столе с абстрактным интерфейсом приложения на экране

Нативная разработка означает два отдельных приложения: одно на Swift для iOS, второе на Kotlin для Android. Кроссплатформенная — один код, который собирается в приложения для обеих платформ. Разница в стоимости заметная, поэтому вопрос возникает почти в каждом проекте.

Что реально отличается

Сравнение подходов по значимым для заказчика параметрам
ПараметрНативноКроссплатформенно
Стоимость первой версииОриентировочно вдвое вышеБазовая
Скорость выпуска измененийДве команды, два циклаОдин цикл на две платформы
Доступ к новым возможностям ОССразу после выходаПосле поддержки во фреймворке
Сложная графика и анимацияПолный контрольЕсть ограничения
Размер приложенияМеньшеБольше на несколько мегабайт
Поиск разработчиковОтдельно под каждую платформуОдин стек

Когда нужна нативная разработка

  • Продукт живёт за счёт тяжёлой графики: игры, редакторы видео, дополненная реальность.
  • Нужна постоянная работа с камерой в реальном времени, обработка кадров или звука на устройстве.
  • Приложение обязано поддерживать функции операционной системы в день их выхода.
  • Требуется глубокая работа с Bluetooth, NFC или специфическим оборудованием.
  • Есть жёсткие требования к энергопотреблению при длительной фоновой работе.

Когда кроссплатформенная разработка выигрывает

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

Один экран работает на iOS и Android, платформенные отличия учтены точечно
import { Platform, StyleSheet, Text, View } from "react-native"

export function ScreenHeader({ title }: { title: string }) {
  return (
    <View style={styles.header}>
      <Text style={styles.title}>{title}</Text>
    </View>
  )
}

const styles = StyleSheet.create({
  header: {
    // Отступ сверху различается: на iOS его задаёт вырез экрана,
    // на Android — системная строка состояния
    paddingTop: Platform.OS === "ios" ? 52 : 24,
    paddingHorizontal: 20,
    paddingBottom: 16,
    backgroundColor: "#111111",
  },
  title: {
    color: "#f5f5f5",
    fontSize: 22,
    // Системный шрифт платформы делает приложение «своим» для пользователя
    fontFamily: Platform.select({ ios: "System", android: "Roboto" }),
  },
})

Гибридный вариант, о котором забывают

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

Выбор платформы — это решение о стоимости владения на три года вперёд, а не о технологии на старте.

А нужно ли приложение вообще

Половине задач, с которыми к нам приходят за приложением, достаточно адаптивного веб-сервиса. Приложение оправдано, когда нужны push-уведомления, работа без сети, доступ к камере или когда клиент возвращается несколько раз в неделю. Если сценарий — «зашёл раз в квартал оплатить», иконка на экране телефона не появится.

  1. Опишите частоту возвращения пользователя: ежедневно, еженедельно, раз в месяц.
  2. Проверьте, нужны ли функции устройства, недоступные браузеру.
  3. Оцените, готовы ли вы поддерживать публикацию в двух магазинах приложений.
  4. Если ответы не дают уверенности, начните с веб-версии и соберите статистику.

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

Сколько стоит мобильное приложение
Простое приложение с авторизацией, каталогом и уведомлениями на кроссплатформенном стеке — от 600 тысяч рублей. Нативная разработка того же объёма обойдётся примерно вдвое дороже за счёт двух отдельных кодовых баз.
Можно ли переписать существующее приложение на кроссплатформенный стек
Да, и часто это делают постепенно: новые экраны пишут на общем коде, старые нативные остаются работать рядом. Такой переход растягивается, но не требует остановки развития продукта.
React Native или Flutter
Если в компании уже есть веб-разработчики на React, дешевле React Native: общий язык и часть переиспользуемой логики. Flutter даёт более предсказуемую отрисовку интерфейса и выигрывает в проектах с плотной анимацией.
мобильная разработкаReact NativeFlutterвыбор технологии

Похожая задача в вашем проекте?

Разберём вашу ситуацию и пришлём оценку по этапам — без обязательств и общих слов.

Обсудить задачу

Вопрос по статье
или по своему проекту

Отвечаем на заявки в течение одного рабочего дня. Если задача не наша — скажем прямо и подскажем, к кому обратиться.

Написать нам

Поля со звёздочкой обязательны для заполнения.