Aplikace s Claude Code: návod na iPhone appku
Autor: Mehdi Azizi
Aktualizováno , 15 min
Nainstaluj Claude Code, založ projekt v Expo, napiš CLAUDE.md, zadávej obrazovku po obrazovce a pošli appku přes EAS na TestFlight. Kompletní návod.
Jak vytvořit aplikaci s Claude Code: krátká odpověď
K vytvoření aplikace s Claude Code potřebuješ placený přístup ke Claude Code (kompatibilní předplatné nebo Console s platbou podle využití), Node.js, iPhone s Expo Go a projekt v Expo. Napíšeš soubor CLAUDE.md, který popisuje tvůj stack a pravidla, žádáš vždy o jednu obrazovku, každou obrazovku otestuješ na iPhonu a pak appku pošleš přes EAS na TestFlight.
Tenhle návod doplňuje můj průvodce jak vytvořit iOS appku s AI, který vysvětluje, co AI zvládá dobře a co jí uniká. Tady jdeme do praxe: příkazy, soubory, prompty.
Svoje iOS appky programuju s Claude Code a Cursorem každý den. Můj stack: React Native, Expo, EAS, RevenueCat a Supabase. Solys, budík s minihrami, a TradaZen, appka na trénink tradingu, jsou na App Storu. Nolera a Clic Apple zamítl, pak jsem je opravil. Všechno, co následuje, vychází z téhle práce.
Pokud chceš vidět tuhle metodu na publikované appce, sepsal jsem cestu TradaZenu od prvního commitu přes zamítnutí od Applu až po pivoty. Tahle zkušenost doplňuje kroky návodu.
Krok 1: připrav si předpoklady
Než zadáš první příkaz, ověř si, že máš tohle všechno.
Placený účet Claude
Claude Code není součástí bezplatného tarifu claude.ai. Podle dokumentace Anthropicu potřebuješ účet Pro, Max, Team, Enterprise nebo Console. Na začátek stačí tarif Pro, v rámci jeho limitů využití.
Node.js a terminál
Expo vyžaduje Node.js ve verzi LTS, na macOS, Windows nebo Linuxu. Claude Code běží na macOS 13 a novějším, Windows 10 a novějším a na hlavních linuxových distribucích.
iPhone a Expo Go
Nainstaluj si na iPhone Expo Go z App Storu, abys mohl zkoušet první obrazovky bez kompilace vlastní appky. Než založíš projekt, ověř si na stránce Expo Go, která verze SDK je kompatibilní s tvou instalací. Nejnovější SDK a verze distribuovaná přes App Store nejsou vždy dostupné ve stejnou chvíli: Expo tenhle posun zdokumentovalo například v květnu 2026. Nevycházej proto z čísla verze ze starého návodu. Pokud chceš používat vlastní nativní moduly, počítej s development buildem.
Mac? Není nutný
iOS buildy se kompilují na serverech Expo pomocí EAS Build, s verzí Xcode, kterou určuje tvoje SDK Expo (ITMS-90725), a EAS Submit funguje na macOS, Linuxu i Windows. Až na TestFlight se tedy dostaneš i z PC. Celý řetězec podrobně popisuje průvodce jak publikovat iOS appku bez Macu.
Účet Apple Developer, později
Na programování a testování v Expo Go z App Storu ho nepotřebuješ. Povinný je ve chvíli, kdy posíláš appku na TestFlight. Vrátíme se k tomu v kroku 7.
Krok 2: nainstaluj Claude Code
Na macOS, Linuxu nebo WSL doporučuje Anthropic nativní instalátor:
curl -fsSL https://claude.ai/install.sh | bash
Na Windows v PowerShellu:
irm https://claude.ai/install.ps1 | iex
Pak ověř, že instalace proběhla:
claude --version
Pokud dáváš přednost npm, příkaz je npm install -g @anthropic-ai/claude-code. Nepoužívej před ním sudo, dokumentace to výslovně nedoporučuje.
Při prvním spuštění claude se otevře prohlížeč a přihlásíš se ke svému účtu. Pak už píšeš normálně česky: Claude čte tvoje soubory, navrhuje úpravy a spouští příkazy, s tvým souhlasem.
Krok 3: založ projekt v Expo
Přesuň se do složky, kde máš projekty, a spusť:
npx create-expo-app@latest my-app
cd my-app
npx expo start
Pokud ti nástroj nabídne volbu mezi kompatibilitou s Expo Go z App Storu a nejnovějším SDK, zvol pro tohle cvičení kompatibilitu. V každém případě si před pokračováním ověř, že vytvořenou verzi podporuje Expo Go nainstalované na tvém iPhonu. Development build si můžeš připravit, až ho projekt bude potřebovat.
V terminálu se objeví QR kód. Naskenuj ho fotoaparátem iPhonu: appka se otevře v Expo Go. Napoprvé často zablokuje jeden detail: Expo Go otevře tvůj projekt jen tehdy, když jsou Expo CLI i Expo Go přihlášené ke stejnému účtu Expo. Spusť na počítači npx expo login a v appce se přihlas stejným účtem.
Proč Expo a ne Swift? Claude React Native zná velmi dobře a testuješ bez Macu. Tuhle volbu vysvětluju na stránce React Native a Expo pro mobilní appku.
Měj na paměti jedno omezení Expo Go: obsahuje jen nativní moduly, které už má v sobě. Jakmile přidáš nativní knihovnu, kterou nezná, třeba nákupy v aplikaci, budeš potřebovat development build. Pro první obrazovky to problém není.
Vyber správné testovací prostředí
Expo Go, development build a TestFlight nedokazují totéž. Expo popisuje development build jako tvoji vlastní testovací appku s nativními moduly, které tvůj projekt potřebuje.
| Co chceš ověřit | Kde testovat | Co test neověří |
|---|---|---|
| Zobrazit první obrazovku a vyzkoušet navigaci | Expo Go s kompatibilním SDK | Chování nativních modulů, které Expo Go nemá |
| Použít nativní knihovnu přidanou do projektu | Development build, který tuhle knihovnu obsahuje | Distribuovanou verzi ani to, jestli ji Apple schválí |
| Projít appku určenou testerům a pak otestovat nákupy | Build poslaný na TestFlight a správně nakonfigurované produkty | Skutečnou platbu zákazníka ani schválení k prodeji |
Než přidáš závislost, zeptej se Clauda: „Je kompatibilní s mým SDK a mým současným testovacím prostředím? Musím appku překompilovat? Odpověď podlož dokumentací.“ Ušetříš si večer opravování modulu, který Expo Go prostě načíst nedokáže, nebo SDK zamítnutého při odeslání kvůli neveřejnému API.
Krok 4: napiš soubor CLAUDE.md projektu
Tohle je krok, který se vyplatí nejvíc. Claude Code si umí uchovat paměť projektu, ale pravidla mu musíš výslovně napsat. Soubor CLAUDE.md v kořeni projektu dodává pokyny společné pro všechny relace. Píšeš do něj to, co Claude nemůže uhodnout.
Ve složce projektu spusť claude a napiš /init. Podle dokumentace Claude projekt zanalyzuje a vygeneruje první `CLAUDE.md s příkazy a konvencemi, které najde. Ty ho pak doplníš o svoje pravidla. Anthropic doporučuje zůstat pod 200 řádky: čím delší soubor, tím hůř se pokyny dodržují.
Tady je krátký příklad, podobný tomu, co používám já:
# Moje appka
## Stack
- Expo (SDK z create-expo-app), React Native, striktní TypeScript
- Navigace: Expo Router, jeden soubor na obrazovku v app/
- Data: Supabase (později), nikdy žádný tajný klíč v appce
## Pravidla
- Vždy jen jedna obrazovka. Nesahej na soubory mimo zadání.
- Žádné pevné výšky v bodech: velikosti relativní k obrazovce,
ScrollView, pokud obsah může přetéct.
- Každá obrazovka řeší 3 stavy: načítání, prázdný, chyba.
- Texty rozhraní česky s diakritikou.
- Než upravíš víc než 2 soubory: navrhni plán a počkej na můj souhlas.
## Příkazy
- Spuštění: npx expo start
- Testy: použij skript, který skutečně existuje v package.json.
Pokud ještě neexistuje, upozorni na to; nehlas úspěšné testy.
- Typy: npx tsc --noEmit
- Po každé úpravě: spusť testy a typy, pak mi řekni,
co se změnilo a jak to ověřit na iPhonu.
Pravidlo o pevných výškách tam není náhodou. Vrátíme se k němu v kroku 6.
Krok 5: zadávej jednu obrazovku po druhé
„Udělej mi appku na sledování návyků s předplatným“ vyprodukuje obří, křehký projekt, který nejde přečíst. Funguje opačná metoda: jeden požadavek, jedna obrazovka, výsledek, který otestuješ za pět minut.
Začni plánem
U všeho, co se týká více souborů, přepni do plánovacího režimu. Mačkej Shift+Tab, dokud ve stavovém řádku neuvidíš plan mode on. V tomhle režimu Claude čte soubory a navrhne plán, ale nic nezmění, dokud nedáš souhlas. Přečteš, opravíš, schválíš.
První rámcový prompt vypadá takhle:
Chci appku na sledování návyků. Verze 1: jediná funkce,
odškrtávání dnešních návyků. Navrhni seznam obrazovek a
strukturu složek. Zatím nic neprogramuj.
Popiš obrazovku, její stavy a limity
Pak jeden prompt na obrazovku. Čím víc hraničních případů pojmenuješ, tím míň jich Claude zapomene:
Vytvoř obrazovku app/index.tsx se seznamem dnešních návyků.
- Každý řádek: název návyku, zaškrtávací políčko, aktuální série.
- Prázdný stav: text a tlačítko „Přidat návyk“.
- Stav načítání a chybový stav s tlačítkem „Zkusit znovu“.
- Data zatím pocházejí z lokálního pole.
- Musí se vejít na iPhone SE i na největší iPhone:
žádná pevná výška, seznam se posouvá.
Na konci spusť testy a typy.
Opravuj, aniž by se přepsalo všechno
Když něco nesedí, buď konkrétní a omez rozsah:
Na mém iPhonu zajede tlačítko „Přidat návyk“ pod spodní lištu,
když je seznam dlouhý. Oprav jen tenhle problém v app/index.tsx,
na ostatní soubory nesahej. Vysvětli příčinu.
Do terminálu můžeš vložit i snímek obrazovky: Claude ho přečte.
Cvičení: návyk, který zůstane odškrtnutý i po restartu
Tohle je výukové cvičení, které si uděláš ve svém projektu, ne ukázka už hotové funkce. Cílem je dostat se od vygenerované obrazovky k ověřitelnému chování. Nevyžaduje uživatelský účet ani nákup v aplikaci.
- Nech si jediný lokální návyk s názvem „Číst 10 minut“.
- Požádej o zaškrtávací políčko a lokální ukládání kompatibilní s tvým projektem v Expo.
- Požádej agenta, ať uvede změněné soubory, případnou závislost a skutečně spuštěné příkazy.
- Nainstaluj nebo otevři appku na iPhonu a proveď kontroly níže.
Na základě stávající obrazovky udělej návyk „Číst 10 minut“
zaškrtávací a zachovej jeho stav po zavření a opětovném otevření appky.
Použij lokální úložiště kompatibilní se závislostmi projektu.
Nevytvářej účet, server, předplatné ani žádné statistiky navíc.
Než začneš programovat, vysvětli, jak vyřešíš načítání a selhání
čtení nebo uložení. Pak proveď omezenou úpravu.
Na konci: změněné soubory, spuštěné příkazy, neotestované limity
a přesné kroky, jak výsledek ověřit na iPhonu.
| Akce na iPhonu | Očekávaný výsledek | Když to selže |
|---|---|---|
| Poprvé otevřít appku | Návyk a jeho políčko jsou vidět, bez chyby | Zkontrolovat počáteční stav a načítání úložiště |
| Zaškrtnout, pak appku zavřít a otevřít | Návyk zůstane zaškrtnutý | Zkontrolovat zápis a pak čtení stejného klíče |
| Odškrtnout a restartovat | Návyk zůstane neodškrtnutý | Ověřit, že se ukládá i hodnota false |
| Projít to znovu v režimu letadlo | Lokální funkce zůstane dostupná | Najít síťovou závislost přidanou bez důvodu |
| Zvětšit velikost písma | Název i ovládací prvek zůstanou přístupné | Odstranit omezení, která ořezávají nebo skrývají akci |
Když jeden řádek selže, nežádej „přepiš všechno“. Popiš akci, očekávaný výsledek a skutečný výsledek. Například: „Po restartu je políčko zase prázdné, i když jsem ho zaškrtl. Vysvětli příčinu a oprav ukládání bez změny designu.“
Stáhnout šablonu CLAUDE.md a kontrolní list (.md). Otevři ho v editoru nebo v aplikaci na poznámky. Než ho předáš agentovi, uprav příkazy podle svého projektu.
Krok 6: nech kód zkontrolovat a otestuj ho
Claude Code píše kód, který vypadá správně. Jestli správný je, ti řeknou jen tvoje testy a tvůj iPhone.
Testy, abys nerozbil, co funguje
Čím víc appka roste, tím větší je riziko, že každý požadavek rozbije už schválenou obrazovku. Projekt vytvořený Expem testy nemá: nejdřív požádej Clauda, ať nainstaluje Jest s jest-expo, jak doporučuje dokumentace Expo. Pak si řekni o testy důležité logiky (výpočet série, validace formuláře) a nech je spouštět po každé úpravě. Proto jsou testovací příkazy zapsané v CLAUDE.md: Claude je spouští, aniž bys mu to musel připomínat. Se souborem pravidel a testy AI rozbíjí to, co už fungovalo, mnohem méně.
Kontroluj každou úpravu
Nemusíš rozumět každému řádku. Musíš vědět, které soubory se změnily a proč. Pokud Claude sáhl na soubor mimo téma, zeptej se ho na důvod, než změnu přijmeš. Pak polož otázku: „co se tady může rozbít?“.
Ověř to na malém i velkém iPhonu
Tahle lekce mě stála nejvíc. Solys Apple zamítl podle pravidla 2.1: demo v onboardingu se nedalo vyhrát na iPadu Air, kde appka běžela v režimu kompatibility s iPhonem. Příčina: výšky zadané v pevných bodech, ne relativně k velikosti obrazovky. Na mém iPhonu bylo všechno v pořádku. Kód prošel kontrolou, testy byly zelené. Žádný nástroj se ale na obrazovku nepodíval v jiné velikosti.
Od té doby kontroluju každou obrazovku minimálně na nejmenším a největším iPhonu. Pokud máš jen jeden telefon, poslouží simulátor Xcode na Macu nebo kamarád s jiným modelem. Zaměř se hlavně na dlouhé texty, otevřenou klávesnici u formulářů a tlačítka připíchnutá dole.
Co Claude Code dělá špatně
Claude Code exceluje v obrazovkách a logice. Mimo tvoji složku je mnohem méně spolehlivý.
Podepisování a certifikáty
Bez autorizovaného připojení k tvému účtu Apple Claude nezná jeho stav. Může si vymyslet postup s certifikáty, který míchá Xcode a Expo. Podepisování nech na EAS: dokumentace Expo vysvětluje, že EAS CLI ti tyhle soubory může vygenerovat a uložit po připojení k tvému účtu Apple Developer.
App Store Connect
Stránka appky, údaje o ochraně soukromí, snímky obrazovky a právní odkazy jsou data, která musíš ověřit v App Store Connect. Claude Code už dokáže pracovat v přihlášeném prohlížeči přes svoji integraci s Chromem, s potřebnými přístupy. To ale nezaručuje, že jsou pole správně: informace si přečti, zkontroluj použité účty a závazky i odeslání ke schválení potvrď sám.
Předplatné
Napsat paywall trvá deset minut. Sladit produkty v App Store Connect, jejich konfiguraci v RevenueCat a kód je úplně jiný příběh. Identifikátor, který se liší o jeden znak, a paywall zůstane reviewerovi prázdný. Nejčastější pasti najdeš v článku chyby začátečníků v iOS paywallu.
Hraniční případy
Bez pokynu Claude řeší jen standardní scénář. Žádná síť, prázdný seznam, přerušený nákup: ty je musíš pojmenovat.
Bezpečnost Supabase
Když Claude vytváří tabulky v Supabase, ověř, že je zapnuté zabezpečení na úrovni řádků (RLS) s politikami, které omezují každého uživatele jen na jeho vlastní data. Ověř taky, že v kódu appky neskončil žádný tajný klíč. Jakmile připojíš databázi, zapiš tyhle dva zákazy do CLAUDE.md.
Krok 7: přechod na TestFlight s EAS
Tvoje obrazovky jsou ověřené v Expo Go nebo v development buildu, podle použitých modulů. Teď přejdi na build, který se bude distribuovat testerům.
Příprava EAS
Teď potřebuješ placený účet Apple Developer: jak připomíná Expo, bez něj appku do App Storu neodešleš. Pak nainstaluj nástroj Expo a nakonfiguruj projekt:
npm install --global eas-cli
eas login
eas build:configure
Do app.json pod ios.bundleIdentifier přidej unikátní bundle identifier, například com.yourname.myapp.
Kompilace a odeslání
eas build --platform ios --profile production
eas submit --platform ios
První příkaz zkompiluje appku na serverech Expo. Při prvním spuštění ti EAS nabídne připojení k účtu Apple, aby mohl vytvořit certifikáty. Druhý pošle build do App Store Connect. Všechno najednou můžeš udělat i přes eas build --platform ios --auto-submit.
Apple musí build zpracovat, než se objeví v TestFlightu, a při zpracování ho může zamítnout, například s chybou ITMS-90717 kvůli průhledné ikoně. Úspěšné odeslání tedy neznamená, že už jde nainstalovat: zkontroluj jeho stav v App Store Connect. Interní a externí testery a beta review vysvětluju v průvodci TestFlight: jak otestovat iPhone appku.
Na tomhle buildu zopakuj kontroly z kroku 6. Appka, která funguje v Expo Go, může v produkci pořád spadnout, například když chybí nativní modul.
Kolik to doopravdy stojí
Tady jsou ceny, které služby uvádějí, ověřené 27. září 2026, v dolarech. Fakturovaná částka závisí i na tvém regionu, daních a využití: před předplacením si nabídku ověř.
- Předplatné Claude: tarif Pro stojí 20 $ měsíčně, nebo 17 $ měsíčně při roční platbě. Tarify Max začínají na 100 $ měsíčně, pro větší využití.
- Účet Apple Developer: 99 $ ročně, povinný pro TestFlight a App Store.
- EAS: bezplatný tarif Expo zahrnuje 15 iOS buildů měsíčně ve frontě s nízkou prioritou. Tarif Starter stojí 19 $ měsíčně plus využití navíc.
Pro malý prototyp může Pro a bezplatný tarif EAS posloužit jako základ, pokud zůstaneš v jejich kvótách. Před TestFlightem přidej účet Apple a pak zvlášť spočítej služby, které opravdu potřebuješ: databázi, úložiště nebo placené API. Tyhle položky ti pomůže sepsat šablona rozpočtu první appky. Počítej i s časem na konfiguraci a kontroly.
Upřímné limity a kde se to zasekává
Claude Code změnil, kdo může vytvořit iPhone appku. Nezměnil to, co Apple vyžaduje k jejímu zveřejnění. Zamítnutí přijde rychle: Solys ho dostal, Nolera a Clic taky. Nejčastější důvody popisuju v článku proč Apple zamítá appky.
S tímhle návodem se sám dostaneš až na TestFlight. Nejčastěji se to zasekne potom: napojení předplatného, příprava podkladů pro reviewera, pochopení zamítnutí. Celkový přehled cesty najdeš na stránce jak vytvořit iPhone aplikaci.
Pro tuhle část iOS Kit obsahuje startovní kód mých appek včetně předplatného, skills pro Claude Code na každý krok a Apple Review Kit. Kompletní cesta je na stránce kurz Claude Code pro tvorbu iOS appky.
Už ses zasekl a nevíš na čem? Bezplatná diagnostika ti řekne, co tě doopravdy brzdí, a pošle ti můj checklist proti zamítnutí od Applu.
Časté dotazy
Dá se vytvořit iPhone appka s Claude Code bez znalosti programování?
U obrazovek a jednoduché logiky ano, pokud každý krok zkontroluješ a otestuješ. Ne, pokud doufáš, že nebudeš rozumět vůbec ničemu. Musíš umět přečíst chybovou hlášku, spustit příkaz a ověřit, co Claude změnil. To se při stavění naučíš rychle.
Je Claude Code zdarma?
Ne. Claude Code vyžaduje účet Pro, Max, Team, Enterprise nebo Console. Bezplatný tarif claude.ai ho nezahrnuje. Na začátek stačí tarif Pro, jen si hlídej limity využití.
Potřebuju Mac na vytvoření iOS appky s Claude Code?
Ne. Programuješ na jakémkoli počítači, testuješ v Expo Go na iPhonu a EAS appku zkompiluje a odešle na serverech Expo. Mac se hodí kvůli simulátoru, ale není povinný.
Claude Code, nebo Cursor pro React Native appku?
Používám oba, každý den. Claude Code pracuje v terminálu a sám řetězí úpravy a testy. Cursor je editor. Metoda je důležitější než nástroj: pravidla, jedna obrazovka po druhé, testy.
Jak dlouho trvá publikovat první appku s Claude Code?
Záleží na velikosti appky a na tvém čase. Appka s jedinou funkcí jde mnohem rychleji. Nejméně předvídatelnou částí zůstává review od Applu.
Umí Claude Code nastavit předplatné v aplikaci?
Umí napsat kód paywallu a RevenueCat. S připojenými nástroji a potřebnými oprávněními může zasahovat i do konzolí. Nikdy ale z existence kódu neusuzuj, že jsou produkty nakonfigurované: ověř identifikátory, ceny a nároky po nákupu a pak na TestFlightu otestuj nákup i obnovení. Body ke kontrole najdeš v článku časté chyby v iOS paywallech.