Кроссплатформенные фреймворки: один код — разные результаты
Подкаст

Кроссплатформенные фреймворки: один код — разные результаты

Flutter, React Native, Jetpack Compose Multiplatform — в чем разница?
Кроссплатформенные фреймворки: один код — разные результаты

Кроссплатформенная разработка позволяет создать приложение для iOS, Android и других платформ с одной кодовой базой. Это хорошо для бизнеса — быстрее запуск, меньше затрат, проще поддержка.

На первый взгляд, технология уже выбрана — можно переходить к разработке. Но это не совсем так: внутри кроссплатформенного подхода есть варианты, которые влияют на стоимость продукта, time-to-market, скорость запуска и другие моменты. Речь о фреймворках, «каркасах» для кода, с которыми работают разработчики.

Flutter — самый популярный кроссплатформенный фреймворк по версии Statista (2023) и Stack Overflow. Поддерживается Google, используется как стартапами, так и крупными компаниями (BMW, Toyota, Tesla).

React Native — разработан компанией Meta (запрещена в РФ), входит в топ-5 кроссплатформенных фреймворков по данным Stack Overflow. Его часто выбирают команды, у которых есть опыт разработки web-приложений на языке JavaScript.

Jetpack Compose Multiplatform — фреймворк от JetBrains и Google. Подходит командам, которые уже используют язык программирования Kotlin — как в мобильной, так и в backend-разработке.

Производительность

Flutter

Интерфейс мобильных приложений на Flutter работает напрямую через собственный графический движок Impeller и не зависит от системных компонентов операционной системы. Благодаря этому есть стабильность и быстрая реакция на действия пользователя — даже если графика сложная.

Интеграция Bluetooth или камеры может внести неопределенность в сроки разработки. Почему? Разные чипсеты (наборы микросхем), оборудование, которое требует вносить изменения в нативные API Android или iOS. Например, плагин для работы с камерой предоставляет только стандартные API, но их недостаточно, если нужна сложная обработка изображений или уникальные режимы съемки.

Как минимизировать риски? Заранее проводить тщательный анализ функционала и обязательно добавлять буфер по времени.

Юрий Петров, Tech Lead Friflex

React Native

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

Приложения на React Native работают стабильно как в простых сценариях (каталог, личный кабинет), так и при сложных интерфейсах, где много интерактивных элементов.

Jetpack Compose Multiplatform

Интерфейсы на Android и iOS работают через нативные компоненты. Код связывается напрямую с платформой — это дает полный доступ к системным функциям (Bluetooth, камере и другим) без задержек. Уровень реализации сложных элементов интерфейса — почти нативный.

Скорость запуска

Сроки запуска зависят от проекта — сложности интерфейса, количества платформ, бизнес-требований и состава команды. Ниже — ориентиры для базовой версии продукта (MVP), над которой работает опытная команда.

Flutter

На разработку потребуется 5–8 недель. Один специалист может параллельно писать код под Android, iOS и другие платформы — это сокращает время релизов.

React Native

MVP можно создать за 5–8 недель, сразу для Android и iOS. Благодаря общей архитектуре и коду, время на адаптацию под разные платформы снижается.

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

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

Юрий Волковский, frontend-разработчик Friflex

Jetpack Compose Multiplatform

Сроки зависят от задач и состава команды. При работе в одном Kotlin-стеке MVP на Android можно собрать за 5-7 недель и параллельно адаптировать под iOS и desktop. Благодаря общей бизнес-логике и стабильной поддержке iOS, скорость разработки не уступает другим фреймворкам.

Совместимость с платформами

Flutter

Поддерживает Android, iOS, web, Windows, macOS и Linux, а также приложение на Flutter можно адаптировать для ОС Аврора и Harmony OS. Доступны как мобильная версия, так и desktop.

React Native

Поддерживает Android и iOS. Есть неофициальные решения для Windows (например, от Microsoft) и macOS, но они не входят в основной roadmap.

Jetpack Compose Multiplatform

Jetpack Compose Multiplatform поддерживает Android, iOS и desktop — Windows, macOS и Linux. Web-поддержка — пока в экспериментальной стадии.

Compose Multiplatform уже стабильно работает и на Android, и на iOS. Один стек на Kotlin позволяет использовать, например, общие контракты для мобильной и серверной разработки. Также возможность в любой момент получить доступ к платформе напрямую позволяет реализовать любой сценарий через expect/actual типобезопасным (type safety) способом.

Алексей Гладков, автор проекта Mobile developer

Стоимость разработки

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

Flutter

Команда: найти опытных Flutter-разработчиков сложно — спрос превышает предложение, особенно на уровне middle и senior.

Код: до 90% общего кода для iOS, Android и других платформ — это снижает затраты на запуск и поддержку.

Дополнительные расходы: возможны при интеграции с системными функциями.

React Native

Команда: один из самых доступных стеков — много специалистов с опытом JavaScript и React.

Код: 70–80% общего кода ускоряют релизы, но UI требует доработки под платформы.

Дополнительные расходы: могут быть связаны с улучшением производительности.

Jetpack Compose Multiplatform

Команда: Kotlin — основной язык для Android и backend-разработки, специалистов найти несложно.

Код: 70–90% общего кода охватывают бизнес-логику и архитектуру. UI адаптируется под каждую платформу, но без дублирования логики.

Дополнительные расходы: могут возникнуть при работе с web и глубокой кастомизацией интерфейса, особенно на desktop.

В двух словах

Flutter — поддерживает iOS, Android, web и desktop. Стабильный, плавный интерфейс для сложных и визуально насыщенных приложений. Позволяет быстро запускать MVP для разных платформ одной командой.

React Native — подходит для Android и iOS. Легко найти команду, особенно при наличии web-экспертизы.

Jetpack Compose Multiplatform — поддерживает Android, iOS и desktop. Подходит для команд с опытом в Kotlin, до 90% общего кода сокращают сроки разработки.

Подробнее о кроссплатформенной разработке — читайте в статье.

Получить консультацию по разработке приложения

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