Назад

Разработка под iOS и Anrdoid на React Native. Преимущества и недостатки

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

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

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

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

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

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

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

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

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

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

Недостатки

Молодой фреймворк. Это не версия 1.0.0 (пока), поэтому некоторые компоненты все еще отсутствуют и сама технология довольно часто обновляется. Для разработчика “незрелость” React Native выливается в бОльшие трудозатраты на поиск готовых решений и постоянное внедрение актуальных версий фреймворка. Что касается кастомного функционала (уникальные фичи), скорее всего разработчику придется самостоятельно генерить решение для реализации каких-то узких задач — для этого может понадобиться опыт на  нативных Swift и Java.

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

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


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

Выбор будет зависеть от специфики будущего проекта. Чтобы как-то подытожить это все,  присмотрись к RN, если планируешь разработать:

  • Продукт с минимальным функционалом (MVP). Допустим, все,  что тебе нужно — красивый прототип, который поможет протестировать бизнес-идею + получить первую обратную связь. Максимально быстро и “за недорого”.
  • Социальное приложение. Фреймворк хорошо работает для реализации таких фич как доступ к камере, отпечаток пальца, геологаця и карты.
  • Не перегруженный анимацией продукт. RN не самое оптимальное решение для подобных проектов . С RN ты можешь реализовать простые анимации, что касается каких-то технически сложных штук вроде “Зумирование  для 10000 объектов на одном экране” — тут лучше все-таки уйти в нативную разработку. C другой стороны, если логика приложения строится на взаимодействии с пользователем и переходами между экранами — этот фреймворк сработает на отлично.