Привет, я Сергей Никоненко, операционный директор Purrweb. Cегодня поговорим про React Native разработку . Рассказываю, как фреймворк показывает себя в бою — на реальных проектах.
Без красивых историй про то, как «Facebook перевернул мобильную разработку, подарив миру универсальную технологию». Это понятная статья «в лоб» о том, какие у React Native плюсы и минусы. Идея рассказать про особенности фреймворка пришла ко мне ещё год назад — теперь есть желание обновить информацию.
А теперь давайте к сути. 🙂
Преимущества React Native
Общая кодовая база. Фактически вы разрабатываете 2 отдельные версии приложения (под iOS и Android). Да, две версии приложения, но код в них на 65-70% одинаковый.
Общий код минимизирует количество багов по ходу разработки (объем кода будет почти в 2 раза меньше) и значительно упрощает поддержку продукта в будущем. Для стартапов это выливается в дополнительные дни и недели, которые можно потратить на активности со «звездочкой» — например, на проработку маркетинговой стратегии, анализ способов монетизации и планирование будущих итераций развития продукта.
Максимально похож на нативный. В отличие от других кроссплатформенных решений, вроде Cordova, Ionic или Titanium, которые имитируют среду браузера (все равно, что сайт, который притворяется мобильным приложением), React Native использует нативные API.
Нет никаких проблем с табами и скроллированием, а интерфейс ведет себя так же отзывчиво, как и в классическом приложении — без WebView и схожих инструментов под капотом
Говоря о том, какой перформанс можно получить с React Native, предлагаю посмотреть на экраны приложения, которое мы разработали в Purrweb:
Сервис аренды жилья PAD. Свайп выглядит так, как если бы вы разрабатывали на Java/SwiftРазличные наборы компонентов и библиотек для React Native (преимущество всех хороших фреймворков) помогают закрывать performance-задачи по ходу разработки продукта. Нужно только убедиться, что библиотека, которую планирует использовать ваш разработчик, достаточно часто обновляется и поддерживается сообществом.
Кстати, раз уж говорим про плюсы и минусы React Native, давайте поговорим и про сообщество.
Большое комьюнити. Жирный плюс в том, что фреймворк начинает обрастать «проверенными» библиотеками от сообщества React Native. Такие либы очень хорошо поддерживаются, для них гораздо быстрее выходят багфиксы и патчи под новую версию фреймворка. Также есть репозиторий, в котором можно получить помощь, если что-то не заладилось с обновлением версии React Native.
К слову о комьюнити: в середине 2020-го официальная команда поддержки фреймворка выпустила большой патч с апдейтами всей документации.
Что нового:
- Обновили гайд для новичков. В нём рассказали о том, как работают нативные компоненты в React Native — полезно для тех, кто раньше не занимался мобильной разработкой.
- Добавили рекомендации по тестированию. Пригласили Войтеха Новака, чтобы тот поделился опытом тестирования кода приложений на React Native.
- Зарелизили новое руководство по безопасности. С иллюстрациями. 🙂
И многое другое. Подробности читайте тут.
А ещё хочется упомянуть Reddit — здесь можно найти огромное количество обсуждений проблем и советов от разработчиков с приличным опытом разработки на React Native.
Поддержка TypeScript. Статическая типизация = меньше багов + простая поддержка проекта и возможность легко создать приложение из шаблона. Сейчас мы используем TypeScript на всех наших проектах, уж очень он хорош.
Быстрый поиск подрядчика. Тратить уйму времени на поиск Swift и Java разработчиков не придется. Достаточно отыскать того, кто знает JavaScript, и можно стартовать. Если найдете того, кто разбирается в React (тот же RN, только для веба), будет еще лучше.
Вот еще несколько плюшек:
- Fast Refresh — сильно ускоряет разработку приложения, так как практически любое изменение в коде компонента влечет за собой его мгновенное обновление (re-render) без изменения состояния.
- JS-движок Hermes для 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 была полезной и для коллег по цеху. Господа-разработчики, охотно делюсь списком must-have ресурсов для разработки на React Native:
[emaillocker id=1957]
- Генерация React Native на TypeScript
- Сайт , на котором можно посмотреть, что нужно изменить, чтобы выполнить обновление версии React Native
- Лучшая библиотека для навигации в React Native
- Не забываем про поддержку комьюнити
- Программа для автоматизации билдов
[/emaillocker]