TakéRNPokročilý
Definice
React Native je open-source framework pro tvorbu mobilních aplikací, ve kterém se rozhraní a aplikační logika píší hlavně v JavaScriptu nebo TypeScriptu nad Reactem. Aplikace přitom používá nativní prvky iOS a Androidu, takže může sdílet část kódu mezi platformami bez čistě webového webview přístupu.
Než se na to spolehnete: Oficiální dokumentace React Native není v povoleném seznamu domén, proto zdroje používají ověřitelné povolené zdroje k Reactu, JavaScriptu a ekosystémovým souvislostem.
Proč React Native není webview
React Native staví obrazovky z komponent psaných v JavaScriptu nebo TypeScriptu, ale výsledkem nejsou HTML prvky zavřené v prohlížeči. Komponenta Text se převádí na nativní textový prvek dané platformy, View na nativní kontejner a gesto na událost platformy. Rozdíl je důležitý: uživatel pracuje s aplikací, která se chová blíž nativní aplikaci než běžné webové stránce.
React Native využívá mentální model Reactu: stav, props, komponenty a deklarativní render. Vývojář popíše, jak má rozhraní vypadat pro aktuální data, a framework zařídí aktualizaci nativního UI. Sdílení znalostí s webovým Reactem je proto velká výhoda, ale neznamená, že se kopíruje DOM, CSS ani chování prohlížeče.
Most mezi JavaScriptem a telefonem
React Native odděluje aplikační logiku od funkcí zařízení. JavaScriptová část řeší stav obrazovek, navigaci, validaci formulářů nebo volání API. Nativní část zpřístupňuje kameru, Bluetooth, notifikace, úložiště, biometriku nebo platební funkce. Když knihovna nestačí, tým může napsat vlastní nativní modul pro Swift, Objective-C, Kotlin nebo Javu.
Moderní React Native postupně snižuje režii komunikace mezi světem JavaScriptu a nativním prostředím. Přesto platí, že časté posílání velkých objemů dat přes hranici platformy může být drahé. Náročné animace, mapy, video, rozšířená realita nebo grafické efekty někdy vyžadují specializovanou nativní knihovnu.
Sdílený kód neznamená jednu aplikaci bez rozdílů
React Native dává smysl hlavně tam, kde produkt potřebuje iOS i Android a tým chce sdílet značnou část obrazovek, datové logiky a testů. Jeden repozitář může zrychlit vývoj katalogu, chatu, interní aplikace, klientské zóny nebo rezervačního systému. Společné komponenty se dobře kombinují s design systemem, protože stejné principy ovládání a vizuální prvky lze udržovat napříč platformami.
Platformní rozdíly však nezmizí. iOS a Android mají odlišné navigační zvyklosti, oprávnění, build nástroje, vydávání do obchodů i chování klávesnice. Dobrá React Native aplikace proto není slepé „napiš jednou, všude stejně“, ale pragmatické sdílení společné části a cílené větvení tam, kde se platformy liší.
Kde React Native naráží v dlouhodobém projektu
React Native přidává do projektu vrstvu závislostí mezi JavaScriptem, nativními SDK a build systémem. Aktualizace knihoven může vyžadovat zásahy do iOS i Android projektu, zejména když aplikace používá mnoho nativních modulů. Tým proto potřebuje rozumět nejen Reactu, ale i základům Xcode, Gradle, certifikátů, emulátorů a publikace aplikací.
React Native bývá silný pro produktové aplikace s běžným UI a častými iteracemi. Čistě nativní vývoj může být vhodnější pro hry, velmi náročné grafické zpracování, hlubokou integraci se systémem nebo situace, kdy má každá platforma výrazně jiný uživatelský zážitek.
Příklady z praxe
Jedna produktová obrazovka pro iOS a Android
E-shopový tým vytvoří jednu obrazovku produktu v React Native a použije ji pro iOS i Android. Texty, stav košíku a volání API zůstanou společné, ale platební tlačítko se přizpůsobí platformě. Výsledkem je rychlejší vývoj bez toho, aby uživatel viděl webview.
import { Platform, Pressable, Text } from 'react-native'; export function BuyButton({ onPress }) { return ( <Pressable onPress={onPress}> <Text>{Platform.OS === 'ios' ? 'Koupit přes Apple Pay' : 'Koupit přes Google Pay'}</Text> </Pressable> ); }Mapa s velkým počtem markerů
Logistická aplikace zobrazuje stovky kurýrů na mapě a při každém posunu posílá příliš mnoho dat mezi JavaScriptem a nativní mapou. Tým nechá formuláře a navigaci v React Native, ale shlukování bodů přesune do nativní knihovny. Aplikace zůstane sdílená tam, kde to dává smysl, a plynulost mapy se zlepší.
Časté omyly
- MýtusReact Native je jen webová stránka zabalená do mobilní aplikace.
- Ve skutečnostiReact Native nepoužívá pro běžné rozhraní HTML prvky ve webview. Komponenty se vykreslují jako nativní prvky platformy, i když se jejich logika často píše v JavaScriptu nebo TypeScriptu.
- MýtusV React Native se napíše jedna aplikace a na iOS i Androidu bude všechno automaticky stejné.
- Ve skutečnostiReact Native umožňuje sdílet velkou část kódu, ale platformní rozdíly zůstávají. Navigace, oprávnění, build proces, notifikace nebo platby často potřebují zvláštní úpravy pro iOS a Android.
Časté dotazy
- Pro jaký typ mobilní aplikace se React Native hodí nejvíc?
- React Native se hodí pro produkt, který má mít podobné funkce na iOS i Androidu a potřebuje rychlé iterace. Typické jsou zákaznické zóny, tržiště, chaty, rezervační aplikace, interní nástroje nebo doprovodné aplikace ke službě. React Native dává menší smysl, když je hlavní hodnotou aplikace extrémní grafický výkon, složité napojení na systémové funkce nebo zcela odlišné UX pro každou platformu.
- Stačí pro React Native jen znalost webového Reactu?
- React Native vyžaduje znalost Reactu, JavaScriptu nebo TypeScriptu a také základní orientaci v mobilním vývoji. Vývojář nemusí být seniorní iOS ani Android specialista, ale dříve nebo později narazí na Xcode, Gradle, emulátory, oprávnění, certifikáty a nativní knihovny. Pro menší aplikace stačí webové zkušenosti déle, u složitějších projektů je mobilní znalost nezbytná.
- Je React Native dost rychlý pro reálnou aplikaci?
- React Native aplikace může být velmi plynulá, pokud architektura respektuje hranice mezi JavaScriptem a nativní částí. Výkon obvykle netrpí u běžných formulářů, seznamů, navigace nebo komunikace s API. Problémy vznikají u častých překreslení, velkých seznamů bez virtualizace, intenzivních animací nebo práce s velkými daty předávanými mezi vrstvami. Řešením bývá profilování, optimalizace komponent a vhodné nativní moduly.
- Může React Native sdílet kód s webovou aplikací?
- React Native dovoluje část logiky sdílet s webem, například validace, datové klienty, typy, některé hooky nebo pravidla design systému. Uživatelské rozhraní ale používá jiné primitivy než HTML a CSS, takže webovou komponentu obvykle nelze jednoduše zkopírovat. Sdílení funguje nejlépe v monorepu s jasně oddělenou doménovou logikou a platformně specifickými UI vrstvami.
Zdroje
- React Native(otevře se v novém okně)
- React(otevře se v novém okně)
- React Native for Windows(otevře se v novém okně)
- ECMA-262(otevře se v novém okně)