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, если нацелены в первую очередь на мобильные устройства и не возражаете против разработки двух приложений — одного для мобильных устройств и одного для веба — и у вас достаточно ресурсов.
А какой технологии для кроссплатформенной разработки отдаете предпочтение вы? Пишите об этом в комментариях ниже.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: