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 выше.

Раунд 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, нужно делать именно на нем. Конечно, при условии, что у вас сильная веб-команда. Вот только можно далеко не все: максимальная производительность, нативный UI или тесная синхронизация с аппаратными компонентами остается за нативной разработкой.

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

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

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

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

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

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

Ответить
Развернуть ветку
Фестиваль 404
Автор

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

Ответить
Развернуть ветку
Denis Kiselev

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

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

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

Ответить
Развернуть ветку
Иван Вдовица

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

Ответить
Развернуть ветку
Ruslan Demyanenko

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

Ответить
Развернуть ветку
3 комментария
Раскрывать всегда