Назад

React Native: плюсы и минусы фреймворка в 2021 году. UPD

Время чтения: 4 минут

Содержание

    Привет, я Саша Пуртов, тимлид команды React Native разработки в Purrweb. Рассказываю, как фреймворк показывает себя в бою — на реальных проектах.

    Без красивых историй про то, как «Facebook перевернул мобильную разработку, подарив миру универсальную технологию». Это понятная статья «в лоб» о том, какие у React Native плюсы и минусы. Идея рассказать про особенности фреймворка пришла ко мне ещё год назад — теперь есть желание обновить информацию.

    А теперь давайте к сути. 🙂

    Преимущества React Native

    Общая кодовая база. Фактически вы разрабатываете 2 отдельные версии приложения (под iOS и Android). Да, две версии приложения, но код в них на 65-70% одинаковый.

    Общий код минимизирует количество багов по ходу разработки (объем кода будет почти в 2 раза меньше) и значительно упрощает поддержку продукта в будущем. Для стартапов это выливается в дополнительные дни и недели, которые можно потратить на активности со «звездочкой» — например, на проработку маркетинговой стратегии, анализ способов монетизации и планирование будущих итераций развития продукта.

    Максимально похож на нативный. В отличие от других кроссплатформенных решений, вроде Cordova, Ionic или Titanium, которые имитируют среду браузера (все равно, что сайт, который притворяется мобильным приложением), React Native использует нативные API.

    Нет никаких проблем с табами и скроллированием, а интерфейс ведет себя так же отзывчиво, как и в классическом приложении — без WebView и схожих инструментов под капотом

    Говоря о том, какой перворфманс можно получить с React Native, предлагаю посмотреть на экраны приложения, которое мы разработали в Purrweb:

    React Native плюсы и минусы Сервис аренды жилья PAD. Свайп выглядит так, как если бы вы разрабатывали на Java/Swift

    Различные наборы компонентов и библиотек для React Native (преимущество всех хороших фреймворков) помогают закрывать performance-задачи по ходу разработки продукта. Нужно только убедиться, что библиотека, которую планирует использовать ваш разработчик, достаточно часто обновляется и поддерживается сообществом.

    Кстати, раз уж говорим про плюсы и минусы React Native, давайте поговорим и про сообщество.

    Большое комьюнити. Жирный плюс в том, что фреймворк начинает обрастать   «проверенными» библиотеками от сообщества React Nativehttps://github.com/react-native-community. Такие либы очень хорошо поддерживаются, для них гораздо быстрее выходят багфиксы и патчи под новую версию фреймворка. Также есть  репозиторийhttps://github.com/react-native-community/upgrade-support, в котором можно получить помощь, если что-то не заладилось с обновлением версии React Native.

    К слову о комьюнити: в середине 2020-го официальная команда поддержки фреймворка выпустила большой патч с апдейтами всей документации.

    Что нового:

    • Обновили гайд для новичков. В нём рассказали о том, как работают нативные компоненты в React Native — полезно для тех, кто раньше не занимался мобильной разработкой.
    • Добавили рекомендации по тестированию. Пригласили Войтеха Новака, чтобы тот поделился опытом тестирования кода приложений на React Native.
    • Зарелизили новое руководство по безопасности. С иллюстрациями. 🙂

    И многое другое. Подробности читайте тутhttps://reactnative.dev/blog.

    А ещё хочется упомянуть  Reddithttps://www.reddit.com/r/reactnative/ — здесь можно найти огромное количество обсуждений проблем и советов от разработчиков с приличным опытом разработки на React Native.

    Поддержка TypeScript. Статическая типизация = меньше багов + простая поддержка проекта и возможность легко создать приложение из шаблона. Сейчас мы используем TypeScript на всех наших проектах, уж очень он хорош.

    Быстрый поиск подрядчика. Тратить уйму времени на поиск Swift и Java разработчиков не придется. Достаточно отыскать того, кто знает JavaScript, и можно стартовать. Если найдете того, кто разбирается в React (тот же RN, только для веба), будет еще лучше.

    Вот еще несколько плюшек:

    • Fast Refresh — сильно ускоряет разработку приложения, так как   практически любое изменение в кодеhttps://reactnative.dev/docs/fast-refresh#limitations компонента влечет за собой его мгновенное обновление (re-render) без изменения состояния.
    •   JS-движок Hermeshttps://medium.com/habilelabs/hermes-a-new-javascript-engine-for-react-native-4369ad17881f для Android-версии, ускоряет запуск приложения, уменьшает размер bundl’a и снижает потребление памяти.
    • Автолинковка нативных модулей — упрощает установку библиотек. Ненативщикам не нужно прописывать импорты, что сильно экономит время.
    • LogBox — в 2020-м им дополнили все версии React Native (раньше был доступен только опционально). Зачем нужен LogBox? Он позволяет отслеживать синтаксические ошибки в коде и исправлять их в полете.

    Останавливаться на одних лишь позитивных моментах в статье «React Native: плюсы и минусы» не буду — при таком раскладе я стану походить на человека, который ломится к вам в дом и пытается что-то впарить. Как правило, это какая-то дичь, которую подают под соусом «уникальности». Обсуждать плюсы и минусы React Native — важно. А он, как и любая другая технология, никакая не серебряная пуля.

    Недостатки React Native

    Молодой фреймворк. Это (пока) не версия 1.0.0, поэтому некоторые компоненты все еще отсутствуют и сама технология довольно часто обновляется.

    Для разработчика «незрелость» React Native означает, что ему нужно следить за версией как самого RN, так и библиотек зависящих от него. Продукт нельзя отложить на год, а потом начать добавлять новые фичи — потребуется время на обновление фреймворка.

    Cейчас эта процедура занимает значительно меньше времени, чем два года назад, так как появились удобные сервисы, показывающие где и что конкретно нужно изменить

    Сложно адаптировать под все андроиды — cлишком большой пул девайсов, очень много разных разрешений и оболочек. По факту, это скорее проблема разработки под андроиды, нежели самого React Native.

    Где использовать?

    О плюсах и минусах React Native я рассказал. Разрабатывать на этом фреймворке или нет — выбор напрямую зависит от специфики вашего проекта. Чтобы как-то это все подытожить, пара слов о том, где эта технология работает на 5 с плюсом.

    Минимально жизнеспособный продукт (MVP). Если планируете тестировать бизнес-гипотезу и нужно функциональное решение с крутой визуализацией, React Native — это отличный выбор. Возможность одновременного выхода на Android и iOS-рынки позволит быстро собрать первую обратную связь.

    Какой MVP можно получить на выходе?

    React Native плюсы и минусыТакой же крутой, как эта система приложений для мероприятий. Активация браслета гостя в три простых шага

    Все, о чем я здесь рассказал, включая плюсы и минусы React Native — опыт, полученный за время реализации десятков проектов. Текущих и тех, что успешно зарелизились и перешли в фазу поддержки. За React Native я #топлюибудутопить, тут же старался дать максимально честную и четкую картинку того, что имеем по факту. Надеюсь, получилось 🙂

    Хотел, чтобы статья про плюсы и минусы React Native была полезной и для коллег по цеху. Господа-разработчики, охотно делюсь списком must-have ресурсов для разработки на React Native: