Това Airbnb вече не е пример за стартиране, използващо React Native Това ни кара да се чудим дали очакванията, които възлагаме на тази технология, са верни. Като размисъл можем да прегледаме решението на Airbnb, трудно медитирано. Доказателство за това е поредицата от публикации в блога, придружаващи съобщението, обясняващи причините от най-техническите до културните.

използвайте

Е отлично изучаване на това как технически екип с определени измерения и определени очаквания приема нова технология и впоследствие е принуден да го изхвърли. С последиците от това. Нека си спомним, че React Native не е проста библиотека или рамка, но има други последици, които могат да променят начина на работа или дори културата на екипа за разработка.

Airbnb не е единствената компания, която обяви отказването от React Native в рамките на няколко дни Udacity, публикувайки строг пост с мотивите си. Споменавайки много от главоболието, някои от нас са се сблъсквали при опит да въведат React Native в съществуващо приложение. В този случай решението беше взето от малък екип от 4 разработчици, за разлика от близо 100 инженери на Airbnb.

Дори Facebook не се отърва от мълвата, че дори те изоставят част от разработката React Native в полза на родната на Android и iOS, скоро след това категорично отрекоха. В основния доклад на F8 те показаха как го използват в различни части на приложението, като кръводаряване, кризисни реакции, преки пътища за управление на поверителността или проверки на здравето.

Факторите за възприемане на React Native обикновено са някои от следните:

  • Умейте да превъртате напред. Нуждите на стартъп в пълен растеж и еволюция изискват възможност за бързо развитие. И още, ако е мобилен. Липсата на разработчици и? Дублирането? под някаква форма на разработки в Android и iOs.
  • Напишете един и същ код само веднъж, вместо да го репликира на почти всяка платформа. Тук трябва да правим разлика между стартирането на функция/приложение от нулата в React Native или необходимостта да живеем с Java/Kotlin код и Objective-C/Swift между тях.
  • Подобрете опита за разработка. По време на компилиране на мобилни разработки дори някои IDE като Xcode не дават добър опит. Поради тази причина React Native обещава да подобри качеството на живот на разработчиците или поне да компилира пъти.
  • Опит в javascript и уеб разработка. Наличието на екип с опит във фронтенда и липсата на достатъчно мобилни разработчици е убедителна причина, особено ако React вече се използва в мрежата.
  • Привлечете разработчици, заинтересовани от нова технология. Въпреки че Android и iOS все още са модерни технологии, много компании виждат React Native като начин за привличане на хора, които се интересуват от нови начини на работа и с технология, която идва от Facebook. Вероятно това не е едно от най-добрите твърдения, нито е лесно за подбор на персонал, но не е първият път, когато виждаме приемането на нова технология, ръководена от маркетинга.
  • Историите за успех на някои компании които го използват: Airbnb беше един от тях, но не се притеснявайте, има много повече.

Главоболие с React Native

Най-голямото главоболие, което страдат от Udacity и Airbnb, е, че приписаният девиз „пиши веднъж, тичай навсякъде“ не е толкова лесен. Особено след като вече имаха голям брой функции, разработени в родния. Но най-важното за това е, че най-основната част на приложението трябва да е родна и да комуникира с React Native. Нещо нетривиално, което не работи по същия начин в зависимост от платформата и изисква допълнителни усилия и нищо тривиално.

Airbnb разполага с голям брой инженери, за да създаде необходимата инфраструктура. Това, което на пръв поглед може да изглежда, че React Native ще опрости, не. Нито поради незрялостта на React Native през времето, когато Airbnb го е използвал, е трябвало да закърпи определени неща. Накара ги да държат разклонение с над 50 ангажименти напред. Всяка актуализация на версията става по-сложна, в допълнение към големи усилия за изграждане на библиотеки за адаптиране на техните нужди към React Native.

По пътя, както е подробно описано в третия пост от поредицата, има и други камъни по пътя:

Изграждане на екип от различни платформи

Едно от най-полезните знания от разказа на Airbnb за React Native е частта на екипа. И това е нещо, което можем да кандидатстваме за всяко техническо решение, което трябва да вземем в екип. Това не е просто език, библиотека или рамка. Има определени решения, като в този случай на React Native, това това може да повлияе на начина, по който работи екипът за разработки, включително продукта и дизайна, разбира се.

React Native е поляризиран, Можете да разберете, като говорите с разработчиците на Android и iOS. Основната причина е, че този „сребърен куршум“ не работи по един и същ начин на всяка платформа, нито предизвикателствата или грешките за преодоляване са еднакви. В зависимост от вашия опит, можете да вземете едно или друго мнение. Разбира се, не всички от нас изграждат едни и същи приложения, нито са еднакво сложни или имат еднакви технологични предизвикателства.

Една от първите реалности, които можете да намерите, изграждайки този дългоочакван екип на различни платформи, е това ще продължите да се нуждаете от експерти и на трите платформи. Толкова във факта, че подобрявате преживяването с някои персонализирани елементи.

Не само защото дизайнът е различен в зависимост от платформата, но React Native има някакво поведение по подразбиране в някои ситуации като изобразяване на текст, използване на клавиатурата или самите дейности, които ще трябва да промените. И да не говорим за частта за отстраняване на грешки, когато влезете в дълбините на JavaScript-React и връзката му с родната среда. Не всички разработчици са достатъчно подготвени за това.

Любопитен факт, който Airbnb подчертава, е как им е повлиял при наемането на инженери. Много разработчици на Android или iOS се колебаеха да се присъединят към компания, която залагаше толкова силно на React Native.

Разделението на отборите също беше сложно. Всяка кодова база беше разделена между родния (Android и iOS) и React Native. Споделянето на бизнес логика, модели, състояния и т.н. ... беше все по-сложно и много малко хора успяха да разберат пълния поток на всичко това. Споделянето на код между мрежата и мобилното беше целта, но това вече не беше истинската полза, тъй като трябваше да се използва и поддържа самостоятелно.

Всичко зависи дали вашето приложение стартира от нулата в React Native или е хибридно (Android/iOS)

Разработването на междуплатформено приложение от нулата не е същото като интегрирането на React Native код. Това каза и имайки предвид проблемите, които Airbnb и Udacity имаха: това са вашите рискове. Сега всичко зависи от вас и вида на приложението, което искате да създадете.

1. Ако искате да създадете приложение от нулата в React Native, където е по-голямата част от кода на Javascript

Давай, може би това е идеалната ситуация. Много стартиращи компании днес през първите месеци вече не се нуждаят от програмист за Android и друг iOS. Със 100% приложение React можете да изграждате добър mvp което работи и на двете платформи. За това трябва да знаете цялата екосистема на React Native, ето една добра пътна карта за нея. Стига развитието ви да не излиза извън нормалното.

Винаги щях да поддържам гърба си добре с фронтен екип, който борави с JavaScript широко. С това може да е достатъчно да имате страхотно изживяване с React Native, без дори да докосвате XCode или Android Studio.

2. Вече имате относително сложно приложение в Swift/Objective-C или Java/Kotlin

Това е ясно минно поле, където съществуващо приложение трябва да претърпи множество промени да се направи първата стъпка с React Native: проблеми със съвместимостта с библиотеки, управление на отделни хранилища, мигриране на функционалност или взаимодействие на бизнес или домейн слой. Всички видове проблеми, с които Airbnb и Udacity са се сблъсквали.

Настоящият ви екип ще трябва да научи нова технология или може би знанията за някои функционалности трябва да бъдат разделени между експерти по JavaScript и Java/Kotlin, например. В допълнение към са склонни да отделят кода на приложението от поне 3 хранилища. В допълнение към необходимостта от решаване на проблеми, подобни на тези, за които се съобщаваше по-рано, за да се поддържа последователността на приложението със 100% естествени части и други React Native части. Това биха били навигация, оформление, комуникация на части от домейн и изглед и т.н...

Определено, React Native зависи много от вашия тип приложение и вашите стремежи. С опита на Udacity или Airbnb можем да видим, че отразява не толкова съвършената реалност на обещаваща, но не перфектна технология за всеки.