Cross Platform8 min czytania

Czy React Native to dobry wybór dla MVP twojej aplikacji?

Karol Wegner

Board Member

Spis treści

  1. Plusy i minusy React Native dla MVP
  2. Oszczędność budżetu i czasu
  3. Aplikacje Android i iOS tworzone na raz
  4. Mniejszy zespół developerski
  5. Kilka rzeczy, na które należy uważać (zanim wybierzesz React Native)
  6. Aplikacje React Native są mniej wydajne
  7. Lepszy UX/UI w technologiach natywnych Android i iOS

Plusy React Native dla MVP:

  1. Oszczędność budżetu i czasu
  2. Dotarcie do większej grupy użytkowników (dwie platformy na raz)
  3. Mniejszy zespół developerski 

Minusy React Native dla MVP:

  1. Młoda technologia
  2. Utrudniona dostępność specjalistów 
  3. Mniejsza wydajność i gorszy UX/UI aplikacji React Native

Oszczędność budżetu i czasu

Jedna z podstawowych zasad metodologii Lean Startup mówi o oszczędzaniu zasobów – w rozumieniu wykorzystania potencjalnych zasobów w optymalny sposób, żeby dążyć do potwierdzenia dopasowania produktu do potrzeb użytkowników (potwierdzenie Value Proposition). Podczas tworzenia nowej aplikacji mobilnej Product Owner powinien dążyć do ograniczenia budżetu budowy rozwiązania. 

Framework React Native pozwala na tzw. rapid development. Poniższe cechy React Native i narzędzia pozwalają w szybki sposób tworzyć aplikacje mobilne i zmniejszyć potrzebny budżet: 

  • zastosowanie języka JavaScript lub TypeScript
    Przede wszystkim JavaScript jest językiem skryptowym, więc nie trzeba czekać na kompilację kodu.
    Jest to jeden z najpopularniejszych języków programowania, co oznacza dużą bazę specjalistów i dostępnych narzędzi.
    Szybkość działania jest niemal tak dobra jak w przypadku języków kompilowanych, dzięki bardzo zaawansowanym, dojrzałym silnikom JavaScript jak np. V8.
    Poza tym jest całkiem prosty, lekki język do nauki i implementacji.
  • “hot and live reloading” – możliwości podmiany kodu aplikacji w locie – programista pisząc kod może od razu zobaczyć efekty wprowadzonych zmian. Wystarczy zapisać pliki i sprawdzić w aplikacji jak zmieniony kod źródłowy aplikacji wpłynął na działania programu,
  • możliwość testowania aplikacji w przeglądarce internetowej (symulacji aplikacji) bez konieczności wgrywania aplikacji na telefon – w szczególności dzięki tej funkcji można szybko tworzyć widoki aplikacji mobilnej co w przypadku technologii natywnych nie jest tak wydajne. Natywne oprogramowanie Android i iOS można również testować na symulatorach, przy czym wydajność symulatorów iOS i Android pozostawia bardzo dużo do życzenia – pod tym względem React Native znaczenie wyprzedza technologie natywne dając duży zysk w czasie developmentu,
  • Cross-platform – aplikacja na dwa systemy Android i iOS – aplikacje stworzone są z jednego kodu źródłowego. Szerzej opisane w kolejnym rozdziale poniżej.

Aplikacje Android i iOS tworzone na raz

Zazwyczaj twórcy startupów lub nowych rozwiązań, którzy dysponują ograniczonym budżetem stoją przed dylematem wyboru platformy mobilnej Android lub iOS, dla której wdrożą swoje rozwiązanie. W zależności od regionu świata (kraju) popularność urządzeń z systemem Android i iOS jest różna:

Dla rynku USA w 2018 r. : 57% Android, 43% iOS

Dla rynku Europejskiego w 2019 r.: 72% Android, 26% iOS

Dzięki zastosowaniu technologii React Native możemy zbudować rozwiązanie, które będzie dostępne od razu na obie platformy Android oraz iOS, przy zachowaniu zmniejszonych kosztów developmentu. W ten sposób możemy zbadać adaptację naszego produktu zarówno wśród użytkowników systemu iOS jak i użytkowników Android. 

Projekt stworzenia aplikacji mobilnej składa się z kilku faz lub rodzajów zadań do wykonania – zarządzanie, UX/UI design, implementacja, testowanie, wdrożenie (w skrócie oznaczane dalej: PM, UX, DEV, QA). 

Faza implementacji, która polega na napisaniu kodu źródłowego aplikacji, dzięki React Native może zostać skrócona do 60-70% czasu, który musiałby być poświęcony na oprogramowaniu 

Relatywnie dużą część wytwarzania aplikacji w RN stanowi konfiguracja i zarządzanie projektami natywnymi. Jeśli np. musimy zmienić bundle id, ikony aplikacji, lub podpiąć natywną bibliotekę (Crashlytics), trzeba to zrobić dla każdej platformy osobno, nie ma drogi na skróty. 

W pozostałych fazach nie mamy już zysku czasowego z zastosowania technologii React Native – co więcej w fazie testowania może okazać się, że potrzebujemy nawet więcej czasu, niż gdybyśmy zastosowali technologie Natywne (dla technologii React Native występują czasami specyficzne problemy na różnych urządzeniach z różnymi wersjami systemów – w szczególności jeśli chodzi o warstwę widoków aplikacji. 

Uwzględniając, że pozostałe fazy zajmują około 50-60% kosztów całego projektu – finalny zysk z zastosowania technologii React Native może wynosić od 15 do 25% kosztów całego projektu. Czyli projekt, który napisany w technologiach natywnych kosztowałby nas 100 000 USD (cały projekt czyli UX+DEV+PM+QA), dzięki zastosowaniu technologii React Native będzie kosztował około 75 000 do 85 000 USD. 

Mniejszy zespół developerski

Zarządzanie zespołem tworzącym nowy produkt jest trudne – im więcej osób w zespole, tym potrzebne są większe nakłady na zarządzanie. To silny argument, który przemawia za wyborem React Native do budowy MVP.

Dla Scrum Mastera lub Project Managera zarządzanie mniejszym zespołem oznacza więcej czasu na inne zadania. W startupach rola Product Ownera, Project Managera, Szefa od Marketingu i Sprzedaży jest często łączona w jednej osobie – Foundera startupu 🙂 Jeśli dzięki technologii React Native możemy zmniejszyć zespół developerski o 1 czy 2 osoby oznacza to, że miesięcznie zaoszczędzimy również przynajmniej 15 lub 30 godzin, które normalnie przeznaczone zostałyby na zarządzenie pracą tych programistów. Dla młodej firmy to bardzo dużo. 

Zdarza się, że w naszym zespole po prostu dostępny jest jeden programista. Programistów, którzy znają obie platformy natywne Android i iOS jest bardzo bardzo mało. Stąd przez zastosowanie React Native mamy możliwość wciąż stworzyć aplikację na obie platformy dysponując nawet tylko jednym programistą. Dodatkowo, jeśli ten programista miał doświadczenie w tzw. Front-end development wtedy przejście do technologii React Native będzie dla niej/niego naturalne i będzie mógł nauczyć się szybciej tej platformy. 

Z drugiej strony należy uważać i potwierdzić czy dany specjalista, który będzie tworzył rozwiązanie mobilne na pewno ma wiedzę o budowaniu rozwiązań mobilnych, bo front-end development czy react.js to nie to samo co React Native – patrz “6 mitów o React Native”

Kilka rzeczy, na które należy uważać (zanim wybierzesz React Native)

Jest kilka aspektów, na które należy zwrócić uwagę. Nie dla każdego projektu wybór React Native będzie trafny. W szczególności gdy zalety przedstawione wyżej nie są dla nas najważniejsze, a liczymy po prostu na stworzenie najlepszej jakościowo aplikacji – wtedy nie pozostaje nic innego jak wybrać technologie Natywne Android i iOS.

Należy uważać na młodą technologię

Bieżąca stabilna wersja platformy React Native to wersja 0.60 release 3’rd July 2019. Dla osób technicznych/ programistów to mocna lampka ostrzegawcza – oznacza tylko jedno, technologia będzie się zmieniać i to szybko. Wprowadzanie często nowych wersji platformy, na której chcemy oprzeć swój projekt może oznaczać ryzyko ponoszenie dodatkowych kosztów – jeśli postanowimy aktualizować na bieżąco podstawowy framework naszej aplikacji. Dodatkowo wersja 0.60 oznacza, że za chwilę może zostać zmieniona na 1.0, 2.0, które potencjalnie mogą nie być kompatybilne.

Młoda technologia oznacza również dużą liczbę problemów, w szczególności na różnych telefonach, różnych systemach operacyjnych. Niestety, dodatkowa warstwa, dzięki której uzyskujemy oprogramowanie “cross-platform” jest czasami powodem nowego rodzaju problemów, których normalnie podczas programowania natywnego Android lub iOS byśmy nie doświadczyli. 

Utrudniony dostęp do specjalistów

Jak to zazwyczaj bywa, gdy popyt przerasta podaż. Można stwierdzić, że na rynku nie ma jeszcze “Senior React Native” developerów – po prostu technologia jest za młoda, żeby wytworzyć specjalistów z dużym doświadczeniem. 

Kolejnym problemem jest to, że programistów natywnych bardzo ciężko przekonać do tej technologii. Spośród 20 programistów iOS i Android w itCraft nie udało nam się przekonać żadnego do przejścia do React Native – to mocna statystyka pokazująca, że zazwyczaj to front-end deweloperzy uczą się tej technologii jako dodatkowej kompetencji programowania aplikacji mobilnych. To niestety powoduje kolejny problem – tylko programista z doświadczeniem w programowaniu aplikacji mobilnych zna i rozumie z tym związane problemy, wyzwania i aspekty techniczne, które po prostu nie występują w programowaniu aplikacji webowych (notyfikacje, obracanie ekranu, gps, nfc, bluetooth i inne komponenty natywne telefonu oraz natywne SDK Android oraz iOS).

Aplikacje React Native są mniej wydajne 

  • Logika biznesowa jest pisana w JavaScript, który jest trochę wolniejszy od języków kompilowanych (Kotlin, Swift).
  • JavaScript jest jednowątkowy – więc nie możemy wykorzystać mocy wielordzeniowych procesorów. Ewentualnie możemy zaimplementować wielowątkowe zadania na poziomie natywnym, co nie będzie efektywne z punktu widzenia czasu developmentu.
  • Mimo powyższych, przeciętna aplikacja biznesowa jest równie płynna co napisana w sposób natywny.
  • React Native nie jest przystosowany do renderowania złożonych animacji 60 fps w czasie rzeczywistym (możemy tu osiągnąć 10-20 fps na urządzeniu ze średniej półki cenowej), co oznacza że nie nadaje się do implementacji większości gier.
  • Czas uruchomienia jest z reguły odrobinę dłuższy niż aplikacji natywnych.

Lepszy UX/UI w technologiach natywnych Android i iOS

Jak już wspomniałem wyżej aplikacje napisane w technologii React Native wiążą się z podjęciem pewnych kompromisów – przede wszystkim jeśli chodzi o jakość (UX/UI) oraz wydajność aplikacji.

Żadna z technologii cross-platform nie dostarczy lepszego UX niż aplikacje napisane natywnie. Łatwo to odczuć w szczególności, gdy korzysta się z aplikacji napisanych w technologiach hybrydowych min. Ionic, Phonegap/Cordova. Widać w takich aplikacjach, że niektóre elementy nie korzystają ze standardowych komponentów SDK Android lub iOS, aplikacje na obu platformach wyglądają podobnie (a natywne platformy iOS i Android znacznie różnią się od siebie)

Aplikacje React Native pod tym względem zachowują się lepiej – używają natywnych komponentów platform Android i iOS, które są renderowane według dobrych praktyk stosowanych przez każdą z platform z osobna, ale wciąż jest to jedynie dążenie do ideału, który można uzyskać jedynie programując natywnie aplikację Android i iOS.


Chcesz zbudować swoje MVP w React Native?
Skontaktuj się z nami, żeby omówić możliwości!



Karol Wegner

Board Member

Post article


5/5 - (3 votes)

Masz projekt? Porozmawiajmy

Skontaktuj się