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

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

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

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

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

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

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023