Переворот в гробу
Я писал приложения как на React Native, так и на Flutter. Субъективная метрика, которую я использую для сравнения этих двух фреймворков - количество головной боли, которые они доставляют при разработке. И для меня Flutter по этому пункту уже на околоземной орбите.
Несколько минусов RN, которые меня не устраивают: 1. Так называемый nover - антоним semver. Это значит, что разработчик снимает с себя всю ответственность за обратную совместимость версий. RN яркий пример этого подхода, мажорная версия фреймворка = 0. 2. Dart с его статической типизацией далеко впереди по части обеспечения надежности и поддержки кода. TypeScript хорош, а некоторые фичи, особенно по части дженериков, мне хотелось бы использовать и в Dart, но он лишь маскирует проблему - компиляцию в JS и его выполнение. 3. React Native изначально выбрал хоть и рабочий, но неоптимальный путь передачи данных между js и нативом (злополучный бридж). С точки зрениния архитектуры фреймворков, Flutter выглядит более зрелым и, что наиболее важно, обладает стабильным API. RN и его "new arch" уже в печенках сидят.
Но важно помнить, что и Flutter, и React Native - лишь инструменты. При должном уровне пользователя на каждом из них можно делать качественные приложения. Наша задача, как инженеров - понимать границы возможностей технологий и грамотно использовать сильные стороны инструментов.
З.Ы. На написание этого поста меня натолкнуло это видео.