# Skapa en app med Claude Code: steg för steg för iPhone

> Installera Claude Code, skapa Expo-projektet, skriv CLAUDE.md, prompta en skärm i taget och skicka till TestFlight med EAS: hela guiden.

Originalsida: [Skapa en app med Claude Code: steg för steg för iPhone](https://devoria.fr/sv/blog/skapa-app-med-claude-code-iphone-guide)
Författare: [Mehdi Azizi](https://devoria.fr/sv/mehdi-azizi)
Publicerad: 2026-09-23
Innehållet senast granskat: 2026-10-09


## Skapa en app med Claude Code: det korta svaret

För att skapa en app med Claude Code behöver du betald tillgång till Claude Code (ett kompatibelt abonnemang eller Console med betalning per användning), Node.js, en iPhone med Expo Go och ett Expo-projekt. Du skriver en `CLAUDE.md`-fil som beskriver din stack och dina regler, ber om en skärm i taget, testar varje skärm på din iPhone och skickar sedan appen till TestFlight med EAS.

Den här guiden kompletterar min guide [skapa en iOS-app med AI](https://devoria.fr/sv/blog/skapa-app-med-ai-fallgropar-kontroller), som förklarar vad AI gör bra och vad den missar. Här går vi över till praktiken: kommandona, filerna, promptarna.

Jag kodar mina iOS-appar med Claude Code och Cursor varje dag. Min stack: React Native, Expo, EAS, RevenueCat och Supabase. Solys, en väckarklocka med minispel, och TradaZen, en app för att träna trading, finns på App Store. Nolera och Clic blev refuserade av Apple och sedan rättade. Allt som följer kommer från det arbetet.

Vill du se metoden tillämpad på en publicerad app har jag dokumenterat [TradaZens resa, från första commit till Apples avslag och pivoterna](https://devoria.fr/sv/blog/fallstudie-tradazen-lansera-iphone-app). Den erfarenheten kompletterar stegen i guiden.

## Steg 1: samla förutsättningarna

Kontrollera att du har allt det här innan första kommandot.

### Ett betalt Claude-konto

Claude Code ingår inte i gratisnivån på claude.ai. [Enligt Anthropics dokumentation](https://code.claude.com/docs/en/setup) krävs ett Pro-, Max-, Team-, Enterprise- eller Console-konto. Med Pro kan du komma igång, inom dess användningsgränser.

### Node.js och en terminal

Expo kräver [Node.js i LTS-version](https://docs.expo.dev/get-started/create-a-project/), på macOS, Windows eller Linux. Claude Code körs på macOS 13 eller senare, Windows 10 eller senare och de stora Linux-distributionerna.

### En iPhone och Expo Go

Installera Expo Go från App Store på din iPhone så att du kan prova dina första skärmar utan att kompilera en egen app. Innan du skapar projektet: [kontrollera vilken SDK-version som är kompatibel med din installation på Expo Go-sidan](https://expo.dev/go). Den senaste SDK:n och versionen som distribueras på App Store är inte alltid tillgängliga samtidigt: Expo har bland annat dokumenterat [den förskjutningen i maj 2026](https://expo.dev/changelog/expo-go-and-app-store-may-2026). Utgå alltså inte från ett versionsnummer du hittat i en gammal guide. Vill du använda egna native-moduler behöver du ett development build.

### En Mac? Inget krav

iOS-byggen kompileras på Expos servrar med EAS Build, med den Xcode-version som din Expo-SDK väljer (ITMS-90725), och [EAS Submit fungerar på macOS, Linux och Windows](https://docs.expo.dev/submit/ios/). Du kan alltså ta dig ända till TestFlight från en PC. Guiden [publicera en iOS-app utan Mac](https://devoria.fr/sv/blog/publicera-ios-app-utan-mac-expo-eas) beskriver hela kedjan.

### Ett Apple Developer-konto, senare

Du behöver inget för att koda och testa i Expo Go från App Store. Det blir obligatoriskt när du ska skicka appen till TestFlight. Vi återkommer till det i steg 7.

## Steg 2: installera Claude Code

På macOS, Linux eller WSL är Anthropics rekommenderade metod den inbyggda installationen:

```bash
curl -fsSL https://claude.ai/install.sh | bash
```

På Windows, i PowerShell:

```powershell
irm https://claude.ai/install.ps1 | iex
```

Kontrollera sedan att installationen fungerade:

```bash
claude --version
```

Föredrar du npm är kommandot `npm install -g @anthropic-ai/claude-code`. Sätt inte `sudo` framför, dokumentationen avråder uttryckligen från det.

Första gången du kör `claude` öppnas en webbläsare där du loggar in på ditt konto. Sedan skriver du på svenska: Claude läser dina filer, föreslår ändringar och kör kommandon, med ditt godkännande.

## Steg 3: skapa Expo-projektet

Gå till mappen där du har dina projekt och kör:

```bash
npx create-expo-app@latest my-app
cd my-app
npx expo start
```

Om verktyget låter dig välja mellan kompatibilitet med Expo Go från App Store och den senaste SDK:n, välj kompatibiliteten för den här övningen. Kontrollera i vilket fall som helst att den skapade versionen stöds av Expo Go på din iPhone innan du fortsätter. Ett development build kan du förbereda när projektet behöver det.

En QR-kod dyker upp i terminalen. Skanna den med iPhonens kamera: appen öppnas i Expo Go. En detalj sätter ofta stopp första gången: [Expo Go öppnar bara ditt projekt om Expo CLI och Expo Go är inloggade på samma Expo-konto](https://docs.expo.dev/get-started/start-developing/). Kör `npx expo login` på datorn och logga in med samma konto i appen.

Varför Expo i stället för Swift? Claude kan React Native väldigt bra, och du testar utan Mac. Jag förklarar valet på sidan [React Native och Expo för en mobilapp](https://devoria.fr/sv/expertise/mobilapp-react-native-expo).

Ha en begränsning hos Expo Go i huvudet: den innehåller bara de native-moduler som redan är inbyggda. Så fort du lägger till ett native-bibliotek den inte känner till, till exempel köp i appen, behöver du ett development build. Det är inget problem för de första skärmarna.

### Välj rätt testmiljö

Expo Go, ett development build och TestFlight bevisar inte samma sak. [Expo beskriver development build](https://docs.expo.dev/develop/development-builds/introduction/) som din egen testapp, med de native-moduler ditt projekt behöver.

| Det du vill kontrollera                                 | Var du testar                                                              | Testets begränsningar                                      |
| ------------------------------------------------------- | -------------------------------------------------------------------------- | ---------------------------------------------------------- |
| Visa en första skärm och prova navigeringen             | Expo Go, med en kompatibel SDK                                             | Beteendet hos native-moduler som saknas i Expo Go          |
| Använda ett native-bibliotek som lagts till i projektet | Ett development build som innehåller biblioteket                           | Den distribuerade versionen och om Apple godkänner den     |
| Gå igenom appen för testare och sedan testa köpen       | Ett build som skickats till TestFlight och korrekt konfigurerade produkter | En riktig kundbetalning eller godkännandet för försäljning |

Innan du lägger till ett beroende, fråga Claude: ”Är det kompatibelt med min SDK och min nuvarande testmiljö? Måste appen kompileras om? Stöd ditt svar på dokumentationen.” Då slipper du lägga en kväll på att rätta en modul som Expo Go helt enkelt inte kan ladda, eller en SDK som stoppas vid uppladdning för icke-publikt API.

## Steg 4: skriv projektets CLAUDE.md-fil

Det här är steget som lönar sig mest. Claude Code kan ha ett projektminne, men du måste formulera reglerna tydligt. Filen `CLAUDE.md`, placerad i projektets rot, ger instruktioner som gäller för alla sessioner. Där skriver du det Claude inte kan gissa.

I projektmappen kör du `claude` och skriver sedan `/init`. [Enligt dokumentationen](https://code.claude.com/docs/en/memory) analyserar Claude projektet och genererar en första `CLAUDE.md` med de kommandon och konventioner den hittar. Sedan fyller du på med dina regler. Anthropic rekommenderar att hålla sig under 200 rader: ju längre filen är, desto sämre följs instruktionerna.

Här är ett kort exempel, nära det jag använder:

```markdown
# Min app

## Stack

- Expo (SDK från create-expo-app), React Native, strikt TypeScript
- Navigering: Expo Router, en fil per skärm i app/
- Data: Supabase (senare), aldrig en hemlig nyckel i appen

## Regler

- En skärm i taget. Rör inga filer utanför förfrågan.
- Inga fasta höjder i punkter: storlekar relativt skärmen,
  ScrollView om innehållet kan bli för långt.
- Varje skärm hanterar 3 tillstånd: laddar, tomt, fel.
- Gränssnittstexter på svenska med å, ä och ö.
- Innan du kodar mer än 2 filer: föreslå en plan och vänta på mitt godkännande.

## Kommandon

- Starta: npx expo start
- Tester: använd skriptet som faktiskt finns i package.json.
  Om det inte finns än, säg det; påstå inte att tester har gått igenom.
- Typer: npx tsc --noEmit
- Efter varje ändring: kör tester och typer, berätta sedan
  vad som ändrats och hur jag kontrollerar det på iPhone.
```

Regeln om fasta höjder står inte där av en slump. Vi återkommer till den i steg 6.

## Steg 5: prompta en skärm i taget

”Skapa en app för vanespårning med abonnemang” ger ett enormt, skört projekt som är omöjligt att granska. Metoden som fungerar är den omvända: en förfrågan, en skärm, ett resultat du kan testa på fem minuter.

### Börja med en plan

För allt som rör flera filer, gå över till planläge. Tryck på `Shift+Tab` tills du ser `plan mode on` i statusfältet. [I det läget](https://code.claude.com/docs/en/common-workflows) läser Claude filerna och föreslår en plan men ändrar ingenting innan du godkänt. Du läser, rättar och godkänner.

En första prompt för att rama in projektet ser ut så här:

```text
Jag vill ha en app för vanespårning. Version 1: en enda funktion,
bocka av dagens vanor. Föreslå listan över skärmar och
mappstrukturen. Koda ingenting än.
```

### Beskriv skärmen, dess tillstånd och gränsfall

Sedan en prompt per skärm. Ju fler gränsfall du namnger, desto mindre glömmer Claude dem:

```text
Skapa skärmen app/index.tsx som listar dagens vanor.
- Varje rad: vanans namn, kryssruta, pågående svit.
- Tomt tillstånd: en text och en knapp ”Lägg till en vana”.
- Laddningstillstånd och feltillstånd med en knapp ”Försök igen”.
- Datan kommer från en lokal array tills vidare.
- Ska fungera på en iPhone SE lika väl som på den största iPhonen:
  ingen fast höjd, listan scrollar.
Kör tester och typer på slutet.
```

### Rätta utan att låta allt skrivas om

När en detalj inte stämmer, var exakt och begränsa omfattningen:

```text
På min iPhone hamnar knappen ”Lägg till en vana” under den nedre
listen när listan är lång. Rätta bara det problemet i app/index.tsx,
utan att röra andra filer. Förklara orsaken.
```

Du kan också klistra in en skärmdump i terminalen: Claude läser den.

## Övning: en vana som förblir avbockad efter omstart

Det här är en pedagogisk övning att göra i ditt projekt, inte en skärmdump av en funktion som redan levererats. Målet är att gå från en genererad skärm till ett beteende som går att kontrollera. Den kräver varken användarkonto eller köp i appen.

1. Behåll en enda lokal vana som heter ”Läs 10 minuter”.
2. Be om en kryssruta och lokal lagring som är kompatibel med ditt Expo-projekt.
3. Be agenten ange vilka filer som ändrats, eventuellt beroende och vilka kommandon som faktiskt körts.
4. Installera eller öppna appen på din iPhone och gör sedan kontrollerna nedan.

```text
Utgå från den befintliga skärmen och gör vanan ”Läs 10 minuter”
avbockningsbar, och spara dess tillstånd när appen stängs och öppnas igen.
Använd den lokala lagring som är kompatibel med projektets beroenden.
Skapa varken konto, server, abonnemang eller extra statistik.
Innan du kodar: förklara hur du hanterar laddning och ett misslyckande
vid läsning eller sparande. Gör sedan en avgränsad ändring.
På slutet: ändrade filer, körda kommandon, otestade begränsningar
och exakta steg för att kontrollera resultatet på iPhone.
```

| Åtgärd på din iPhone                 | Förväntat resultat                         | Om det misslyckas                                        |
| ------------------------------------ | ------------------------------------------ | -------------------------------------------------------- |
| Öppna appen för första gången        | Vanan och dess ruta syns, utan fel         | Kontrollera starttillståndet och laddningen av lagringen |
| Bocka av, stäng och öppna appen igen | Vanan förblir avbockad                     | Kontrollera skrivning och sedan läsning av samma nyckel  |
| Avmarkera och starta om              | Vanan förblir avmarkerad                   | Kontrollera att värdet `false` också sparas              |
| Gör om samma steg i flygplansläge    | Den lokala funktionen fungerar fortfarande | Leta efter ett nätverksberoende som lagts till i onödan  |
| Öka textstorleken                    | Namnet och kontrollen förblir tillgängliga | Ta bort begränsningar som kapar eller döljer åtgärden    |

Be inte om ”skriv om allt” om en rad misslyckas. Beskriv åtgärden, det förväntade resultatet och det du faktiskt ser. Till exempel: ”Efter omstart blir rutan tom igen fast jag hade bockat av den. Förklara orsaken och rätta lagringen utan att ändra designen.”

[Ladda ner CLAUDE.md-mallen och kontrollbladet (.md)](https://devoria.fr/ressources/claude-md-premiere-app-ios.md). Öppna den i din editor eller i en anteckningsapp. Anpassa kommandona till ditt projekt innan du ger den till agenten.

## Steg 6: låt granska och testa

Claude Code skriver kod som ser rätt ut. Bara dina tester och din iPhone kan säga om den är det.

### Tester för att inte förstöra det som fungerar

Ju större appen blir, desto större risk att varje förfrågan förstör en skärm du redan godkänt. Projektet som Expo skapar har inga tester: be först Claude installera Jest med `jest-expo`, som Expos dokumentation rekommenderar. Be sedan om tester för den viktiga logiken (beräkna en svit, validera ett formulär) och låt dem köras efter varje ändring. Det är därför testkommandona står i `CLAUDE.md`: Claude kör dem utan att du behöver påminna. Med en regelfil och tester förstör AI:n mycket mindre av det som redan fungerade.

### Granska varje ändring

Du behöver inte förstå varje rad. Du måste veta vilka filer som ändrats, och varför. Om Claude rört en fil som inte hör till uppgiften, fråga varför innan du godkänner. Ställ sedan frågan: ”vad kan gå sönder här?”.

### Kontrollera på en liten och en stor iPhone

Det här är läxan som kostade mig mest. Solys refuserades av Apple enligt regel 2.1: demon i onboardingen gick inte att vinna på en iPad Air, där appen kördes i iPhone-kompatibilitetsläge. Orsaken: höjder kodade i fasta punkter, inte relativt skärmstorleken. På min iPhone var allt bra. Koden hade granskats, testerna var gröna. Inget verktyg hade tittat på skärmen i en annan storlek.

Sedan dess kontrollerar jag varje skärm åtminstone på den minsta och den största iPhonen. Har du bara en telefon duger Xcodes simulator på Mac, eller en kompis med en annan modell. Titta särskilt på långa texter, öppet tangentbord i formulär och knappar som sitter fast längst ner.

## Det Claude Code gör dåligt

Claude Code briljerar på skärmar och logik. Utanför din projektmapp är den mycket mindre pålitlig.

### Signering och certifikat

Utan behörig anslutning till ditt Apple-konto vet Claude inte hur det ser ut där. Den kan hitta på en certifikatprocedur som blandar Xcode och Expo. Låt EAS sköta signeringen: [Expos dokumentation](https://docs.expo.dev/build/setup/) förklarar att EAS CLI kan generera och lagra de filerna åt dig, efter att du loggat in på ditt Apple Developer-konto.

### App Store Connect

Produktsidan, integritetsuppgifterna, [skärmdumparna](https://devoria.fr/sv/kits/captures-app-store) och de juridiska länkarna är data du måste kontrollera i App Store Connect. Claude Code kan numera agera i en inloggad webbläsare via [sin Chrome-integration](https://code.claude.com/docs/en/chrome), med nödvändiga behörigheter. Det garanterar inte att fälten är korrekta: läs igenom uppgifterna, kontrollera vilka konton som används och godkänn själv åtagandena och inskickningen till granskning.

### Abonnemang

Att skriva en paywall tar tio minuter. Att få produkterna i App Store Connect, deras konfiguration i RevenueCat och koden att stämma överens är en annan historia. Ett id som skiljer sig med ett tecken och paywallen förblir tom hos granskaren. De vanligaste fällorna listas i [nybörjarmisstagen med iOS-paywalls](https://devoria.fr/sv/blog/paywall-ios-misstag-som-stoppar-forsaljning).

### Gränsfallen

Utan instruktion hanterar Claude normalfallet. Inget nätverk, en tom lista, ett avbrutet köp: det är du som måste namnge dem.

### Säkerheten i Supabase

När Claude skapar tabeller i Supabase, kontrollera att säkerhet på radnivå (RLS) är aktiverad, med policyer som begränsar varje användare till sin egen data. Kontrollera också att ingen hemlig nyckel hamnar i appens kod. Skriv in de två förbuden i din `CLAUDE.md` så fort du kopplar in en databas.

## Steg 7: gå över till TestFlight med EAS

Dina skärmar har kontrollerats i Expo Go eller i ett development build, beroende på vilka moduler som används. Gå nu över till det build som ska distribueras till testarna.

### Förbered EAS

Nu behöver du ett [betalt Apple Developer-konto](https://devoria.fr/sv/blog/apple-utvecklarkonto-pris): [Expo påminner om det](https://docs.expo.dev/submit/ios/), det är obligatoriskt för att skicka en app till App Store. Installera sedan Expos verktyg och konfigurera projektet:

```bash
npm install --global eas-cli
eas login
eas build:configure
```

Lägg till ett unikt bundle-id i `app.json`, under `ios.bundleIdentifier`, till exempel `com.yourname.myapp`.

### Kompilera och skicka

```bash
eas build --platform ios --profile production
eas submit --platform ios
```

Det första kommandot kompilerar appen på Expos servrar. Första gången erbjuder EAS att logga in på ditt Apple-konto för att skapa certifikaten. Det andra skickar buildet till App Store Connect. Du kan också göra allt på en gång med `eas build --platform ios --auto-submit`.

Buildet måste behandlas av Apple innan det dyker upp i TestFlight, och den behandlingen kan avvisa det, till exempel med ITMS-90717 för en transparent ikon. En lyckad uppladdning betyder alltså inte att det redan går att installera: kontrollera dess status i App Store Connect. Interna och externa testare samt betagranskningen förklaras i min guide [TestFlight för att testa din iPhone-app](https://devoria.fr/sv/blog/testflight-testa-iphone-app).

Gör om kontrollerna från steg 6 på det här buildet. En app som fungerar i Expo Go kan fortfarande krascha i produktion, till exempel när en native-modul saknas.

## Vad det faktiskt kostar

Här är priserna som tjänsterna visar, kontrollerade den 27 september 2026, i dollar. Det belopp du faktureras beror också på din region, skatter och din användning: kontrollera erbjudandet innan du tecknar.

- **Claude-abonnemang**: [Pro kostar 20 dollar i månaden](https://claude.com/pricing), eller 17 dollar i månaden vid årsbetalning. Max-nivåerna börjar på 100 dollar i månaden, för mer användning.
- **Apple Developer-konto**: [99 dollar per år](https://developer.apple.com/programs/), obligatoriskt för TestFlight och App Store.
- **EAS**: [Expos gratisnivå](https://expo.dev/pricing) innehåller 15 iOS-byggen per månad, i en kö med låg prioritet. Starter kostar 19 dollar i månaden, plus extra användning.

För en liten prototyp kan Pro och EAS gratisnivå räcka som grund, om du håller dig inom deras kvoter. Lägg till Apple-kontot före TestFlight och räkna sedan separat på de tjänster du faktiskt behöver: databas, lagring eller betalt API. [Budgetmallen för en första app](https://devoria.fr/ressources/budget-premiere-app-ios.csv) hjälper dig att ställa upp posterna. Din tid för konfiguration och kontroll behöver du också räkna med.

## De ärliga begränsningarna, och var man fastnar

Claude Code har förändrat vem som kan skapa en iPhone-app. Det har inte förändrat vad Apple kräver för att publicera den. Ett avslag kommer snabbt: Solys har fått det, Nolera och Clic också. De vanligaste orsakerna beskrivs i [varför Apple refuserar en app](https://devoria.fr/sv/blog/apple-avvisade-appen-orsaker).

Med den här guiden kan du ta dig ända till TestFlight på egen hand. Där man oftast fastnar är efteråt: koppla in abonnemang, förbereda underlaget för granskaren, förstå ett avslag. För helhetsbilden av resan, läs sidan [skapa en iPhone-app](https://devoria.fr/sv/expertise/skapa-en-iphone-app).

För den delen samlar [iOS Kit](https://devoria.fr/sv/kits/ios) startkoden från mina appar, abonnemang inräknade, Claude Code-skills för varje steg och [Apple Review Kit](https://devoria.fr/sv/kits/review-apple). Hela upplägget finns på sidan [Claude Code-utbildning för att skapa en iOS-app](https://devoria.fr/sv/expertise/claude-code-kurs-ios-app).

Har du redan kört fast och vet inte på vad? Den [kostnadsfria diagnosen](https://devoria.fr/sv/diagnostic) berättar vad som faktiskt bromsar dig och skickar dig min checklista mot Apple-avslag.

## Vanliga frågor

### Kan man skapa en iPhone-app med Claude Code utan att kunna koda?

Ja för skärmar och enkel logik, om du granskar och testar varje steg. Nej om du hoppas slippa förstå någonting alls. Du måste kunna läsa ett felmeddelande, köra ett kommando och kontrollera vad Claude har ändrat. Det lär man sig snabbt genom att bygga.

### Är Claude Code gratis?

Nej. Claude Code kräver ett Pro-, Max-, Team-, Enterprise- eller Console-konto. Gratisnivån på claude.ai ingår inte. Med Pro kan du börja, med användningsgränser att hålla koll på.

### Behöver man en Mac för att skapa en iOS-app med Claude Code?

Nej. Du kodar på vilken dator som helst, testar i Expo Go på din iPhone, och EAS kompilerar och skickar appen på Expos servrar. En Mac är fortfarande praktisk för simulatorn, men inget krav.

### Claude Code eller Cursor för en React Native-app?

Jag använder båda, varje dag. Claude Code arbetar i terminalen och kör ändringar och tester i följd på egen hand. Cursor är en editor. Metoden betyder mer än verktyget: regler, en skärm i taget, tester.

### Hur lång tid tar det att publicera en första app med Claude Code?

Det beror på appens storlek och hur mycket tid du har. En app med en enda funktion går mycket snabbare. Den mest oförutsägbara delen är fortfarande Apples granskning.

### Kan Claude Code konfigurera abonnemang i appen?

Den kan skriva koden för paywallen och RevenueCat. Med anslutna verktyg och nödvändiga behörigheter kan den också agera i konsolerna. Dra aldrig slutsatsen att produkterna är konfigurerade bara för att koden finns: kontrollera id:n, priser och rättigheter efter köp, och testa sedan köp och återställning i TestFlight. [De vanliga misstagen med iOS-paywalls](https://devoria.fr/sv/blog/paywall-ios-misstag-som-stoppar-forsaljning) ger dig punkterna att kontrollera.


## Ditt projekt

[iOS Kit](https://devoria.fr/sv/kits/ios): Bygg din iPhone-app med Claude Code: startkoden till mina appar, skills som kontrollerar arbetet, samt Apple Review Kit, App Store Screenshots Kit och ASO Kit. 129,99 €.
