Рубріки: Решения

Flutter vs React Native: что выбрать для кроссплатформенной разработки?

Богдан Мирченко

Ситуация: на новом проекте вам нужно создать кроссплатформенное мобильное приложение и встает выбор между Flutter и React Native. Что позволит лучше и максимально быстро создать продукт, который будет одинаково хорошо работать как на iOS, так и на Android? Какой инструмент обеспечит лучшую производительность конечных приложений? Чтобы ответить на эти вопросы, разработчик под ником Shekhar провел сравнительный анализ обоих фреймворков. Вот какие выводы он сделал. 

Раунд 1

Если вы следили за спорами между React Native и Flutter, то, должно быть, знаете, что компоненты React Native транспилируются в компоненты iOS или Android, в то время как Flutter рендерит свой пользовательский интерфейс, используя собственный движок, основанный на двухмерном движке рендеринга под названием SKIA — подобно тому, как игровой движок делает свой собственный рендеринг. 

Победитель: Flutter. 

Раунд 2

Традиционно разработка на базе ОС была основана на виджетах, в отличие от разработки на базе браузера, которая полагалась на шаблоны и DSL. Были и исключения, такие как WPF/Silverlight, которые пытались привнести тот же механизм шаблонизации (XAML) в операционную систему, но они неоднократно терпели неудачу. 

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

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

Победитель: React Native. 

Раунд 3

Что насчет общей кодовой базы для мобильных и веб-версий? Есть два способа взглянуть на это. React Native дал возможность использовать скиллы React-разработчиков для разработки мобильных приложений. Здесь есть простые способы поддерживать единую кодовую базу для управления состоянием и поведением, абстрагируясь от экранов и компонентов. 

Microsoft также выпустила проект, который позволяет использовать React Native для веба. 

Flutter в свою очередь транспилируется в JavaScript для веба. Любая транспиляция плоха тем, что это негерметичная абстракция, из чего следует, что лучше избегать использования языка, который транспилируется в другой язык. 

Flutter также, возможно, предоставит возможность компиляции до веб-ассемблера (WASM), что позволит использовать общую кодовую базу для мобильных и веб-версий. WASM даст возможность поддерживать другие языки, а не только JavaScript. 

Есть мнение о том, что React Native и его JS-мост вызывают множество проблем с производительностью, но, по мнению автора, эта проблема скоро может быть решена. 

Победитель: React Native. В будущем — возможно, Flutter. 

Раунд 4

А какая технология популярнее — Flutter или React Native? По состоянию на 2021 год данные следующие: 

  • GitHub:
    • Flutter — 133 тыс. звездочек;
    • React Native — 99,5 тыс. звездочек.
  • Stack Overflow:

Google Trends оценивает Flutter выше, чем React Native. По мнению экспертов, это может быть вызвано новизной фреймворка (вышел в мае 2017 года, а React Native — в марте 2015-го). 

Победитель: нет явного. 

Раунд 5

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

Но если не принимать во внимание начальный этап, с Flutter быстрее запустить продукт, чем с React Native.

В целом, поскольку Flutter имеет много удобств для разработчиков, встроенных в сам фреймворк (развертывание, CI/CD, богатая библиотека компонентов, отладка, поддержка IDE), в этом он победитель. Но сторонние компоненты, такие как Expo, React Native Paper и fastlane, значительно облегчают эти задачи для React Native, в чем ему проигрывает Flutter. 

Победитель: с небольшим перевесом Flutter. 

Заключение

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

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

А какой технологии для кроссплатформенной разработки отдаете предпочтение вы? Пишите об этом в комментариях ниже.

Останні статті

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024