Наш блог переехал на наш основной сайт! Зайдите на discord.com/blog, чтобы быть в курсе будущих публикаций.

Когда я прошлой весной давал интервью для iOS-разработчика, открывающегося в Discord, технический руководитель Станислав сказал мне:

React Native - это будущее. Мы будем использовать его для создания нашего iOS-приложения с нуля, как только оно станет общедоступным.

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

Эффективность

Хотя наша «команда» iOS, как правило, состоит только из меня, приложение для iOS по-прежнему способно догнать нашу веб-разработку и разработку для настольных компьютеров с молниеносной скоростью. Apple недавно разрешила вам обновлять приложение по воздуху с помощью JavaScriptCore без повторного прохождения процесса проверки в App Store. Это очень полезно для небольшого стартапа, не имеющего полностью специализированной команды QA iOS, проводящей тщательные тесты, поскольку команда iOS может применить некоторые оперативные исправления после поставки новых функций.

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

  • Версия 1.0 была создана в течение двух недель на базе существующей интерфейсной инфраструктуры.
  • Код стиля Flexbox примерно вдвое короче и намного проще для понимания, чем код Auto Layout.
  • Приложение для iOS и веб-приложение разделяют 98% кода магазина и действия в шаблоне проектирования Flux.

Представление

React Native запускает Javascript в фоновом потоке и отправляет минимальный объем кода в основной поток. Оказывается, есть небольшая разница в производительности между этим и родным iOS-приложением, написанным на Objective-C или Swift!

Однако, когда мы начали создавать приложение для iOS, производительность режима прокрутки чата была неудовлетворительной, особенно для некоторых активных чат-групп. Мы решили использовать ComponentKit для чата и вместо этого написать необходимые мосты. Библиотека Animated также не может доставлять анимацию так же плавно, как нативная, при выполнении тяжелых работ в потоке JS, поэтому мы продолжаем использовать PopAnimation для наших ящиков.

Мы пытались запустить приложение и на Android, когда вышел React Native для Android, но, к сожалению, столкнулись с некоторыми проблемами с производительностью и решили подождать. По словам нашего ведущего разработчика Android Мигеля:

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

Юзабилити

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

Одна из моих любимых функций - Показать инспектор. Он немедленно отображает иерархию интерактивных представлений и всю необходимую информацию о стиле выбранного компонента и просто превосходит любые другие инструменты инспектора iOS, которые я когда-либо использовал.

Сообщество

Проект React Native выпускает новый выпуск каждые две недели с десятками новых функций и исправлений ошибок. Это обоюдоострый меч. По сравнению со стабильным выпуском iOS каждые несколько месяцев, развивающаяся база кода требует дополнительного времени на обновление, особенно для приложения в производственной среде. Вот почему мы пока сделали только четыре основных обновления нашего разветвленного репозитория React Native.

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

  • # React-native на Reactiflux.
  • Js.coach - каталог компонентов с открытым кодом React Native.
  • Awesome-react-native - список статей, руководств и примеров React Native.

В целом, React Native выглядит очень многообещающе и выводит разработку мобильных приложений на новый уровень в нашей команде. Переход от такого разработчика iOS, как я, оказался более плавным, чем я думал изначально. Кроме того, это помогает мне избежать дыры на работе, поскольку я могу внести свой вклад в наше веб-приложение, которое очень легко написано на React.

Наконец, мы всегда ищем талантливых инженеров, дизайнеров и других сотрудников, которые присоединятся к нашей команде! Посетите нашу страницу вакансий, чтобы узнать о вакансиях (особенно, пожалуйста, приходите дизайнеры продуктов).