Lekce 02 / 07

Nativně, nebo cross-platform?

Swift a Kotlin, nebo React Native a Flutter? Co znamená nativní vývoj, jeden kód pro obě platformy a kdy se co reálně vyplatí.

Tahle volba se rozhoduje na jedné schůzce a žije s vámi celé roky. Určuje, kolik appka stojí, jak rychle ji dostanete ven, kdo na ní pak může pracovat a jak dobře sedne uživateli do ruky. A protože je technická, často padne dřív, než si vůbec ujasníte, co stavíte. To je škoda, protože odpověď skoro vždycky vychází z toho, co appka má dělat, ne z toho, co je zrovna v módě.

Možnosti jsou v zásadě tři: nativní vývoj zvlášť pro každou platformu, cross-platform s jedním společným kódem, a levná třetí cesta v podobě webové aplikace. Pojďme každou poctivě.

Co je nativní vývoj a kdy se vyplatí

Nativní znamená, že iOS appku píšete v jazyce a nástrojích od Applu (Swift, dnes nejčastěji se SwiftUI) a Android appku zvlášť v Kotlinu s Jetpack Compose. Dvě aplikace, dva kódy, často i dva různí lidé, protože ten, kdo umí Swift, většinou neumí dobře Kotlin a naopak.

Co za to dostanete, je to nejlepší, co telefon umí:

  • Výkon. Nic mezi vaším kódem a systémem. Plynulé animace, náročná grafika, hry, zpracování videa nebo zvuku naživo. Tady nativní vyhrává jednoznačně.
  • Nové funkce systému. Když Apple na podzim představí novou věc, nativní appka ji může mít první den. Cross-platform na to obvykle chvíli čeká.
  • Pocit z ovládání. Appka se chová přesně jako zbytek systému, protože z něj přímo vychází. Gesta, přechody, drobnosti, které člověk nevidí, ale cítí.

Dva kódy znamenají zhruba dvojnásobek práce na vývoji i na každé další úpravě. Opravíte chybu na iOS a tu samou musíte opravit i na Androidu. Pro malý tým a napjatý rozpočet je to nejdražší cesta, jakou si můžete vybrat.

Cross-platform: jeden kód pro obě platformy

Cross-platform nástroje (React Native, Flutter, nad React Native pak Expo) řeší přesně tu bolest s dvěma kódy. Napíšete aplikaci jednou a běží na iOS i Androidu. Pracuje na ní jeden tým, jednou opravujete chyby, jednou přidáváte funkce.

  • Cena a rychlost. Výrazně levnější a rychlejší ven než dva nativní kódy. Pro drtivou většinu běžných aplikací (objednávky, rezervace, věrnostní program, interní nástroj, obsah, jednoduchá komunita) je to víc než dost.
  • Jeden tým. Nepotřebujete shánět zvlášť iOS a zvlášť Android lidi. Pro menší firmu zásadní rozdíl.
  • Vzhled, který sedí. Moderní nástroje umí appku, kterou běžný uživatel od nativní nerozezná. Expo navíc vývoj hodně zjednodušuje a zrychluje start.

Háček je v hraničních případech. Když potřebujete něco hodně specifického ze systému, co framework zatím neumí, musí vám někdo dopsat takzvaný most do nativního kódu. To je práce navíc a občas chvíli trvá, než nástroj dožene novou verzi systému. A jste závislí na tom, že tým za frameworkem ho dál vyvíjí. U React Native (Meta), Flutteru (Google) i Expa je to dnes klidný spánek, ne riziko.

PWA jako levná třetí cesta

PWA jsme potkali už v první lekci jako kategorii sama o sobě. Sem patří i jako volba technologie, na kterou se při téhle úvaze často zapomíná: je to nejlevnější varianta vůbec, jeden kód pro úplně všechno včetně počítače, a žádné schvalování v obchodech.

Limity jsou ale reálné. Na iPhonu má webová aplikace pořád oříznuté možnosti (omezené notifikace, žádný přístup k řadě funkcí telefonu) a v App Store ani Google Play vás lidé nenajdou, protože tam prostě nejste. Pro nástroj, který se používá hlavně z odkazu nebo QR kódu (jídelníček restaurace, jednoduchá rezervace, interní pomůcka), je PWA chytrá a šetří peníze. Jako cesta k „appce v obchodě, kterou si lidi hledají“ nestačí.

iOS, nebo Android: na čem začít a proč

V Česku i napříč Evropou má Android na počtu telefonů navrch, iPhonů je výrazně menšina. Jenže počet zařízení není totéž co peníze. Uživatelé iOS bývají v průměru ochotnější platit, ať už za samotnou appku, předplatné, nebo nákupy uvnitř. Proto appky, které mají vydělávat, často startují na iOS, i když je telefonů míň.

Praktické vodítko bez kouzelných čísel:

  • Appka má hned vydělávat (předplatné, nákupy). Zvažte start na iOS, kde se peníze utrácejí ochotněji.
  • Cílíte na co nejširší dosah nebo na konkrétní skupinu, která drží Android. Začněte Androidem, případně rovnou obojím přes cross-platform.
  • Nevíte, nebo chcete oboje. To je přesně důvod, proč cross-platform existuje. Vydáte na obě platformy najednou bez dvojnásobné ceny.

Spousta týmů začíná na jedné platformě hlavně proto, aby se na menším publiku rychle naučily, co lidem na appce vadí, a teprve pak ladí druhou. Méně práce v ruce, rychlejší zpětná vazba.

Vyberte si podle toho, kde jste

  • Hra, náročná grafika, video nebo zvuk naživo, nebo appka stojící na nejnovějších funkcích systému? Nativní. Tady se to vyplatí i za vyšší cenu.
  • Běžná appka pro firmu nebo službu a chcete ji na iOS i Androidu, aniž byste platili dvakrát? Cross-platform, typicky React Native nebo Flutter.
  • Jednoduchý nástroj, ke kterému lidi chodí z odkazu nebo QR a nepotřebujete být v obchodě? Zvažte PWA, ušetříte nejvíc.
  • Nejste si jistí a rozpočet je napjatý? Cross-platform, a začněte na jedné platformě.

My ve FRGTN sázíme u většiny projektů na React Native s Expem. Ne z módy, ale proto, že drží rozpočet pod kontrolou a appku dostaneme na obě platformy z jednoho kódu. K nativnímu vývoji sáhneme, když to projekt opravdu potřebuje, ne z principu. A jako u webu platí: nejdražší volba není ta s nejvyšší cenou na faktuře, ale ta, kterou za rok stavíte celou znovu, protože jste si na začátku vybrali podle trendu místo podle toho, co appka má dělat.