React Native vs Real Native. Выбираем между нативной и кроссплатформенной разработкой
В чем хороша кроссплатформенная разработка на React Native, зачем JS-командам нужны нативщики, и в чем преимущества и недостатки обоих способов в реальном проекте. Кратко законспектировали техноверсус парней из Mercury Development с прошлого фестиваля, полную версию которого можно посмотреть в видео.
Но лучше не стоит: кажется, звукорежиссер не пережил афтепати, пришлось писать звук на старый андроид 🙂
Мы еще застали WebView и Phone Gap, писали на Xamarin и других фреймворках: набивали шишки, пробовали, разочаровались и снова пробовали, а в итоге забрасывали. И только с React Native вышло иначе. На RN пишем с 2017 года и с успехом выпустили в релиз 14 проектов. Этот фреймворк делает ровно то, что обещает.
Раунд 1. Цена и время
На React Native на одном из проектов удалось добиться до 95% повторного использования кода между iOS и Android. Вторую платформу получили по цене тестирования и дебаггинга, поэтому скорость разработки на RN выше.
Раунд 2. Требования к команде
Еще одно преимущество React Native перед нативной разработкой в экономии рабочих часов, но есть нюанс.
Был случай, когда писали 2000-часовой проект на React Native под iPad. Благодаря RN, нам удалось переписать приложение под Microsoft Surface за 11% дополнительного времени. Быстро пересобрали прогу, пофиксили баги и все заработало.
Не всегда модули React Native работают как надо. В таких случаях нам остается два варианта: менять некорректно работающий модуль на другие компоненты или чинить баги в нативном коде. В первом случае мы усложняем код, а для второго в команде должны быть нативные разработчики. Хорошо когда они сидят в соседнем кабинете и плохо, когда такой роскоши нет.
Wix.com переписали свое приложение на React Native, и сейчас в их команде сидят примерно 10% нативных разработчиков на случай возможных форс-мажоров.
Раунд 3. Сопровождение и развитие продукта
Стоимость
После релиза команда хочет как можно меньше ресурсов тратить на сопровождение проекта, а в интересах заказчика платить меньше за поддержку уже реализованного продукта. В этом смысле приложения на React Native дешевле и для заказчика, и для разработчика — на сопровождении нужен один JS-программист вместо двух нативных.
Feature Parity
Нативная разработка под Android и iOS не равна по времени. Чем дольше длится проект, тем сильнее расходятся код и архитектура. Как следствие, новая фича может ложиться на одну реализацию и не ложиться на другую.
Зависимости
React, как опенсорс-проект, собран из множества разных библиотек и сторонних компонентов, из-за чего количество зависимостей намного больше, чем в нативе. В 2017–2018 годах была огромная проблема с их стабильностью, рефакторингом и дебаггингом, но в последние год-два она практически исчезла и зрелые зависимости обновляются разработчиками быстро и часто.
Раунд 4. Look & Feel
Из коробки на React Native можно получить быстрый интерфейс с близким к нативному пользовательским опытом, а GUI накидывается в среднем в полтора раза быстрее.
С другой стороны, приложение с таким интерфейсом едва ли зафичерят в AppStore или Play Market — интерфейс приложения будет отличаться и не в пользу RN.
Раунд 5. Производительность
React Native хуже справляется с обработкой больших массивов данных. Кроме того, приложения на нем запускаются дольше, чем нативные приложения. Если нужна максимальная производительность — лучше выбрать нативную разработку.
Бонус React Native
Мобильное приложение на React Native легко превратить в веб-приложение и запустить на UWP.
Сравниваем
Что использовать
Эксперты из Меркури спорят касательно многих моментов, но сходятся в одном: все, что можно делать на React Native, нужно делать именно на нем. Конечно, при условии, что у вас сильная веб-команда. Вот только можно далеко не все: максимальная производительность, нативный UI или тесная синхронизация с аппаратными компонентами остается за нативной разработкой.
Приглашение на 404fest 2021
В этом году Фестиваль 404 пройдет 25-26 сентября в Самаре, в шикарном пятизвездочном отеле Лотте. В числе спикеров Руслан Фазлыев — программист из Ульяновска , продавший свой стартап за $500 млн, дизайнер и блогер Артемий Лебедев, лидеры сообщества «Веб-стандарты» Вадим Макеев и Никита Дубко, Юрий Ветров, Илья Бирман и еще много крутейших авторов со своим уникальным бэкграундом.
Промокод на 1000 рублей — VCRU
Приходите сами и друзей зовите 😎
С другой стороны, приложение с таким интерфейсом едва ли зафичерят в AppStore или Play Market — интерфейс приложения будет отличаться и не в пользу Реакта.
React Native как раз-таки стоит над платформой и оперирует платформенными примитивами. Если есть специальный платформенный UI Kit, то можно использовать его и никто не отличит React Native от не React Native приложения в плане Look & Feel. Что не скажешь, например, про Flutter.
Спасибо за уточнения!
Меня немного вымораживают приложения flutter непоследовательной поддержкой жеста свайпа вправо для перехода на предыдущий экран. Да, есть нюансы с эмуляцией виджетов платформы вместо использования виджетов.
React, как опенсорс-проект, собран из множества разных библиотек и сторонних компонентов, из-за чего количество зависимостей намного больше, чем в нативе. В 2017–2018 годах была огромная проблема с их стабильностью, рефакторингом и дебаггингом, но в последние год-два она практически исчезла и зрелые зависимости обновляются разработчиками быстро и часто.
На самом деле проблем с зависимостями, из которых собран React Native, нет. Да и на ранних этапах я их не помню. Другое дело, что сторонние либы для RN могут конфликтовать друг с другом. У нас был прям недавно такой кейс.
промокод смешной получился, коненчо
у вас jpeg головного мозга