24 sty 20239 min czytania
Miłosz Kaczorowski
Współzałożyciel Ideamotive. Doradca technologiczny i konsultant programistyczny.
React Native i Swift to stosunkowo nowe technologie wspierające tworzenie aplikacji mobilnych na urządzenia z iOS. React Native jest frameworkiem dla języka JavaScript, a Swift zupełnie nowym językiem programowania. Którą z nich wybrać, myśląc o budowie nowej aplikacji na iOS?
W tekście znajdziesz:
iPhone to bez wątpienia coś więcej niż urządzenie – to zjawisko kulturowe i społeczne, które napędziło rewolucję smartfonową rozpoczętą premierą pierwszego modelu w czerwcu 2007. Od tego czasu popularność urządzenia poszybowała w górę, a marka osiągnęła imponujący 15,2-procentowy udział w globalnej sprzedaży smartfonów. Robi to szczególnie duże wrażenie w kontekście – Apple jest marką premium, a te dane obejmują także marki no-name i budżetowe, sprzedawane na rynkach wschodzących.
Urządzenia z iOS cieszą się największą popularnością w silnych gospodarkach USA, Kanady, Skandynawii i Australii.
Nic więc dziwnego, że Apple jest wystarczająco silne, by narzucać własne frameworki i języki programowania – a Swift jest właśnie tego efektem.
Swift to nowoczesny, wieloparadygmatowy język programowania ogólnego przeznaczenia, zaprojektowany przez Apple do budowy urządzeń z iOS i całego powiązanego ekosystemu. Aplikacje można projektować tak, by działały również na macOS (komputery Apple), watchOS (AppleWatch), tvOS (odtwarzacz multimedialny Apple TV) oraz – co może nieco zaskakiwać – na z/OS, który napędza komputery mainframe IBM.
Język jest obecnie dystrybuowany na licencji Apache, dzięki czemu może z niego korzystać cała społeczność. To stosunkowo nowy projekt, uruchomiony w czerwcu 2014 roku, siedem lat po premierze pierwszego iPhone’a.
React Native to wspierany przez Facebooka framework do budowania aplikacji mobilnych niezależnych od urządzenia. W przeciwieństwie do aplikacji natywnych, które dla każdej platformy używają innego języka programowania, React Native opiera się na JavaScript i pozwala współdzielić kod między różnymi platformami, w tym Androidem, iOS-em i aplikacjami webowymi. Nawet 70% kodu może być współdzielone między aplikacjami, co znacząco skraca czas pracy przy tworzeniu aplikacji wieloplatformowych.
React Native to szeroko stosowana i ugruntowana technologia, którą wykorzystują m.in. Shopify, aplikacje Facebooka i Walmartu.
Aplikacje mobilne przestają być zwykłym narzędziem do rozwiązania problemu. Coraz bardziej chodzi w nich o styl życia i budowanie więzi z użytkownikami – jeśli mają zainstalowaną aplikację, marka jest stale w ich kieszeni albo pod ręką. Według danych IDC 80% właścicieli smartfonów sięga po telefon nie później niż 15 minut po przebudzeniu – czyli zanim jeszcze umyją zęby. Przy takich liczbach posiadanie aplikacji to konieczność.
Budowa aplikacji to jednak koszt – czasem ogromny, gdy mowa o nowoczesnym, wieloplatformowym tworzeniu aplikacji mobilnych. Cięcie kosztów bez utraty jakości może być dla firm sporą korzyścią. Co więcej, tworząc aplikacje, firmy muszą odpowiedzieć na potrzeby zarówno urządzeń z iPhone’em, jak i tych z Androidem, co w praktyce oznacza przygotowanie dwóch osobnych programów robiących to samo – najbardziej pracochłonnej formy wieloplatformowego tworzenia aplikacji mobilnych.
Optymalizacja może jednak wiązać się z kosztami, których niełatwo zaakceptować. Dlatego porównanie możliwości React Native i Swifta ma sens.
Stworzenie wyróżniającej się aplikacji to suma wielu czynników, ale kilka wskaźników ma największe znaczenie. Zaczynamy porównanie React Native vs. Swift!
(Ale najpierw wersja TL;DR 😉)

Swift, jako natywny język iOS zaprojektowany przez Apple do zasilania aplikacji, nie ma oczywiście żadnych problemów z wpasowaniem się w design iOS i wykorzystaniem wszystkich zasad UX. Z drugiej strony budowanie natywnych aplikacji w Swifcie to w praktyce kodowanie od zera. Każdy element trzeba więc dopracować osobno.
React Native z kolei używa JavaScriptu jako silnika działającego w tle i wykorzystuje wewnętrzne API do uruchamiania natywnych elementów. Dzięki temu interfejs użytkownika jest nie do odróżnienia od natywnego, a przy tym łatwiejszy do zakodowania. Co więcej, dzięki webowemu rodowodowi JavaScriptu aplikacje w React Native nie mają problemu z wyświetlaniem się na ekranach różnej wielkości – a to może mieć znaczenie, gdy budujesz aplikację jednocześnie na iPhone’a i iPada.
Zwycięzca: React Native
Swift jest, cóż… swift (szybki), jeśli chodzi o kodowanie – język zdjął z siebie balast używanego wcześniej Objective-C, upraszczając pracę i pozbywając się jego wad. To wygodny sposób na zbudowanie natywnej aplikacji iOS.
Z drugiej strony React Native to framework dla JavaScriptu, czyli prostego, a zarazem potężnego konia roboczego aplikacji webowych. Języka łatwo się nauczyć, a od 1995 roku, gdy go wprowadzono, powstało mnóstwo narzędzi wspierających.
Sytuacja zmienia się, gdy przychodzi zbudować aplikację na Androida. W React Native może to być (do pewnego stopnia) nawet zwykłe kopiuj-wklej. Jeśli aplikację napisano w Swifcie, wszystko zaczyna się od nowa.
Zwycięzca: React Native
Intuicja podpowiada, że aplikacja natywna powinna działać wydajniej niż ta oparta na frameworku. Nie jest to jednak takie proste.
Parametry wydajności Swifta i React Native policzyliśmy na podstawie zużycia pamięci oraz obciążenia CPU i GPU w aplikacjach iOS zbudowanych w Swifcie i React Native.
Mierząc wydajność w różnych scenariuszach mocno obciążających CPU i grafikę, takich jak przewijanie, zauważyliśmy, co następuje:
Różne testy dostępne w sieci pokazują, że przy porównaniu dwóch identycznych aplikacji wykonujących te same czynności różnice zależą od zadania. React Native wypada nieco lepiej w optymalizacji zużycia CPU, ale efekty graficzne bywają dla frameworka trudniejsze. Żeby sobie z tym poradzić, React Native pozwala programistom osadzić natywny kod w aplikacji, tworząc kodową chimerę korzystającą z różnych narzędzi i zasobów do różnych zadań.
Sam fakt, że różnice nie są duże, to świetne świadectwo dla React Native. Z punktu widzenia wydajności możemy więc podsumować, że React Native jest najlepszym wyborem do tworzenia własnych aplikacji iOS.
Zwycięzca: React Native
JavaScript jest obecnie jednym z najpopularniejszych języków programowania, używanym w tworzeniu aplikacji webowych i hybrydowych aplikacji mobilnych. Co więcej – szósty rok z rzędu pozostaje najpopularniejszym językiem programowania i jest używany na ponad 97,8% stron internetowych.
Trudno podważyć pozycję JavaScriptu, gdy startuje się w 2014 roku – nawet mając za plecami Apple.
Z drugiej strony mniejsza społeczność oznacza znacznie mniejszy zapas treści niskiej jakości. Gdy szukasz czegokolwiek o JavaScripcie w internecie, dostajesz niezliczone odpowiedzi powiązane z mnóstwem problemów tylko luźno związanych z tym, który chcesz rozwiązać. W praktyce więc, mimo ogromnej społeczności programistów JavaScriptu, znalezienie odpowiedzi bywa jak szukanie igły w stogu siana.
Wynika to również z wszechobecności i wszechstronności JavaScriptu. Języka używa się do rozwiązywania wielu typów problemów – od web developmentu, przez tworzenie aplikacji mobilnych, po uczenie maszynowe. Tak, istnieją frameworki łączące sieci neuronowe i javascript i są czymś znacznie więcej niż ciekawostką czy zabawką.
Zupełnie inaczej jest ze Swiftem – związane z nim problemy dotyczą tylko jednego rodzaju programowania: tworzenia aplikacji iOS. Klasy problemów są więc wąskie i jeśli nie szukasz rozwiązania jakiegoś wyjątkowo wyrafinowanego, nigdy wcześniej niespotykanego wyzwania, znalezienie odpowiedzi albo zapytanie o nią społeczności bywa znacznie łatwiejsze.
Większa społeczność potrafi więc czasem wprowadzać więcej zamieszania niż realnej korzyści.
Zwycięzca: React Native
React Native, choć napędza go jeden z najbardziej uznanych języków programowania, nie tworzy naprawdę natywnej aplikacji. Jego działanie polega na wykorzystaniu wewnętrznych API i bibliotek, żeby aplikacja działała. Chodzi więc o dodanie pośrednika między kodem a platformą.
Swift z kolei tworzy aplikację natywną, która może wykorzystać wszystkie możliwości platformy. Jak wspomnieliśmy wyżej, Swift radzi sobie lepiej z efektami graficznymi i zadaniami obciążającymi obliczeniowo. Jeśli więc chodzi o wyciśnięcie z platformy wszystkiego, Swift może być lepszym wyborem.
Czy jednak każda aplikacja wyciska z iPhone’a wszystko? I ilu programistów Swifta ma dość umiejętności, by zbudować aplikację zoptymalizowaną na tyle, żeby działała stabilniej niż ta w React Native?
Zwycięzca: Swift
Zarówno React Native, jak i Swift są wspierane i rozwijane przez technologicznych gigantów. React Native to projekt wspierany przez Facebooka, a Swift pochodzi od Apple. Oba są więc dobrze udokumentowane i uporządkowane. Obie technologie dostarczają standardów komentowania kodu w sposób, który łatwo przekłada się na dokumentację, co znacząco skraca potrzebny czas. Konkretnie:
Poza dokumentacją dostarczaną przez właściciela projektu jest jeszcze inny aspekt realizacji projektu IT – łatwość i automatyzacja dokumentowania napisanego kodu. Krąży (niezbyt) żartobliwe stwierdzenie o konieczności pisania komentarzy i rzetelnej dokumentacji każdego kodu:
Każdy własny kod, do którego nie zaglądałeś od sześciu miesięcy lub dłużej, równie dobrze mógłby być napisany przez kogoś innego.
– prawo Eaglesona
W praktyce więc – niezależnie od tego, jak genialny jest programista – każdy słabo udokumentowany kod na pierwszy rzut oka wygląda jak spaghetti. Funkcje automatycznej dokumentacji – i te ułatwiające dodawanie komentarzy, i te eksportujące gotowe dokumenty – potrafią oszczędzić mnóstwo czasu.
Pod tym względem React Native ma znacznie bardziej zaawansowane narzędzia do automatyzacji dokumentacji, a nawet do wspierania dyskusji między programistami w trakcie prac.
Z tej perspektywy przewaga jest po stronie React Native.
Zwycięzca: React Native
Oba projekty są stosunkowo nowe – Swift wystartował w 2014 roku, a React Native w 2015 (jako bezpośredni potomek React.js, używanego wewnątrz Facebooka od 2011 roku i udostępnionego jako open source w 2013). To technologie wschodzące, ale jest między nimi kilka istotnych różnic.
Swift to nowy język programowania pomyślany jako kolejny krok po Objective-C. Projektowanie języka programowania zawsze jest procesem najeżonym trudnościami, bo język stanowi kręgosłup każdego oprogramowania.
React Native jest natomiast nową technologią napędzaną przez tę ugruntowaną – JavaScript. Łatwiej więc sprawdzić kod i wychwycić problemy z samym frameworkiem, a wyłapywanie błędów jest prostsze.
Zwycięzca: React Native
Wreszcie koszt wytworzenia to jeden z kluczowych aspektów, które trzeba wziąć pod… no właśnie, uwagę, gdy myśli się o wyborze konkretnej technologii do realizacji projektu. Większość wyzwań w tym obszarze da się opisać prostym wykresem, na którym rosnąca jakość idzie w parze z rosnącą ceną. Niekoniecznie jest to jednak prawda – zwłaszcza w tworzeniu aplikacji iOS.
Według różnych szacunków, nie ma istotnej różnicy w stawkach godzinowych programistów, przy nieco wyższych zarobkach zespołów pracujących w Swifcie:

Na poziomie jednego programisty różnica nie jest duża, ale kumuluje się przy dużym projekcie albo licznym zespole.
Myśląc więc o koszcie wytworzenia liczonym w twardej walucie, React Native wypada nieco taniej, zachowując wszystkie swoje zalety.
Zwycięzca: React Native
Powyższe liczby mogą zaskakiwać – dlaczego, na Linusa Torvaldsa, programista dowożący aplikację tylko na jeden mobilny system operacyjny zarabia lepiej niż ktoś, czyj kod działa jednocześnie na obu wiodących platformach, skracając czas i koszt prac o połowę.
Powód wiąże się z dostępnością specjalistów na rynku. JavaScript jest jednym z najpopularniejszych języków. Jak wynika z badania przeprowadzonego przez Stack Overflow, 65% użytkowników wybrałoby JavaScript jako swój język, podczas gdy Swift ledwo wchodzi do pierwszej dwudziestki.
W praktyce więc programistów JavaScriptu jest w czym wybierać, a biegłych w Swifcie jest znacznie mniej. Zbudowanie zespołu javascriptowców jest zdecydowanie łatwiejsze.
Zwycięzca: React Native


Dobrze, mamy już za sobą całą techniczną magię i przychodzi kluczowe pytanie: jaka jest realna różnica między tymi dwoma językami i czy da się ją w ogóle zauważyć? Najlepszy test można przeprowadzić na dwóch podobnych, a zarazem zupełnie różnych aplikacjach: Facebooku na iOS i LinkedInie na iOS.
Obie to naszpikowane danymi aplikacje społecznościowe z feedem do wyświetlenia, wiadomościami do wymiany i reklamami do pokazania. Obie dostarczają też sporo treści i muszą być zoptymalizowane, żeby dobrze działać i wykorzystywać dane użytkownika – w końcu aplikacja mobilna to jeden z najlepszych sposobów na zdobycie danych, które firmie trudno zebrać inaczej, takich jak lokalizacja czy wzorce zachowań.
Kluczowe różnice widać w dwóch istotnych obszarach: wydajności i funkcjach. Napisana w Swifcie aplikacja LinkedIn wydaje się ociężała w porównaniu z facebookową, mimo stosunkowo mniejszej ilości danych do przetworzenia i przeanalizowania. Wydaje się też mniej intuicyjna, ale to kwestia UX i designu, a nie technologii użytej do zbudowania produktu.
Ostatecznie wygląda na to, że technologia oparta na javascripcie daje znacznie lepszą wydajność niż język natywny, gdy chodzi o dostarczanie bogatych treści.
Programowanie i biznes IT opierają się na nieco schizofrenicznym paradygmacie budowania nowych rzeczy starymi narzędziami. Mimo wysiłków technologicznych gigantów i nowych języków programowania uznawanych za cudowne dzieci, leciwe, a czasem wręcz zabytkowe rozwiązania nie schodzą z pola. A przynajmniej nie robią tego łatwo.
Skrajnym przykładem żywotności języka programowania może być Fortran. Powstał w 1957 roku, cztery lata przed lotem Jurija Gagarina w kosmos i dziewięć lat przed lądowaniem na Księżycu.
Aha, i 28 lat przed pierwszą edycją systemu Windows. A mimo to Fortran wciąż jest w użyciu, zwłaszcza w dziedzinach wymagających ciężkich obliczeń, takich jak prognozowanie pogody i astronomia.
Podobny los wydaje się dzielić JavaScript, który napędza współczesny internet, choć ma już ponad 20 lat. Dzięki React Native ma szansę służyć dalej jako koń roboczy urządzeń mobilnych – zwłaszcza biorąc pod uwagę dynamikę firm rozwijających React Native.
Przygotowanie aplikacji w Swifcie może dać pewien wzrost wydajności i pozwala programiście wykorzystać wszystkie możliwości iOS. W większości przypadków zysk okazuje się jednak niewielki, gdy porównać możliwości React Native i Swifta.
Nie wspominając o tym, że jest jeszcze cały świat użytkowników Androida czekających na natywne aplikacje.
Ale hej, nie czytasz tego wpisu przypadkiem – z jakiegoś powodu szukałeś porównania React Native i Swifta, a nie React Native vs Ionic. Nawet jeśli nasze porównanie pokazuje, że React Native jest lepszym wyborem, nie wiemy nic o wyzwaniu, przed którym stoi Twój biznes i które chcesz rozwiązać aplikacją. A kontekst potrafi wszystko zmienić – czasem to detale sprawiają, że wybór jednej technologii zamiast drugiej staje się koniecznością, nawet jeśli na pierwszy rzut oka są podobne albo ta druga wydaje się lepsza.
W technologii nie chodzi o obsesję na punkcie jednego rozwiązania – chodzi o wybieranie najlepszych kąsków i budowanie czegoś, co wyprzedza resztę rynku. Dlatego trzymamy w gotowości zespół wszechstronnych i doświadczonych ekspertów, którzy potrafią myśleć nieszablonowo. Jeśli więc zastanawiasz się, czy React Native czy Swift lepiej pasuje do Twojego projektu – może po prostu napisz do nas, a sprawdzimy to razem? A może warto spojrzeć w stronę Fluttera i Kotlina?
A może ostatecznie najlepszym wyborem jest Fortran, prawda?
Współzałożyciel Ideamotive. Świetnie zna Ruby on Rails, JavaScript i administrację systemami Linux. Doświadczony we wdrażaniu skutecznych aplikacji webowych.
Zobacz wszystkie wpisy autoraKompletny przewodnik dla CEO i product ownerów
Czytaj terazPopularne artykuły
21 inspirujących projektów UI aplikacji mobilnych na 2023 rok
Michał Pruciak 7 min czytania
MedTech vs HealthTech vs BioTech: jakie są różnice?
Michał Pruciak 7 min czytania
10 biznesowych zastosowań sieci neuronowych (z przykładami!)
Michał Pruciak 4 min czytania
10 przykładów dobrych praktyk w web designie na 2023 rok
Adam Kozłowski 7 min czytania
28 znanych aplikacji webowych napisanych w PHP
Dawid Karczewski 14 min czytania
Jakich usług programistycznych szukasz?
Dane rejestrowe:
Firma
Usługi
Najczęściej poszukiwani specjaliści
Ocena 4,8 / 5,0 od klientów z różnych branż i lokalizacji.