Moduł 1 · Środowisko i pierwsze kroki z Expo
Czym jest React Native i jak działa pod maską
Po tej lekcji wyjaśnisz, jak React Native zamienia kod JavaScript w prawdziwe ekrany na iOS i Androidzie, i ocenisz, czy pasuje do Twojego projektu.
Czym jest React Native
React Native to biblioteka open source rozwijana przez Meta i społeczność. Piszesz w niej komponenty w React, tak jak w aplikacji webowej, ale zamiast elementów HTML dostajesz natywne widoki systemu. Komponent <View> na iPhonie staje się widokiem UIKit, a na Androidzie zwykłym widokiem Androida. Przycisk, pole tekstowe czy przewijana lista zachowują się tak, jak użytkownik zna je ze swojego telefonu, bo to są te same elementy, których używają aplikacje pisane w Swift albo Kotlinie.
Przez cały kurs budujesz jedną aplikację: zamówienia z odbiorem osobistym dla fikcyjnej Piekarni Kłos z Poznania. Klient przegląda menu, dodaje chleb żytni za 9,50 zł do koszyka, wybiera punkt odbioru na Jeżycach albo Wildzie i dostaje powiadomienie, gdy zamówienie jest gotowe. Każdy moduł dokłada do niej jeden element.
import { Text, View } from 'react-native';
export default function Powitanie() {
return (
<View style={{ padding: 24 }}>
<Text>Dzień dobry w Piekarni Kłos</Text>
</View>
);
}Ten sam plik działa na obu platformach. Różnice między systemami (np. wygląd przełącznika) zapewnia system, nie Ty.
Jak działa pod maską: Nowa Architektura
Aplikacja React Native ma dwa światy. W jednym działa Twój kod JavaScript (logika, stan, komponenty). W drugim działa kod natywny, który rysuje ekran i rozmawia z aparatem, GPS czy powiadomieniami. Kiedyś łączył je asynchroniczny „most”, który przesyłał wiadomości w formacie JSON. Przy dużym ruchu (szybkie przewijanie, animacje) most bywał wąskim gardłem.
Od wersji 0.82 (październik 2025) React Native działa wyłącznie na Nowej Architekturze. Składa się ona z trzech elementów:
- JSI (JavaScript Interface): JavaScript trzyma bezpośrednie odwołania do obiektów C++ i może wywołać kod natywny bez serializacji do JSON, także synchronicznie.
- Fabric: nowy renderer, który liczy układ ekranu w C++ i obsługuje funkcje współbieżnego Reacta.
- Turbo Native Modules: moduły natywne ładowane dopiero wtedy, gdy są potrzebne, co skraca start aplikacji.
Nowa Architektura, jedyna od React Native 0.82. Stan na październik 2026.
JavaScript wykonuje silnik Hermes, zaprojektowany przez Meta dla urządzeń mobilnych. Od React Native 0.84 domyślny jest Hermes V1. Hermes kompiluje kod do bajtkodu już przy budowaniu aplikacji, więc telefon nie musi go parsować przy każdym starcie.
Expo: zestaw narzędzi, z którym pracujesz w kursie
Sam React Native to silnik. Do wygodnej pracy potrzebujesz jeszcze narzędzi do tworzenia projektu, uruchamiania na telefonie, budowania paczek i publikacji. Dokumentacja React Native zaleca do nowych aplikacji framework, a najpopularniejszym jest Expo. Daje on:
- polecenie
create-expo-app, które tworzy gotowy projekt z TypeScript i nawigacją (Expo Router), - aplikację Expo Go do szybkiego podglądu na telefonie,
- biblioteki
expo-*do aparatu, lokalizacji, powiadomień i plików, - usługi EAS do budowania i wysyłania aplikacji do sklepów (moduł 8).
Wersje Expo nazywają się „SDK”. Stan na październik 2026: SDK 58 wyszło 15 października 2026 i używa React Native 0.88, a SDK 57 używa React Native 0.86. Domyślne npx create-expo-app tworzy jeszcze projekt SDK 57, dopóki w sklepach nie pojawi się Expo Go dla SDK 58. W kursie pracujesz na SDK 57, a różnice w SDK 58 omawiamy tam, gdzie mają znaczenie.
Kiedy React Native, a kiedy coś innego
React Native dobrze sprawdza się, gdy zespół zna JavaScript lub React, aplikacja ma działać na iOS i Androidzie, a ekrany to głównie listy, formularze, mapy i dane z API. Tak wygląda większość aplikacji usługowych: sklep, rezerwacje, program lojalnościowy, aplikacja Piekarni Kłos.
Warto rozważyć czysto natywne podejście (Swift, Kotlin), gdy aplikacja intensywnie korzysta z grafiki 3D, przetwarza obraz z kamery w czasie rzeczywistym albo musi od pierwszego dnia używać najnowszych funkcji systemu. Nawet wtedy React Native pozwala dopisać własny moduł natywny, więc wybór nie jest zero-jedynkowy.
Porównanie ogólne, na podstawie dokumentacji React Native i Expo.
Najważniejsze w 3 punktach
- React Native rysuje prawdziwe natywne widoki iOS i Androida z komponentów React napisanych w TypeScript lub JavaScript.
- Od wersji 0.82 działa tylko Nowa Architektura (JSI, Fabric, Turbo Native Modules), a kod wykonuje silnik Hermes.
- Expo dostarcza projekt startowy, Expo Go, biblioteki natywne i usługi EAS; w kursie pracujesz na SDK 57 (stan na październik 2026).
Źródła
- React Native, blog wydań 0.80, 0.82 i 0.84 (Nowa Architektura, Hermes V1): https://reactnative.dev/blog, dostęp 17.10.2026
- React Native, About the New Architecture: https://reactnative.dev/architecture/landing-page, dostęp 17.10.2026
- React Native, Get Started (zalecenie frameworka, Expo): https://reactnative.dev/docs/environment-setup, dostęp 17.10.2026
- Expo, SDK versions (tabela SDK i React Native): https://docs.expo.dev/versions/latest/, dostęp 17.10.2026
- Expo, informacja o wydaniu SDK 58 (15.10.2026): https://expo.dev/changelog/sdk-58, dostęp 17.10.2026