Co raz częściej spotykamy się z wyzwaniem stworzenia aplikacji mobilnej, której odbiorcami są wszyscy użytkownicy smartfonów - zarówno tych z systemem Android oraz tych z iOS, z jednoczesnym zachowaniem budżetu, bez nadwyrężania go. Przy zachowaniu kilku warunków jest to możliwe. Z tego artykuły dowiesz się kiedy warto zastosować technologię React Native, czy to dobre rozwiązanie dla każdego projektu i jakie plusy oraz minusy znajdziesz w omawianej technologii.


Technologia React Native i jej powstanie


React Native to framework (platforma programistyczna, czyli szkielet do budowy aplikacji) stworzony przez Facebook, aby przyspieszyć proces tworzenia aplikacji mobilnych (https://facebook.github.io/react-native/). Pozwala na symultaniczne budowanie aplikacji zarówno na platformę Android, jak i iOS, wykorzystując język JavaScript. Wystarczy napisać kod w języku JavaScript, a w efekcie otrzymamy aplikację mobilną z natywnymi elementami dla iOS oraz Android. Dzieje się tak, ponieważ React Native używa mostów (bridges) do przekładania języka JavaScript na natywne komponenty.


Mark Zuckerberg poszukiwał uniwersalnego rozwiązania programistycznego dla swoich produktów, ponieważ zauważył, że Facebook jest głównie używany w wersji mobile web Facebook. W 2012 roku przyznał, że dotychczasowe rozwiązanie - HTML5, nie spełnia oczekiwań oraz jest jedną z poważniejszych porażek strategicznych firmy (źródło:https://www.youtube.com/watch?v=GBp_xCGIATk).

Wyraził wówczas nadzieję, że w niedalekiej przyszłości on i jego zespół znajdą rozwiązanie na problem, z jakim zmagają się od jakiegoś czasu. Niedługo później Jordan Walke (jeden z developerów Facebooka) znalazł sposób na wygenerowanie elementów interfejsu użytkownika systemu iOS z wątku kodu języka JavaScript. To był moment przełomowy dla sprawy, a po miesiącach wzmożonej pracy powstała pierwsza wersja React.js (https://reactjs.org) opublikowana w 2015 roku z deklaracją, że Facebook używa technologii React Native do swoich produktów.


Plusy i minusy technologii React Native


Bezdyskusyjnym pozytywem tworzenia aplikacji w React Native jest istnienie jednego kodu dla wielu platform, gdyż istnieje możliwość wyjścia poza iOS i Android. Zyskujemy oszczędność czasu, pieniędzy. Dodatkowo potrzebujemy tylko jednego zespołu developerów, który bazuje na stabilnym frameworku - React.js.


Zatem, jeśli React Native wydaje się być rewelacyjnym rozwiązaniem, to dlaczego nie zastosować go do każdego projektu? Należy pamiętać, że React.js jest efektywny i sprawny tylko pod względem UI (interfejsu użytkownika). Inaczej mówiąc, kod aplikacji nie modyfikuje się do kodu natywnego, a współpracuje z natywnym interfejsem smartfona. Trzeba mieć na uwadze, że do stworzenia niektórych elementów aplikacji (np. podpięcia funkcji aparatu) należy napisać kawałek kodu w technologii natywnej, a następnie zbudowanie mostu, który połączy elementy w języku JavaScript z kodem natywnym. Ważną kwestią jest to, że React Native został stworzony przez Facebook, zatem to zespół Marka Zuckerberg jest odpowiedzialny za rozwój technologii. Zawsze istnieje ryzyko, że technologia przestanie być wspierana, zostanie zawieszona lub z jakiegoś powodu Facebook odmówi udzielenia licencji.


Kiedy zastosować technologię React Native?


Idealną sytuacją do sięgnięcia po technologię React Native jest potrzeba stworzenia nieskomplikowanej aplikacji, przy ograniczeniach czasowych. Dobrym przykładem jest aplikacja mobilna na targi, gdy firma zamierza przedstawić swoje produkty za pomocą urządzenia mobilnego lub aplikacja, która gromadzi pomysły nowych projektów w firmie czy narzędzie na pojedynczą kampanię marketingową. Wynika to z tego, że React Native umożliwia napisanie kodu wspólnego (około 70%) , ale należy pamiętać, że zawsze do tego budujemy mosty pomiędzy JavaScript a elementami natywnymi. Zatem im prostsza aplikacja i generowany interface, tym więcej kodu mamy wspólnego dla iOS i Android (czy innych platform). Jednak, gdy aplikacja wymaga skomplikowanych funkcji, zależności od zewnętrznych, natywnych bibliotek, tym więcej fragmentów kodów natywnych trzeba napisać.


Podsumowując, chcemy podkreślić jak ważne jest rozsądne dobieranie rozwiązań technologicznych do potrzeb i możliwości. Jeśli cel jest określony jako budowa prostej aplikacji, której nie trzeba rozwijać, rozbudowywać lub jest to narzędzie promocyjne - wybierz React Native aby zaoszczędzić czas i pieniądze. Uważaj jednak na zróżnicowanie możliwości, które dają natywne API (Application Programming Interface, czyli zestaw rozwiązań, dzięki którym dwie aplikacji mogą porozumiewać się ze sobą, np. aplikacja restauracji, która dowozi jedzenie i aplikacja Google Maps). Może się bowiem okazać, że niewiele kodu będzie można współdzielić, a mnóstwo pracy będzie wymagało budowa modułów pomostowych - wówczas wybierz programowanie natywne.