Aplicație iPhone cu Claude Code: tutorial complet
De Mehdi Azizi
Actualizat pe , 15 min.
Instalezi Claude Code, creezi proiectul Expo, scrii CLAUDE.md, ceri câte un ecran pe rând, apoi trimiți aplicația pe TestFlight cu EAS.
Să creezi o aplicație cu Claude Code: răspunsul scurt
Ca să creezi o aplicație cu Claude Code, ai nevoie de acces plătit la Claude Code (un abonament compatibil sau Console cu plată în funcție de utilizare), Node.js, un iPhone cu Expo Go și un proiect Expo. Scrii un fișier CLAUDE.md care descrie stack-ul și regulile tale, ceri câte un singur ecran, testezi fiecare ecran pe iPhone, apoi trimiți aplicația pe TestFlight cu EAS.
Tutorialul ăsta completează ghidul meu cum creezi o aplicație iOS cu AI, care explică ce face bine AI-ul și ce ratează. Aici trecem la practică: comenzi, fișiere, prompturi.
Îmi scriu aplicațiile iOS cu Claude Code și Cursor în fiecare zi. Stack-ul meu: React Native, Expo, EAS, RevenueCat și Supabase. Solys, o alarmă cu mini-jocuri, și TradaZen, o aplicație de antrenament pentru trading, sunt publicate pe App Store. Nolera și Clic au fost respinse de Apple, apoi corectate. Tot ce urmează vine din munca asta.
Ca să vezi metoda aplicată pe o aplicație publicată, am documentat parcursul TradaZen, de la primul commit la respingerile Apple și pivotări. Experiența asta completează pașii din tutorial.
Pasul 1: adună cerințele
Înainte de prima comandă, verifică dacă ai toate astea.
Un cont Claude plătit
Claude Code nu e inclus în planul gratuit de pe claude.ai. Conform documentației Anthropic, ai nevoie de un cont Pro, Max, Team, Enterprise sau Console. Planul Pro îți ajunge ca să începi, în limitele lui de utilizare.
Node.js și un terminal
Expo cere Node.js în versiunea LTS, pe macOS, Windows sau Linux. Claude Code rulează pe macOS 13 sau mai nou, Windows 10 sau mai nou și pe principalele distribuții Linux.
Un iPhone și Expo Go
Instalează Expo Go din App Store pe iPhone ca să încerci primele ecrane fără să-ți compilezi propria aplicație. Înainte să creezi proiectul, verifică pe pagina Expo Go ce versiune de SDK e compatibilă cu instalarea ta. Ultimul SDK și versiunea distribuită pe App Store nu sunt mereu disponibile în același timp: Expo a documentat de exemplu decalajul ăsta în mai 2026. Deci nu porni de la un număr de versiune găsit într-un tutorial vechi. Dacă vrei să folosești propriile module native, plănuiește un development build.
Un Mac? Nu e obligatoriu
Build-urile iOS sunt compilate pe serverele Expo cu EAS Build, cu versiunea de Xcode aleasă de SDK-ul tău Expo (ITMS-90725), iar EAS Submit funcționează pe macOS, Linux și Windows. Deci poți ajunge până la TestFlight de pe un PC. Ghidul cum publici o aplicație iOS fără Mac detaliază tot lanțul.
Un cont Apple Developer, mai târziu
Nu ai nevoie de el ca să programezi și să testezi în Expo Go din App Store. Devine obligatoriu când trimiți aplicația pe TestFlight. Revenim la asta la pasul 7.
Pasul 2: instalează Claude Code
Pe macOS, Linux sau WSL, metoda recomandată de Anthropic e installer-ul nativ:
curl -fsSL https://claude.ai/install.sh | bash
Pe Windows, în PowerShell:
irm https://claude.ai/install.ps1 | iex
Apoi verifică dacă instalarea a mers:
claude --version
Dacă preferi npm, comanda e npm install -g @anthropic-ai/claude-code. Nu pune sudo în față, documentația o descurajează explicit.
La prima rulare a claude, se deschide un browser ca să te conectezi la cont. Apoi scrii în limba ta: Claude îți citește fișierele, propune modificări și rulează comenzi, cu acordul tău.
Pasul 3: creează proiectul Expo
Mergi în folderul unde îți ții proiectele și rulează:
npx create-expo-app@latest my-app
cd my-app
npx expo start
Dacă tool-ul te pune să alegi între compatibilitatea cu Expo Go din App Store și ultimul SDK, alege compatibilitatea pentru exercițiul ăsta. În orice caz, verifică dacă versiunea creată e suportată de Expo Go-ul instalat pe iPhone înainte să continui. Poți pregăti un development build când proiectul o să aibă nevoie.
În terminal apare un cod QR. Scanează-l cu camera iPhone-ului: aplicația se deschide în Expo Go. Un detaliu blochează des prima dată: Expo Go îți deschide proiectul doar dacă Expo CLI și Expo Go sunt conectate la același cont Expo. Rulează npx expo login pe calculator și conectează-te cu același cont în aplicație.
De ce Expo și nu Swift? Claude cunoaște foarte bine React Native, iar tu testezi fără Mac. Explic alegerea asta pe pagina React Native și Expo pentru o aplicație mobilă.
Ține minte o limită a Expo Go: conține doar modulele native pe care le are deja inclus. Imediat ce adaugi o bibliotecă nativă pe care n-o cunoaște, de exemplu achizițiile in-app, o să ai nevoie de un development build. Pentru primele ecrane nu e o problemă.
Alege mediul de test potrivit
Expo Go, un development build și TestFlight nu dovedesc același lucru. Expo descrie development build-ul ca propria ta aplicație de test, cu modulele native de care are nevoie proiectul.
| Ce vrei să verifici | Unde testezi | Ce nu dovedește testul |
|---|---|---|
| Să afișezi un prim ecran și să încerci navigarea | Expo Go, cu un SDK compatibil | Comportamentul modulelor native care lipsesc din Expo Go |
| Să folosești o bibliotecă nativă adăugată în proiect | Un development build care include biblioteca | Versiunea distribuită sau acceptarea ei de către Apple |
| Să parcurgi aplicația pentru testeri, apoi să testezi achizițiile | Un build trimis pe TestFlight și produse configurate corect | O plată reală de la un client sau validarea punerii în vânzare |
Înainte să adaugi o dependență, întreabă-l pe Claude: „E compatibilă cu SDK-ul și mediul meu de test actual? Trebuie recompilată aplicația? Bazează-ți răspunsul pe documentație.” Așa eviți să pierzi o seară reparând un modul pe care Expo Go pur și simplu nu-l poate încărca, sau un SDK respins la trimitere pentru API non-public.
Pasul 4: scrie fișierul CLAUDE.md al proiectului
E pasul cel mai rentabil. Claude Code poate păstra o memorie de proiect, dar trebuie să-i explicitezi regulile. Fișierul CLAUDE.md, pus în rădăcina proiectului, aduce instrucțiuni comune tuturor sesiunilor. Acolo scrii ce Claude nu poate ghici.
În folderul proiectului, rulează claude, apoi tastează /init. Conform documentației, Claude analizează proiectul și generează un prim CLAUDE.md cu comenzile și convențiile pe care le găsește. Apoi îl completezi cu regulile tale. Anthropic recomandă să rămâi sub 200 de linii: cu cât fișierul e mai lung, cu atât instrucțiunile sunt respectate mai puțin.
Iată un exemplu scurt, apropiat de ce folosesc eu:
# Aplicația mea
## Stack
- Expo (SDK-ul din create-expo-app), React Native, TypeScript strict
- Navigare: Expo Router, un fișier per ecran în app/
- Date: Supabase (mai târziu), niciodată cheie secretă în aplicație
## Reguli
- Un singur ecran pe rând. Nu atinge fișiere din afara cererii.
- Nicio înălțime fixă în puncte: dimensiuni relative la ecran,
ScrollView dacă conținutul poate depăși.
- Fiecare ecran gestionează 3 stări: încărcare, gol, eroare.
- Textele interfeței în franceză, cu accente.
- Înainte să modifici mai mult de 2 fișiere: propune un plan și așteaptă acordul meu.
## Comenzi
- Pornire: npx expo start
- Teste: folosește scriptul care există efectiv în package.json.
Dacă nu există încă, semnalează asta; nu anunța teste reușite.
- Tipuri: npx tsc --noEmit
- După fiecare modificare: rulează testele și tipurile, apoi spune-mi
ce s-a schimbat și cum verific pe iPhone.
Regula despre înălțimile fixe nu e acolo întâmplător. Revenim la ea la pasul 6.
Pasul 5: cere câte un ecran pe rând
„Fă-mi o aplicație de urmărire a obiceiurilor cu abonament” produce un proiect uriaș, fragil, imposibil de recitit. Metoda care merge e inversă: o cerere, un ecran, un rezultat pe care îl poți testa în cinci minute.
Începe cu un plan
Pentru tot ce atinge mai multe fișiere, treci în plan mode. Apasă Shift+Tab până vezi plan mode on în bara de stare. În modul ăsta, Claude citește fișierele și propune un plan, dar nu modifică nimic înainte de acordul tău. Recitești, corectezi, apoi validezi.
Un prim prompt de încadrare arată așa:
Vreau o aplicație de urmărire a obiceiurilor. Versiunea 1: o singură funcție,
bifarea obiceiurilor zilei. Propune lista de ecrane și
structura folderelor. Nu scrie cod deocamdată.
Descrie ecranul, stările și limitele lui
Apoi, câte un prompt per ecran. Cu cât numești mai multe cazuri limită, cu atât Claude le uită mai puțin:
Creează ecranul app/index.tsx care listează obiceiurile zilei.
- Fiecare rând: numele obiceiului, căsuță de bifat, seria curentă.
- Stare goală: un text și un buton „Adaugă un obicei”.
- Stare de încărcare și stare de eroare cu un buton „Reîncearcă”.
- Datele vin deocamdată dintr-un array local.
- Trebuie să încapă pe un iPhone SE la fel ca pe cel mai mare iPhone:
fără înălțime fixă, lista se derulează.
Rulează testele și tipurile la final.
Corectează fără să lași totul rescris
Când un detaliu nu e în regulă, fii precis și limitează perimetrul:
Pe iPhone-ul meu, butonul „Adaugă un obicei” intră sub bara
de jos când lista e lungă. Corectează doar problema asta în
app/index.tsx, fără să atingi alte fișiere. Explică de unde vine.
Poți și să lipești o captură de ecran în terminal: Claude o citește.
Exercițiu: un obicei care rămâne bifat după repornire
Iată un exercițiu didactic de făcut în proiectul tău, nu o captură a unei funcții deja livrate. Scopul e să treci de la un ecran generat la un comportament verificabil. Nu cere nici cont de utilizator, nici achiziție in-app.
- Păstrează un singur obicei local numit „Citește 10 minute”.
- Cere o căsuță de bifat și o salvare locală compatibilă cu proiectul tău Expo.
- Cere-i agentului să precizeze fișierele modificate, eventuala dependență și comenzile rulate efectiv.
- Instalează sau deschide aplicația pe iPhone, apoi fă verificările de mai jos.
Pornind de la ecranul existent, fă obiceiul „Citește 10 minute”
bifabil și păstrează-i starea după închiderea și redeschiderea aplicației.
Folosește stocarea locală compatibilă cu dependențele proiectului.
Nu crea nici cont, nici server, nici abonament, nici statistici suplimentare.
Înainte să scrii cod, explică cum gestionezi încărcarea și un eșec
la citire sau la salvare. Apoi fă o modificare limitată.
La final: fișiere schimbate, comenzi rulate, limite netestate
și pașii exacți ca să verific rezultatul pe iPhone.
| Acțiune pe iPhone | Rezultat așteptat | Dacă eșuează |
|---|---|---|
| Deschizi aplicația prima dată | Obiceiul și căsuța lui sunt vizibile, fără eroare | Verifică starea inițială și încărcarea din stocare |
| Bifezi, apoi închizi și redeschizi aplicația | Obiceiul rămâne bifat | Controlează scrierea și apoi citirea aceleiași chei |
| Debifezi, apoi repornești | Obiceiul rămâne debifat | Verifică dacă și valoarea false e salvată |
| Refaci parcursul în modul avion | Funcția locală rămâne disponibilă | Caută o dependență de rețea adăugată fără motiv |
| Mărești dimensiunea textului | Numele și controlul rămân accesibile | Elimină constrângerile care trunchiază sau ascund acțiunea |
Nu cere „rescrie tot” dacă un rând eșuează. Descrie acțiunea, rezultatul așteptat și rezultatul observat. De exemplu: „După repornire, căsuța redevine goală deși o bifasem. Explică de ce și corectează persistența fără să modifici designul.”
Descarcă modelul CLAUDE.md și fișa de verificare (.md). Deschide-l în editor sau într-o aplicație de notițe. Adaptează comenzile la proiectul tău înainte să i-l dai agentului.
Pasul 6: pune-l să verifice și testează
Claude Code scrie cod care pare corect. Doar testele și iPhone-ul tău îți spun dacă chiar e.
Teste ca să nu strici ce merge
Cu cât aplicația crește, cu atât fiecare cerere riscă să strice un ecran deja validat. Proiectul creat de Expo nu are teste: cere-i mai întâi lui Claude să instaleze Jest cu jest-expo, cum recomandă documentația Expo. Apoi cere teste pentru logica importantă (calculul unei serii, validarea unui formular) și pune-l să le ruleze după fiecare modificare. De asta comenzile de test sunt scrise în CLAUDE.md: Claude le rulează fără să trebuiască să i le amintești. Cu un fișier de reguli și teste, AI-ul strică mult mai rar ce mergea deja.
Recitește fiecare modificare
Nu trebuie să înțelegi fiecare linie. Trebuie să știi ce fișiere s-au schimbat și de ce. Dacă Claude a atins un fișier care n-are legătură, întreabă-l de ce înainte să accepți. Apoi pune întrebarea: „ce se poate strica aici?”.
Verifică pe un iPhone mic și pe unul mare
E lecția care m-a costat cel mai mult. Solys a fost respinsă de Apple pe baza regulii 2.1: demo-ul din onboarding era imposibil de câștigat pe un iPad Air, unde aplicația rula în modul de compatibilitate iPhone. Cauza: înălțimi codate în puncte fixe, nu relative la dimensiunea ecranului. Pe iPhone-ul meu mergea totul. Codul fusese recitit, testele erau verzi. Niciun tool nu se uitase la ecran la altă dimensiune.
De atunci verific fiecare ecran cel puțin pe cel mai mic iPhone și pe cel mai mare. Dacă ai un singur telefon, simulatorul din Xcode pe Mac sau un prieten cu alt model îți ajung. Uită-te mai ales la textele lungi, la tastatura deschisă pe formulare și la butoanele fixate jos.
Ce face prost Claude Code
Claude Code excelează la ecrane și logică. În afara folderului tău, e mult mai puțin de încredere.
Semnarea și certificatele
Fără o conexiune autorizată la contul tău Apple, Claude nu-i cunoaște starea. Poate inventa o procedură de certificate care amestecă Xcode și Expo. Lasă EAS să se ocupe de semnare: documentația Expo explică faptul că EAS CLI poate genera și stoca fișierele astea pentru tine, după ce te conectezi la contul Apple Developer.
App Store Connect
Fișa aplicației, declarațiile de confidențialitate, capturile de ecran și linkurile legale sunt date de verificat în App Store Connect. Claude Code poate acum să acționeze într-un browser conectat prin integrarea lui cu Chrome, cu accesele necesare. Asta nu garantează că câmpurile sunt corecte: recitește informațiile, verifică ce conturi sunt folosite și validează tu angajamentele și trimiterea la review.
Abonamentele
Să scrii un paywall durează zece minute. Să faci să se potrivească produsele din App Store Connect, configurarea lor în RevenueCat și codul e altă poveste. Un identificator diferit cu un singur caracter și paywall-ul rămâne gol la reviewer. Capcanele cele mai frecvente sunt în greșelile de paywall iOS ale începătorilor.
Cazurile limită
Fără instrucțiuni, Claude tratează cazul normal. Fără rețea, o listă goală, o achiziție întreruptă: tu trebuie să le numești.
Securitatea Supabase
Când Claude creează tabele în Supabase, verifică dacă securitatea la nivel de rând (RLS) e activată, cu politici care limitează fiecare utilizator la propriile date. Verifică și că nicio cheie secretă nu ajunge în codul aplicației. Scrie aceste două interdicții în CLAUDE.md imediat ce conectezi o bază de date.
Pasul 7: treci pe TestFlight cu EAS
Ecranele tale au fost verificate în Expo Go sau într-un development build, în funcție de modulele folosite. Acum treci la build-ul care va fi distribuit testerilor.
Pregătește EAS
Acum ai nevoie de un cont Apple Developer plătit: cum amintește Expo, e obligatoriu ca să trimiți o aplicație în App Store. Apoi instalează tool-ul Expo și configurează proiectul:
npm install --global eas-cli
eas login
eas build:configure
Adaugă un bundle identifier unic în app.json, la ios.bundleIdentifier, de exemplu com.yourname.myapp.
Compilează și trimite
eas build --platform ios --profile production
eas submit --platform ios
Prima comandă compilează aplicația pe serverele Expo. La prima rulare, EAS îți propune să se conecteze la contul tău Apple ca să creeze certificatele. A doua trimite build-ul în App Store Connect. Poți face totul dintr-odată cu eas build --platform ios --auto-submit.
Build-ul trebuie procesat de Apple înainte să apară în TestFlight, iar procesarea îl poate respinge, de exemplu cu ITMS-90717 pentru o iconiță transparentă. Deci o trimitere reușită nu înseamnă că build-ul e deja instalabil: verifică-i starea în App Store Connect. Testerii interni, externi și review-ul beta sunt explicați în ghidul meu TestFlight pentru a-ți testa aplicația iPhone.
Refă verificările de la pasul 6 pe acest build. O aplicație care merge în Expo Go poate încă să crape în producție, de exemplu când lipsește un modul nativ.
Cât costă de fapt
Iată prețurile afișate de servicii, verificate pe 27 septembrie 2026, în dolari. Suma facturată depinde și de regiunea ta, de taxe și de utilizare: verifică oferta înainte să te abonezi.
- Abonament Claude: planul Pro costă 20 $ pe lună, sau 17 $ pe lună cu plată anuală. Planurile Max pornesc de la 100 $ pe lună, pentru mai multă utilizare.
- Cont Apple Developer: 99 $ pe an, obligatoriu pentru TestFlight și App Store.
- EAS: planul gratuit Expo include 15 build-uri iOS pe lună, într-o coadă cu prioritate scăzută. Planul Starter costă 19 $ pe lună, plus utilizarea suplimentară.
Pentru un prototip mic, Pro și planul gratuit EAS pot fi o bază, dacă rămâi în cotele lor. Adaugă contul Apple înainte de TestFlight, apoi calculează separat serviciile de care ai nevoie efectiv: bază de date, stocare sau API plătit. Modelul de buget pentru o primă aplicație te ajută să pui aceste costuri pe hârtie. Timpul tău de configurare și verificare trebuie și el luat în calcul.
Limitele sincere, și unde te blochezi
Claude Code a schimbat cine poate crea o aplicație iPhone. N-a schimbat ce cere Apple ca s-o publici. O respingere vine repede: Solys a luat câteva, Nolera și Clic la fel. Motivele cele mai frecvente sunt povestite în de ce respinge Apple o aplicație.
Cu tutorialul ăsta poți ajunge singur până la TestFlight. Unde te blochezi cel mai des e după: conectarea abonamentelor, pregătirea dosarului pentru reviewer, înțelegerea unei respingeri. Pentru imaginea de ansamblu a parcursului, citește pagina cum creezi o aplicație iPhone.
Pentru partea asta, iOS Kit adună codul de pornire al aplicațiilor mele, inclusiv abonamentele, skill-urile Claude Code pentru fiecare etapă și Apple Review Kit. Parcursul complet e pe pagina curs Claude Code pentru a crea o aplicație iOS.
Te-ai blocat deja și nu știi la ce? Diagnosticul gratuit îți spune ce te frânează de fapt și îți trimite checklist-ul meu anti-respingere Apple.
Întrebări frecvente
Pot crea o aplicație iPhone cu Claude Code fără să știu să programez?
Da pentru ecrane și logică simplă, dacă recitești și testezi fiecare pas. Nu dacă speri să nu înțelegi nimic. Trebuie să știi să citești un mesaj de eroare, să rulezi o comandă și să verifici ce a modificat Claude. Se învață repede construind.
Claude Code e gratuit?
Nu. Claude Code cere un cont Pro, Max, Team, Enterprise sau Console. Planul gratuit de pe claude.ai nu-l include. Planul Pro îți ajunge ca să începi, cu limite de utilizare de urmărit.
Am nevoie de un Mac ca să creez o aplicație iOS cu Claude Code?
Nu. Programezi pe orice calculator, testezi în Expo Go pe iPhone, iar EAS compilează și trimite aplicația de pe serverele Expo. Un Mac rămâne practic pentru simulator, dar nu e obligatoriu.
Claude Code sau Cursor pentru o aplicație React Native?
Le folosesc pe amândouă, în fiecare zi. Claude Code lucrează în terminal și înlănțuie singur modificarea și testele. Cursor e un editor. Metoda contează mai mult decât tool-ul: reguli, un ecran pe rând, teste.
Cât durează să publici o primă aplicație cu Claude Code?
Depinde de mărimea aplicației și de timpul tău. O aplicație cu o singură funcție merge mult mai repede. Partea cea mai imprevizibilă rămâne review-ul Apple.
Poate Claude Code să configureze abonamentele in-app?
Poate scrie codul pentru paywall și RevenueCat. Cu tool-uri conectate și permisiunile necesare, poate interveni și în console. Nu deduce niciodată din existența codului că produsele sunt configurate: verifică identificatorii, prețurile și drepturile după achiziție, apoi testează achiziția și restaurarea pe TestFlight. Greșelile frecvente la paywall-urile iOS îți dau punctele de verificat.