Назад
React Native - плюсы и минусы

Разработка под iOS и Anrdoid на React Native в 2020 году

В статье ни слова о том, как компании-гиганты вроде Facebook, Netflix и Airbnb заработали миллионы с React Native.

Вместо красивых историй расскажем о сильных и слабых сторонах этого JS-фреймворка. Для полноты картины подкрепим все эти плюсы и минусы React Native реальными сценариями использования.

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

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

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

Cвайп на RN будет выглядеть так же, как если бы вы разрабатывали на Swift или Java — Источник

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

Быстрая инициализация. Два года назад Airbnb утверждали, что RN сильно тормозил первый запуск приложения — это объяснялось необходимостью подгружать абсолютно все экраны. Из-за этого особенно страдали продукты с большим количеством экранов. Сейчас такой проблемы нет. Оптимизировать скорость запуска позволяет использование RAM-bundles + inline requires — приложение открывается быстро благодаря подгрузке только нужных экранов. Закрыть эту же проблему для Android-приложений помогает Hermes JS Engine.

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

Большое cообщество. Когда какой-то баг не гуглится — cпасают коллеги. Это значит, что разработчик открывает Github/Stackoverflow и — пам-пам — можно обнаружить готовое решение от того, кто уже штудировал эту проблему. Мы знаем, чем счастливее разработчики, тем проще твоя жизнь мягче проходит процесс разработки.

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

Привет! Все надеешься найти идеальный инструмент?

Недостатки

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

Не создан для 3D-игр. Или продуктов, требующих физики и тяжелой графики.

Слабо работает со сложными (концептуальными) анимациями. Скорее всего в этом случае разработчику придется ковырять нативный код. Однако если речь идет о валидации бизнес-идей с помощью MVP, вряд ли это станет какой-то глобальной проблемой.


Так, а что в итоге?

На самом деле, конечный выбор будет зависеть от специфики будущего проекта. Чтобы как-то это все подытожить,  вот несколько примеров проектов, для которых мы рекомендуем использовать React Native:

  • Продукт с минимальным функционалом (MVP). Если планируете тестировать бизнес-гипотезы и вам нужен работающий MVP с крутой визуализацией, React Native — это отличный выбор. Возможность разработать продукт одновременно для двух платформ позволит за кратчайшее время собрать первую обратную связь.
  • Социальное приложение. Фреймворк хорошо работает для реализации таких фич как доступ к камере, отпечаток пальца, геолокаця и карты.
  • Не перегруженный анимацией продукт. Если планируете спроектировать что-то технически сложное вроде «Зумирование для 10 000 объектов на одном экране», то лучше действительно уйти в нативную разработку. Если же вы не ставите задачу проектировать что-то сверхсложное (крайне редкий кейс, который не работает в 95% случаев), настоятельно рекомендуем присмотреться к React Native и использовать этот фреймворк для разработки своего будущего проекта.