React Native vs Real Native. Выбираем между нативной и кроссплатформенной разработкой

В чем хороша кроссплатформенная разработка на React Native, зачем JS-командам нужны нативщики, и в чем преимущества и недостатки обоих способов в реальном проекте. Кратко законспектировали техноверсус парней из Mercury Development с прошлого фестиваля, полную версию которого можно посмотреть в видео.

Но лучше не стоит: кажется, звукорежиссер не пережил афтепати, пришлось писать звук на старый андроид 🙂

Мы еще застали WebView и Phone Gap, писали на Xamarin и других фреймворках: набивали шишки, пробовали, разочаровались и снова пробовали, а в итоге забрасывали. И только с React Native вышло иначе. На RN пишем с 2017 года и с успехом выпустили в релиз 14 проектов. Этот фреймворк делает ровно то, что обещает.

Павел Белобородов, Главный по развитию бизнеса и PM в Mercury Development

Раунд 1. Цена и время

На React Native на одном из проектов удалось добиться до 95% повторного использования кода между iOS и Android. Вторую платформу получили по цене тестирования и дебаггинга, поэтому скорость разработки на RN выше.

React Native vs Real Native. Выбираем между нативной и кроссплатформенной разработкой

Раунд 2. Требования к команде

Еще одно преимущество React Native перед нативной разработкой в экономии рабочих часов, но есть нюанс.

Был случай, когда писали 2000-часовой проект на React Native под iPad. Благодаря RN, нам удалось переписать приложение под Microsoft Surface за 11% дополнительного времени. Быстро пересобрали прогу, пофиксили баги и все заработало.

Павел Белобородов, Главный по развитию бизнеса и PM в Mercury Development

Не всегда модули React Native работают как надо. В таких случаях нам остается два варианта: менять некорректно работающий модуль на другие компоненты или чинить баги в нативном коде. В первом случае мы усложняем код, а для второго в команде должны быть нативные разработчики. Хорошо когда они сидят в соседнем кабинете и плохо, когда такой роскоши нет.

Михаил Самолинов

, Отвечает за мобильную разработку в Mercury Development, PM

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 vs Real Native. Выбираем между нативной и кроссплатформенной разработкой

Что использовать

Эксперты из Меркури спорят касательно многих моментов, но сходятся в одном: все, что можно делать на React Native, нужно делать именно на нем. Конечно, при условии, что у вас сильная веб-команда. Вот только можно далеко не все: максимальная производительность, нативный UI или тесная синхронизация с аппаратными компонентами остается за нативной разработкой.

Приглашение на 404fest 2021

В этом году Фестиваль 404 пройдет 25-26 сентября в Самаре, в шикарном пятизвездочном отеле Лотте. В числе спикеров Руслан Фазлыев — программист из Ульяновска , продавший свой стартап за $500 млн, дизайнер и блогер Артемий Лебедев, лидеры сообщества «Веб-стандарты» Вадим Макеев и Никита Дубко, Юрий Ветров, Илья Бирман и еще много крутейших авторов со своим уникальным бэкграундом.

Промокод на 1000 рублей — VCRU

Приходите сами и друзей зовите 😎

33
6 комментариев

С другой стороны, приложение с таким интерфейсом едва ли зафичерят в AppStore или Play Market — интерфейс приложения будет отличаться и не в пользу Реакта.

React Native как раз-таки стоит над платформой и оперирует платформенными примитивами. Если есть специальный платформенный UI Kit, то можно использовать его и никто не отличит React Native от не React Native приложения в плане Look & Feel. Что не скажешь, например, про Flutter.

4

Спасибо за уточнения!

Меня немного вымораживают приложения flutter непоследовательной поддержкой жеста свайпа вправо для перехода на предыдущий экран. Да, есть нюансы с эмуляцией виджетов платформы вместо использования виджетов.

 React, как опенсорс-проект, собран из множества разных библиотек и сторонних компонентов, из-за чего количество зависимостей намного больше, чем в нативе. В 2017–2018 годах была огромная проблема с их стабильностью, рефакторингом и дебаггингом, но в последние год-два она практически исчезла и зрелые зависимости обновляются разработчиками быстро и часто.

На самом деле проблем с зависимостями, из которых собран React Native, нет. Да и на ранних этапах я их не помню. Другое дело, что сторонние либы для RN могут конфликтовать друг с другом. У нас был прям недавно такой кейс.

2

промокод смешной получился, коненчо

1

у вас jpeg головного мозга