Flutter vs React Native: что выбрать для кроссплатформенной разработки?
Ситуация: на новом проекте вам нужно создать кроссплатформенное мобильное приложение и встает выбор между Flutter и React Native. Что позволит лучше и максимально быстро создать продукт, который будет одинаково хорошо работать как на iOS, так и на Android? Какой инструмент обеспечит лучшую производительность конечных приложений? Чтобы ответить на эти вопросы, разработчик под ником Shekhar провел сравнительный анализ обоих фреймворков. Вот какие выводы он сделал.
Если вы следили за спорами между React Native и Flutter, то, должно быть, знаете, что компоненты React Native транспилируются в компоненты iOS или Android, в то время как Flutter рендерит свой пользовательский интерфейс, используя собственный движок, основанный на двухмерном движке рендеринга под названием SKIA — подобно тому, как игровой движок делает свой собственный рендеринг.
Победитель: Flutter.
Традиционно разработка на базе ОС была основана на виджетах, в отличие от разработки на базе браузера, которая полагалась на шаблоны и DSL. Были и исключения, такие как WPF/Silverlight, которые пытались привнести тот же механизм шаблонизации (XAML) в операционную систему, но они неоднократно терпели неудачу.
Плюс React Native — React под капотом, что позволяет использовать уже имеющиеся скиллы разработчика. Flutter же использует Dart — язык программирования нового поколения, который имеет более крутую кривую обучения, хотя и считается одним из лучших языков для разработки пользовательского интерфейса.
Во времена войны за таланты и частой смены работ, когда нельзя рассчитывать на наем лучших и их вечную занятость, это актуально как никогда. А еще как никогда ранее имеет смысл работать с ограниченным стеком технологий, но быть в них специалистом.
Победитель: React Native.
Что насчет общей кодовой базы для мобильных и веб-версий? Есть два способа взглянуть на это. React Native дал возможность использовать скиллы React-разработчиков для разработки мобильных приложений. Здесь есть простые способы поддерживать единую кодовую базу для управления состоянием и поведением, абстрагируясь от экранов и компонентов.
Microsoft также выпустила проект, который позволяет использовать React Native для веба.
Flutter в свою очередь транспилируется в JavaScript для веба. Любая транспиляция плоха тем, что это негерметичная абстракция, из чего следует, что лучше избегать использования языка, который транспилируется в другой язык.
Flutter также, возможно, предоставит возможность компиляции до веб-ассемблера (WASM), что позволит использовать общую кодовую базу для мобильных и веб-версий. WASM даст возможность поддерживать другие языки, а не только JavaScript.
Есть мнение о том, что React Native и его JS-мост вызывают множество проблем с производительностью, но, по мнению автора, эта проблема скоро может быть решена.
Победитель: React Native. В будущем — возможно, Flutter.
А какая технология популярнее — Flutter или React Native? По состоянию на 2021 год данные следующие:
Google Trends оценивает Flutter выше, чем React Native. По мнению экспертов, это может быть вызвано новизной фреймворка (вышел в мае 2017 года, а React Native — в марте 2015-го).
Победитель: нет явного.
Что касается продуктивности, на это тоже можно взглянуть с двух сторон. JavaScript уже закрепился на всех фронтах, Dart — новичок, хотя, возможно, и лучший. Таким образом с React Native все же проще и быстрее начать разработку.
Но если не принимать во внимание начальный этап, с Flutter быстрее запустить продукт, чем с React Native.
В целом, поскольку Flutter имеет много удобств для разработчиков, встроенных в сам фреймворк (развертывание, CI/CD, богатая библиотека компонентов, отладка, поддержка IDE), в этом он победитель. Но сторонние компоненты, такие как Expo, React Native Paper и fastlane, значительно облегчают эти задачи для React Native, в чем ему проигрывает Flutter.
Победитель: с небольшим перевесом Flutter.
Выбирайте React Native, если хотите использовать имеющиеся навыки разработчиков. В текущем сценарии войны за таланты это актуально как никогда, так как не всегда получается привлечь лучших специалистов.
Выбирайте Flutter, если нацелены в первую очередь на мобильные устройства и не возражаете против разработки двух приложений — одного для мобильных устройств и одного для веба — и у вас достаточно ресурсов.
А какой технологии для кроссплатформенной разработки отдаете предпочтение вы? Пишите об этом в комментариях ниже.
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…