Airbnb: React Native от выбора до отказа

Android React.js Airbnb React Native

Airbnb недавно опубликовал серию статей на Medium, в которых подробно описывается весь путь от выбора до отказа от Airbnb и React Native.

  1. React Native at Airbnb
  2. The Technology
  3. Building a Cross-Platform Mobile Team
  4. Making a Decision on React Native
  5. What's Next for Mobile

Для студентов, которые не читают много слов, вы можете просто прочитать мое резюме ниже.

Почему стоит выбрать React Native в первую очередь

Ограниченная команда разработчиков не может удовлетворить растущие потребности бизнеса

Чего ожидать от React Native

  1. быстрое развитие
  2. гарантия качества
  3. Напишите один раз, поделитесь на нескольких платформах
  4. Улучшить опыт разработки

что нам не хватает

  1. Кросс-платформенный, на самом деле более 95% общей скорости кода.
  2. Единый DSL. Различные реализации также сделаны в соответствии с платформой.
  3. Реакция — это хорошо.составной,простой жизненный цикл,декларативный
  4. Скорость итерации разработки (горячее обновлениеhot-reloading)
  5. Наши инвестиции в экологическую инфраструктуру РН.
  6. Производительность, RN работает очень плавно на большинстве страниц. (Есть проблемы с производительностью?shouldComponentUpdate, removeClippedSubviews, Redux, чтобы узнать. )
  7. Reduxэто хорошо. Тоже довольно многословная вещь.
  8. Мост с Native может легко инкапсулировать существующие библиотеки Native.
  9. статический анализ, отESLintприбытьprettier
  10. Библиотека анимации RN хороша.
  11. Экосистема JS/React с открытым исходным кодом.
  12. Flexbox
  13. Делитесь кодом с веб-платформами.

расстраивает нас

  1. С точки зрения зрелости и стабильности RN не так нативна, как iOS и Android.
  2. Из-за ошибок в RN иногда нам приходится поддерживать один из наших собственныхотделение РН.
  3. В JS отсутствует система типов, Flow слишком строг, а TS имеет проблемы с интеграцией в существующие проекты.
  4. Рефакторинг, рефакторинг невозможно рефакторить, и нет никакой системы типов, только попытки сделать статический анализ.
  5. Несоответствие JavaScriptCore, и что еще хуже, ему уже 8102 года, а RN (Android) все еще приноситАО не поддерживает ES 6
  6. Библиотеки с открытым исходным кодом RN различаются по качеству. Например, обычная библиотека на iOS может иметь непредвиденные ошибки на Android (потому что автор может быть знаком только с iOS и RN, а не с Android)
  7. Иногда приходится начинать с нуля, потому что многие библиотеки в базовой структуре еще не имеют оболочек RN.
  8. Производительность библиотеки мониторинга сбоев на RN не особо специфична, и скачок в стеке ошибок RN + Native нужно оспаривать?
  9. Из-за слабого типа JS несоответствие типа Native Bridge между Native и JS может легко вызвать ошибки. (Извините, что не сгенерировал код связи с TS раньше.)
  10. Время загрузки, инициализация среды RN занимает секунды даже на высокопроизводительных компьютерах.
  11. Время рендеринга вновь открытой страницы составляет около 0,4 секунды, первый рендеринг страницы требует времени.
  12. Размер приложения. Добавьте хотя бы 12M.
  13. Недоступно на Android до сих пор64-битная поддержка.
  14. Жесты, API-интерфейсы жестов iOS и Android очень разные, но радостные новостиreact-native-gesture-handlerВышла версия 1.0.
  15. Длинные списки, хотя команда RN усердно работала, из-за асинхронного механизма связи RN плавный рендеринг длинных списков все еще не решен.
  16. Обновление React Native — это яма.
  17. Доступность в RN — большая дыра.
  18. осталось немногостранная ошибка, пока не исправлено.
  19. SavedInstanceStateКросс-процесс на Androidяма.

Не проблема с техническими проблемами

  1. Чтобы хорошо использовать RN, вы должны быть знакомы как с iOS, так и с Android, и, конечно же, с самой RN, что создает больше проблем для нас, инженеров.
  2. Управление коллективом, разделение обязанностей.
  3. Документация по RN и сопутствующие ресурсы не так богаты, как iOS и Android.