Разработка на Flutter как альтернатива для кроссплатформы
Сергей Пономарев
CTO
Кроссплатформенным фаворитом для разработки MVP был и остается React Native. К счастью, разработка не отношения. Смотреть по сторонам можно и нужно.
Опубликовано
•
Nov 15, 2019
Обновлено
•
Sep 9, 2025
Ребята из Google завезли новую технологию, которую я изучил вдоль и поперек. Как самостоятельную SDK, так и в сравнении с React Native. Об этом и расскажу в статье.
Кому советую читать:
Разработчикам, которые хотят прокачивать скилы в кроссплатформе и примеряют на себя варианты с разработкой на Flutter и React Native.
Продуктовым менеджерам, которые хотят разработать приложение для iOS и Android и ищут подходящую технологию.
А теперь давайте к делу.
Чем интересна разработка на Flutter
Недельный “заныр” помог мне раскопать несколько особенностей этого фреймворка.
Вот, что я узнал:
Cравним по простоте с разработкой веба. Все пишется на языке Dart, который похож на смесь JavaScript и Java. Это обеспечивает низкий порог вхождения для разработчиков из веба и нативки.
Dart — простой для всех, кто знаком с ООП-ориентированными языками. Язык соответствует всем аспектам этой методологии и реализует её через синтаксис. При этом, в отличие от той же Java, в Dart можно иметь функции высшего уровня.
Dart — многопоточный язык (в отличие от JS). Это значит, что разработчики, более не сдерживаемые интерпретатором JS AFAIK, могут работать с потоками и фьючерами, открывая поле для настоящего реактивного программирования.
Стопроцентно работающий hot reload в разработке на Flutter. Киллер-фича, которая помогает легко “пересобирать” проект и экспериментировать: добавлять и убирать новый функционал, править ошибки “на лету”.
Подход для работы с состоянием взят из концепции React. Виджеты ( или компоненты для мира веба) перерисовываются по необходимости, когда что-то меняется в состоянии приложения. Можно спокойно подключить тот же redux (например, fish redux от Alibaba) и получить однонаправленный поток — это позволит управлять состоянием приложения, прямо как в React Native.
Интерфейс разбивается на отдельные модули, как и в React Native. Привычные JS-разработчику компоненты тут зовутся виджетами, и интерфейс легко считывается как иерархия этих виджетов, вложенных друг в друга.
Имеет систему готовых плагинов и библиотек в рамках pub. Достаточно зайти на сайт мендежера пакетов и перевести ползунок на Flutter.
2600 репозиториев —вполне достойно для молодой технологии
Работает как с http(s) запросами, так и с вебсокетами. Поддерживает GraphQL и все популярные библиотеки.
Важнейшие библиотеки уже вышли. Постоянно добавляются новые. Нет ощущения брошенности платформы.
Разработка на Flutter или React Native
Чтобы получить максимально четкую картинку, я столкнул лбами Flutter и то, что уже проверено на поле битв. Мои “проектные битвы” проходят с React Native, поэтому начну с него. А выделить могу вот что:
Простая технология. React Native — легкий способ войти в мобильную кроссплатформенную разработку для тех, кто привык работать на JavaScript.
Обширное коммьюнити. За четыре года RN накопил тонны библиотек и готовых решений. Любая проблема в большинстве случаев решается через поиск в Google.
React Native “цветет и пахнет”. Звезды, форки и быстро закрывающиеся issues тому подтверждение
Возможность обернуть нативный код в JS. Если разработчик умеет писать нативный код, перенос части вычислений на нативный уровень и последующий sharing кода между платформами поможет избежать проблем с производительностью.
А теперь смотрим, что этому может противопоставить разработка на Flutter:
Фреймворк схож по скорости с нативными решениями. Никакого JS тут нет, Dart компилируется напрямую в бинарный код. Таким образом, скорость выполнения операций такая же, как в Objective-C, Swift, Java или Kotlin.
Нормальная виртуальная машина. Не нужно беспокоиться о линковании библиотек (одна из главнейших головных болей RN), проблемах несовместимости на нативном уровне, поскольку весь код будет выполняться из-под Dart VM.
Многопоточность. В отличие от JS, можно полноценно работать с потоками. Прелесть да и только!
“Под капотом” Skia, а не нативные компоненты. Для отрисовки каждого пикселя Flutter использует Google Skia. Нет необходимости проектировать интерфейс отдельно под iOS и Android, Skia всё отрисует идентично, с поправкой на особенности местного UI (если необходимо)
Анимации на уровне 120 фпс. В этом плане разработка на Flutter успела обогнать не только RN, но и нативные языки. А все из-за движка Skia, который вкупе с местным фреймворком для анимаций, выдает быстрый результат.
А вот в чем разработка на Flutter заметно проседает:
Менее развитое комьюнити. “Зеленый” Dart явно уступает устоявшемуся JavaScript. (есть шанс, что когда-то это изменится).
Меньше библиотек. Из-за в процессе разработки на Flutter многие базовые вещи, например, компоненты и сервисы, приходится писать вручную. В то время, как в React Native это же самое может быть реализовано одной из либ.
Сложно внедрять в проекты. Для работы с легаси-кодом придётся переписывать всё под Dart, в то время, как React Native можно использовать, вынося часть унаследованного нативного кода внутри нового проекта.
Больше кода не “под капотом”. Собственный графический движок повышает производительность, но заставляет писать так много, как этого требует SDK.
{{tg-banner}}
Что в итоге?
Для кроссплатформы React Native — это верный боевой солдат. Он успел пройти огонь, воду и медные трубы. Показал себя в сражениях. С таким все четко и без сюрпризов. И это прекрасно.
React Native — это верный солдат, а “хайпует” разработка на Flutter
Разработка на Flutter? Или все-таки React Native? Один предпочтет не проверять судьбу проект на прочность и выберет зарекомендовавшую себя технологию. Другому понравится идея разрабатывать на чем-то “хайповом”. Окончательный выбор за вами — других вариантов и быть не может 🙂
Чтобы вы могли быстрее сориентироваться, предлагаю ответить на несколько вопросов.
Готова ли кодовая база к росту на этой платформе? Если проект на нативных языках и вам не хочется переписывать код на Dart, React Native вам в помощь.
Сложно ли это в поддержке? Если вы работали с Dart, нативными языками и жаждете нового, можно легко поддерживать унаследованный код на Flutter. Гуру в JavaScript и тем, кто только начинает программировать уверенно советую прокачиваться в React Native.
Нужны быстрые анимаций с высокой степенью оптимизации? Несколько решений для внедрения достойных анимаций (например, Lottie от AirBnb) присутствуют и в React Native, но Flutter на несколько шагов впереди.
Горят ли сроки? (всегда горят) Чем больше библиотек и готовых решений, тем быстрее и проще разрабатывать. Если главный приоритет — “по-быстрому выкатиться на рынок с MVP”, разработка на Flutter будет не самым лучшим решением. React Native — вот ваше спасение.
Каким будет будущее разработки на Flutter и React Native? Рынок рассудит 🙂
Делимся, как сэкономить время и бюджет — на запуске, в разработке и при масштабировании. Регулярно рассказываем о наших кейсах. Каждый месяц зовем экспертов по нишевым темам на вебинары