Крупная финансовая компания собралась запускать новый продукт с мобильным приложением. Им нужно было быстрое решение для обеих платформ, и они начали выбирать между двумя кроссплатформенными фреймворками. Это были React Native и Flutter.
Когда эта компания обратилась к нам с проблемой выбора фреймворка, мы решили, помимо ответов на стандартные вопросы, показать им разницу на реальном примере, сделав MVP с минимальным функционалом (так как обе экспертизы присутствовали в нашей команде), которое ответит на многие их вопросы.
Проект: приложение с 2 экранами.
1 - считать данные с кредитной карты с помощью камеры
2 - чтение данных с кредитной карты с помощью NFC
Flutter;React Native
стабильные 60 fps;до 60 fps
хорошо справляется с анимациями; плохо справляется с тяжелыми анимациями
быстрый старт приложения;старт приложения занимает больше времени
поддержка 120 Гц дисплеев;
прогрев шейдеров;
Поддерживается google и коммьюнити;Поддерживается командой facebook
ими разрабатываются готовые библиотеки для использования, так же очень большое количество популярных библиотек от коммьюнити; большое количество библиотек, большое комьюнити, легче заходить, так как javascript очень распространен
Используются стабильные и быстрые мосты для доставки сообщений с (если необходимо) payload. Нативные библиотеки подключаются так же, как при разработке нативного приложения и используются так же. Так же можно открывать нативные экраны и использовать весь остальной нативный функционал;Для работы с нативом необходимо разрабатывать бриджи общения с нативом, которые сложны в разработке и до сих пор имеют несколько нерешенных проблем
Быстрая за счет hot reload, hot restart и системы виджетов. Большое количество уже готовых виджетов; Есть аналогичный hot refresh, но в большинстве случаев работает не стабильно, ломая работу библиотек. Javascript небезопасен, многие компоненты необходимо обновлять вручную
Виджет тестирование, юнит-тесты, интеграционное тестирование. SDK для тестов поставляется вместе с Flutter; Инструменты тестирования неэффективны, так как используются разные движки javacript для разных режимов отладки
Меньшее количество резюме и вакансий из-за относительной новизны, но Dart это смесь из других ООП языков, что значительно снижает порог входа в язык абсолютно незнакомому с ним человеку что влияет на качество и скорость подбора, выше средняя ЗП по СНГ; Большее количество вакансий и резюме, низкий порог входа за счет javascript, что больше негативно влияет на качество и скорость подбора
Не было flutter библиотеки для чтения номера карты. В нативной части библиотеки пришлось использовать часть кода из другой нативной библиотеки; Проблемы с версией gradle для подключения библиотек, долгая инициализация проекта, нерабочий релизник проекта из-за версий библиотек