# Lage app med Claude Code: iPhone-guide steg for steg

> Installer Claude Code, lag Expo-prosjektet, skriv CLAUDE.md, prompt én skjerm om gangen og send appen til TestFlight med EAS. Hele guiden.

Opprinnelig side: [Lage app med Claude Code: iPhone-guide steg for steg](https://devoria.fr/no/blog/lage-app-med-claude-code-iphone-guide)
Forfatter: [Mehdi Azizi](https://devoria.fr/no/mehdi-azizi)
Publisert: 2026-09-23
Innhold sist revidert: 2026-10-09


## Lage en app med Claude Code: det korte svaret

For å lage en app med Claude Code trenger du betalt tilgang til Claude Code (et kompatibelt abonnement eller Console med betaling etter bruk), Node.js, en iPhone med Expo Go og et Expo-prosjekt. Du skriver en `CLAUDE.md`-fil som beskriver stacken og reglene dine, du ber om én skjerm om gangen, du tester hver skjerm på iPhonen din, og så sender du appen til TestFlight med EAS.

Denne guiden utfyller guiden min [lage en iOS-app med AI](https://devoria.fr/no/blog/lage-ios-app-med-ai-fallgruver-sjekker), som forklarer hva AI gjør bra og hva den bommer på. Her går vi over til praksis: kommandoene, filene, promptene.

Jeg koder iOS-appene mine med Claude Code og Cursor hver dag. Stacken min: React Native, Expo, EAS, RevenueCat og Supabase. Solys, en vekkerklokke med minispill, og TradaZen, en app for å øve på trading, er publisert på App Store. Nolera og Clic ble avvist av Apple, og deretter rettet. Alt som følger kommer fra dette arbeidet.

For å se metoden brukt på en publisert app har jeg dokumentert [reisen til TradaZen, fra første commit til Apples avvisninger og kursendringene](https://devoria.fr/no/blog/tradazen-casestudie-lansere-iphone-app). Den erfaringsrapporten utfyller stegene i guiden.

## Steg 1: samle det du trenger

Før første kommando, sjekk at du har alt dette.

### En betalt Claude-konto

Claude Code er ikke inkludert i gratisversjonen av claude.ai. [Ifølge dokumentasjonen fra Anthropic](https://code.claude.com/docs/en/setup) trenger du en Pro-, Max-, Team-, Enterprise- eller Console-konto. Pro holder for å komme i gang, innenfor bruksgrensene.

### Node.js og en terminal

Expo krever [Node.js i LTS-versjon](https://docs.expo.dev/get-started/create-a-project/), på macOS, Windows eller Linux. Claude Code kjører på macOS 13 eller nyere, Windows 10 eller nyere og de vanligste Linux-distribusjonene.

### En iPhone og Expo Go

Installer Expo Go fra App Store på iPhonen din, så kan du prøve de første skjermene uten å kompilere din egen app. Før du lager prosjektet, [sjekk hvilken SDK-versjon som er kompatibel med installasjonen din på Expo Go-siden](https://expo.dev/go). Nyeste SDK og versjonen som distribueres på App Store er ikke alltid tilgjengelige samtidig: Expo har blant annet dokumentert [dette etterslepet i mai 2026](https://expo.dev/changelog/expo-go-and-app-store-may-2026). Ikke gå ut fra et versjonsnummer du fant i en gammel guide. Vil du bruke egne native moduler, må du regne med en development build.

### En Mac? Ikke nødvendig

iOS-bygg kompileres på Expos servere med EAS Build, med den Xcode-versjonen Expo-SDK-en din velger (ITMS-90725), og [EAS Submit fungerer på macOS, Linux og Windows](https://docs.expo.dev/submit/ios/). Du kan altså gå helt til TestFlight fra en PC. Guiden [publisere en iOS-app uten Mac](https://devoria.fr/no/blog/publisere-ios-app-uten-mac-expo-eas) går gjennom hele kjeden.

### En Apple Developer-konto, senere

Du trenger den ikke for å kode og teste i Expo Go fra App Store. Den blir påkrevd når du skal sende appen til TestFlight. Vi kommer tilbake til det i steg 7.

## Steg 2: installer Claude Code

På macOS, Linux eller WSL anbefaler Anthropic det native installasjonsprogrammet:

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

På Windows, i PowerShell:

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

Sjekk deretter at installasjonen fungerte:

```bash
claude --version
```

Foretrekker du npm, er kommandoen `npm install -g @anthropic-ai/claude-code`. Ikke bruk `sudo` foran, det fraråder dokumentasjonen eksplisitt.

Første gang du starter `claude`, åpnes en nettleser så du kan logge inn på kontoen din. Deretter skriver du på norsk: Claude leser filene dine, foreslår endringer og kjører kommandoer, med ditt samtykke.

## Steg 3: lag Expo-prosjektet

Gå til mappen der du har prosjektene dine og kjør:

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

Hvis verktøyet lar deg velge mellom kompatibilitet med Expo Go fra App Store og nyeste SDK, velg kompatibilitet for denne øvelsen. Uansett: sjekk at versjonen som opprettes støttes av Expo Go på iPhonen din før du går videre. Du kan lage en development build når prosjektet ditt trenger det.

En QR-kode dukker opp i terminalen. Skann den med kameraet på iPhonen: appen åpnes i Expo Go. En detalj stopper mange første gang: [Expo Go åpner bare prosjektet ditt hvis Expo CLI og Expo Go er logget inn på samme Expo-konto](https://docs.expo.dev/get-started/start-developing/). Kjør `npx expo login` på datamaskinen og logg inn med samme konto i appen.

Hvorfor Expo og ikke Swift? Claude kan React Native veldig godt, og du tester uten Mac. Jeg forklarer valget på siden [React Native og Expo for en mobilapp](https://devoria.fr/no/expertise/mobilapp-react-native-expo).

Husk en begrensning ved Expo Go: den inneholder bare de native modulene den allerede har med. Så snart du legger til et native bibliotek den ikke kjenner, for eksempel kjøp i appen, trenger du en development build. Det er ikke noe problem for de første skjermene.

### Velg riktig testmiljø

Expo Go, en development build og TestFlight beviser ikke det samme. [Expo beskriver development build](https://docs.expo.dev/develop/development-builds/introduction/) som din egen testapp, med de native modulene prosjektet ditt trenger.

| Det du vil sjekke                                      | Hvor du tester                                                | Hva testen ikke viser                                     |
| ------------------------------------------------------ | ------------------------------------------------------------- | --------------------------------------------------------- |
| Vise en første skjerm og prøve navigasjonen            | Expo Go, med en kompatibel SDK                                | Hvordan native moduler som mangler i Expo Go oppfører seg |
| Bruke et native bibliotek du har lagt til i prosjektet | En development build som inkluderer biblioteket               | Versjonen som distribueres, eller om Apple godkjenner den |
| Gå gjennom appen testerne får, og så teste kjøpene     | Et bygg sendt til TestFlight og riktig konfigurerte produkter | En ekte kundebetaling eller godkjenning for salg          |

Før du legger til en avhengighet, spør Claude: «Er den kompatibel med SDK-en min og testmiljøet jeg bruker nå? Må appen kompileres på nytt? Begrunn svaret med dokumentasjonen.» Da slipper du å bruke en kveld på å fikse en modul Expo Go rett og slett ikke kan laste, eller en SDK som avvises ved opplasting for ikke-offentlig API.

## Steg 4: skriv CLAUDE.md-filen for prosjektet

Dette er steget som lønner seg mest. Claude Code kan ta vare på et prosjektminne, men du må gjøre reglene eksplisitte. Filen `CLAUDE.md`, plassert i roten av prosjektet, gir felles instrukser for alle øktene. Det er her du skriver det Claude ikke kan gjette.

I prosjektmappen kjører du `claude` og skriver `/init`. [Ifølge dokumentasjonen](https://code.claude.com/docs/en/memory) analyserer Claude prosjektet og genererer en første `CLAUDE.md` med kommandoene og konvensjonene den finner. Så fyller du på med dine egne regler. Anthropic anbefaler å holde seg under 200 linjer: jo lengre filen er, jo dårligere følges instruksene.

Her er et kort eksempel, nær det jeg selv bruker:

```markdown
# Min app

## Stack

- Expo (SDK fra create-expo-app), React Native, TypeScript strict
- Navigasjon: Expo Router, én fil per skjerm i app/
- Data: Supabase (senere), aldri en hemmelig nøkkel i appen

## Regler

- Én skjerm om gangen. Ikke rør filer utenfor forespørselen.
- Ingen faste høyder i punkter: størrelser relativt til skjermen,
  ScrollView hvis innholdet kan bli for langt.
- Hver skjerm håndterer 3 tilstander: lasting, tom, feil.
- Tekster i grensesnittet på norsk, med æ, ø og å.
- Før du koder i mer enn 2 filer: foreslå en plan og vent på mitt ja.

## Kommandoer

- Start: npx expo start
- Tester: bruk skriptet som faktisk finnes i package.json.
  Finnes det ikke ennå, si fra; ikke meld om beståtte tester.
- Typer: npx tsc --noEmit
- Etter hver endring: kjør testene og typene, og fortell meg
  hva som er endret og hvordan jeg sjekker det på iPhone.
```

Regelen om faste høyder står ikke der tilfeldig. Vi kommer tilbake til den i steg 6.

## Steg 5: prompt én skjerm om gangen

«Lag en vanesporingsapp med abonnement til meg» gir et enormt, skjørt prosjekt som er umulig å lese gjennom. Metoden som fungerer er det motsatte: én forespørsel, én skjerm, ett resultat du kan teste på fem minutter.

### Start med en plan

For alt som berører flere filer, bytt til plan mode. Trykk `Shift+Tab` til du ser `plan mode on` i statuslinjen. [I denne modusen](https://code.claude.com/docs/en/common-workflows) leser Claude filene og foreslår en plan, men endrer ingenting før du sier ja. Du leser, retter og godkjenner.

En første prompt for å ramme inn prosjektet ser slik ut:

```text
Jeg vil ha en vanesporingsapp. Versjon 1: én eneste funksjon,
krysse av dagens vaner. Foreslå listen over skjermer og
mappestrukturen. Ikke kod noe ennå.
```

### Beskriv skjermen, tilstandene og grensetilfellene

Deretter én prompt per skjerm. Jo flere grensetilfeller du nevner, jo færre glemmer Claude:

```text
Lag skjermen app/index.tsx som viser dagens vaner.
- Hver rad: navnet på vanen, en avkrysningsboks, nåværende rekke.
- Tom tilstand: en tekst og en knapp «Legg til en vane».
- Lastetilstand og feiltilstand med en knapp «Prøv igjen».
- Dataene kommer fra en lokal tabell foreløpig.
- Må fungere på en iPhone SE like godt som på den største iPhonen:
  ingen fast høyde, listen skal kunne rulles.
Kjør testene og typene til slutt.
```

### Rett opp uten å la alt skrives om

Når en detalj ikke stemmer, vær presis og begrens omfanget:

```text
På iPhonen min havner knappen «Legg til en vane» under bunnlinjen
når listen er lang. Rett bare dette problemet i app/index.tsx,
uten å røre andre filer. Forklar årsaken.
```

Du kan også lime inn et skjermbilde i terminalen: Claude leser det.

## Øvelse: en vane som forblir avkrysset etter omstart

Dette er en læringsøvelse du gjør i ditt eget prosjekt, ikke et skjermbilde av en funksjon som allerede er levert. Målet er å gå fra en generert skjerm til en oppførsel du kan verifisere. Den krever verken brukerkonto eller kjøp i appen.

1. Behold én enkelt lokal vane som heter «Lese 10 minutter».
2. Be om en avkrysningsboks og lokal lagring som er kompatibel med Expo-prosjektet ditt.
3. Be agenten oppgi hvilke filer som er endret, eventuell ny avhengighet og kommandoene som faktisk ble kjørt.
4. Installer eller åpne appen på iPhonen, og gjør så sjekkene nedenfor.

```text
Ut fra den eksisterende skjermen: gjør vanen «Lese 10 minutter»
avkrysningsbar og ta vare på tilstanden når appen lukkes og åpnes igjen.
Bruk lokal lagring som er kompatibel med prosjektets avhengigheter.
Ikke lag konto, server, abonnement eller ekstra statistikk.
Før du koder, forklar hvordan du håndterer lasting og en feil
ved lesing eller lagring. Gjør deretter en avgrenset endring.
Til slutt: endrede filer, kjørte kommandoer, begrensninger som ikke er testet
og nøyaktige steg for å sjekke resultatet på iPhone.
```

| Handling på iPhonen                  | Forventet resultat                             | Hvis det feiler                                         |
| ------------------------------------ | ---------------------------------------------- | ------------------------------------------------------- |
| Åpne appen for første gang           | Vanen og boksen vises, uten feil               | Sjekk starttilstanden og innlastingen fra lagringen     |
| Krysse av, lukke og åpne appen igjen | Vanen er fortsatt avkrysset                    | Kontroller skriving og lesing av samme nøkkel           |
| Fjerne krysset og starte på nytt     | Vanen er fortsatt uten kryss                   | Sjekk at verdien `false` også blir lagret               |
| Gjøre det samme i flymodus           | Den lokale funksjonen er fortsatt tilgjengelig | Finn en nettverksavhengighet som er lagt til uten grunn |
| Øke tekststørrelsen                  | Navnet og kontrollen er fortsatt tilgjengelige | Fjern begrensninger som kutter eller skjuler handlingen |

Ikke be om «skriv om alt» hvis én rad feiler. Beskriv handlingen, forventet resultat og det du faktisk ser. For eksempel: «Etter omstart er boksen tom igjen selv om jeg hadde krysset av. Forklar årsaken og rett lagringen uten å endre designet.»

[Last ned CLAUDE.md-malen og sjekklisten (.md)](https://devoria.fr/ressources/claude-md-premiere-app-ios.md). Åpne den i editoren din eller i en notatapp. Tilpass kommandoene til prosjektet ditt før du gir den til agenten.

## Steg 6: få koden gjennomgått og testet

Claude Code skriver kode som ser riktig ut. Bare testene dine og iPhonen din forteller deg om den er det.

### Tester så du ikke ødelegger det som fungerer

Jo større appen blir, jo større er risikoen for at hver forespørsel ødelegger en skjerm du allerede har godkjent. Prosjektet Expo lager har ingen tester: be først Claude installere Jest med `jest-expo`, slik Expos dokumentasjon anbefaler. Be deretter om tester for den viktige logikken (beregning av en rekke, validering av et skjema) og få dem kjørt etter hver endring. Det er derfor testkommandoene står i `CLAUDE.md`: Claude kjører dem uten at du må minne om det. Med en regelfil og tester ødelegger AI-en mye sjeldnere det som allerede virket.

### Les gjennom hver endring

Du trenger ikke forstå hver linje. Du må vite hvilke filer som er endret, og hvorfor. Hvis Claude har rørt en fil som ikke har noe med saken å gjøre, spør om grunnen før du godtar. Spør så: «Hva kan gå i stykker her?»

### Sjekk på en liten og en stor iPhone

Dette er lærdommen som har kostet meg mest. Solys ble avvist av Apple etter regel 2.1: demoen i onboardingen var umulig å vinne på en iPad Air, der appen kjørte i iPhone-kompatibilitetsmodus. Årsaken: høyder kodet i faste punkter, ikke relativt til skjermstørrelsen. På min iPhone fungerte alt. Koden var gjennomgått, testene var grønne. Ingen verktøy hadde sett på skjermen i en annen størrelse.

Siden da sjekker jeg hver skjerm minst på den minste og den største iPhonen. Har du bare én telefon, holder simulatoren i Xcode på Mac, eller en venn med en annen modell. Se spesielt på lange tekster, tastaturet som er åpent i skjemaer og knapper festet nederst.

## Det Claude Code gjør dårlig

Claude Code er glimrende på skjermer og logikk. Utenfor prosjektmappen din er den mye mindre pålitelig.

### Signering og sertifikater

Uten autorisert tilgang til Apple-kontoen din vet ikke Claude hvordan den står til. Den kan finne på en sertifikatprosedyre som blander Xcode og Expo. La EAS håndtere signeringen: [Expos dokumentasjon](https://docs.expo.dev/build/setup/) forklarer at EAS CLI kan generere og lagre disse filene for deg, etter at du har logget inn på Apple Developer-kontoen din.

### App Store Connect

Produktsiden, personverndeklarasjonene, [skjermbildene](https://devoria.fr/no/kits/captures-app-store) og de juridiske lenkene er data du må sjekke i App Store Connect. Claude Code kan nå handle i en innlogget nettleser via [Chrome-integrasjonen sin](https://code.claude.com/docs/en/chrome), med de nødvendige tilgangene. Det garanterer ikke at feltene er riktige: les gjennom informasjonen, sjekk hvilke kontoer som brukes og godkjenn selv forpliktelsene og innsendingen til gjennomgang.

### Abonnementer

Å skrive en paywall tar ti minutter. Å få produktene i App Store Connect, oppsettet i RevenueCat og koden til å stemme overens er en helt annen historie. Én identifikator som avviker med ett tegn, og paywallen er tom hos revieweren. De vanligste fellene står i [nybegynnerfeil med iOS-paywall](https://devoria.fr/no/blog/paywall-ios-nybegynnerfeil-salg).

### Grensetilfellene

Uten instruks håndterer Claude normaltilfellet. Ingen nettverkstilgang, en tom liste, et avbrutt kjøp: det er opp til deg å nevne dem.

### Sikkerhet i Supabase

Når Claude lager tabeller i Supabase, sjekk at sikkerhet på radnivå (RLS) er slått på, med policyer som begrenser hver bruker til egne data. Sjekk også at ingen hemmelig nøkkel havner i appkoden. Skriv disse to forbudene inn i `CLAUDE.md` så snart du kobler til en database.

## Steg 7: over på TestFlight med EAS

Skjermene dine er sjekket i Expo Go eller i en development build, avhengig av modulene du bruker. Nå går du over til bygget som skal distribueres til testerne.

### Gjør EAS klart

Nå trenger du en [betalt Apple Developer-konto](https://devoria.fr/no/blog/apple-utviklerkonto-pris-gratis-eller-99-dollar): [Expo minner om](https://docs.expo.dev/submit/ios/) at den er påkrevd for å sende en app til App Store. Installer deretter Expos verktøy og konfigurer prosjektet:

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

Legg til en unik bundle-identifikator i `app.json`, under `ios.bundleIdentifier`, for eksempel `com.dittnavn.minapp`.

### Kompiler og send

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

Den første kommandoen kompilerer appen på Expos servere. Første gang tilbyr EAS å logge inn på Apple-kontoen din for å lage sertifikatene. Den andre sender bygget til App Store Connect. Du kan også gjøre alt på én gang med `eas build --platform ios --auto-submit`.

Bygget må behandles av Apple før det dukker opp i TestFlight, og behandlingen kan avvise det, for eksempel med ITMS-90717 for et gjennomsiktig ikon. En vellykket opplasting betyr altså ikke at det allerede kan installeres: sjekk statusen i App Store Connect. Interne og eksterne testere og beta-gjennomgangen forklares i guiden min [TestFlight for å teste iPhone-appen din](https://devoria.fr/no/blog/testflight-teste-iphone-app-for-innsending).

Gjør sjekkene fra steg 6 på nytt på dette bygget. En app som fungerer i Expo Go kan fortsatt krasje i produksjon, for eksempel når en native modul mangler.

## Hva det faktisk koster

Her er prisene tjenestene oppgir, sjekket 27. september 2026, i dollar. Beløpet du faktureres avhenger også av region, avgifter og bruk: sjekk tilbudet før du abonnerer.

- **Claude-abonnement**: [Pro koster 20 $ per måned](https://claude.com/pricing), eller 17 $ per måned med årlig betaling. Max-planene starter på 100 $ per måned, for mer bruk.
- **Apple Developer-konto**: [99 $ per år](https://developer.apple.com/programs/), påkrevd for TestFlight og App Store.
- **EAS**: [Expos gratisplan](https://expo.dev/pricing) inkluderer 15 iOS-bygg per måned, i en kø med lav prioritet. Starter-planen koster 19 $ per måned, pluss ekstra bruk.

For en liten prototype kan Pro og gratisplanen til EAS være et utgangspunkt, så lenge du holder deg innenfor kvotene. Legg til Apple-kontoen før TestFlight, og regn så separat på tjenestene du faktisk trenger: database, lagring eller betalt API. [Budsjettmalen for en første app](https://devoria.fr/ressources/budget-premiere-app-ios.csv) hjelper deg å sette opp postene. Tiden du bruker på oppsett og sjekking må du også regne med.

## De ærlige begrensningene, og hvor folk står fast

Claude Code har endret hvem som kan lage en iPhone-app. Det har ikke endret hva Apple krever for å publisere den. En avvisning kommer fort: Solys har fått det, Nolera og Clic også. De vanligste årsakene står i [hvorfor Apple avviser en app](https://devoria.fr/no/blog/avvist-av-apple-hvorfor-appen-blir-avvist).

Du kan komme deg helt til TestFlight alene med denne guiden. Der folk oftest står fast, er etterpå: koble til abonnementene, forberede dokumentasjonen til revieweren, forstå en avvisning. For helhetsbildet, les siden [lage en iPhone-app](https://devoria.fr/no/expertise/lage-en-iphone-app).

Til den delen samler [iOS Kit](https://devoria.fr/no/kits/ios) startkoden fra appene mine, abonnementer inkludert, Claude Code-skills for hvert steg og [Apple Review Kit](https://devoria.fr/no/kits/review-apple). Hele løpet finner du på siden [Claude Code-kurs for å lage en iOS-app](https://devoria.fr/no/expertise/claude-code-kurs-ios-app).

Står du allerede fast uten å vite hvorfor? Den [gratis diagnosen](https://devoria.fr/no/diagnostic) forteller deg hva som egentlig holder deg tilbake, og sender deg sjekklisten min mot avvisninger fra Apple.

## Ofte stilte spørsmål

### Kan man lage en iPhone-app med Claude Code uten å kunne kode?

Ja for skjermer og enkel logikk, hvis du leser gjennom og tester hvert steg. Nei hvis du håper å slippe å forstå noe som helst. Du må kunne lese en feilmelding, kjøre en kommando og sjekke hva Claude har endret. Det lærer du fort mens du bygger.

### Er Claude Code gratis?

Nei. Claude Code krever en Pro-, Max-, Team-, Enterprise- eller Console-konto. Gratisversjonen av claude.ai inkluderer det ikke. Pro holder for å komme i gang, med bruksgrenser du må følge med på.

### Trenger man en Mac for å lage en iOS-app med Claude Code?

Nei. Du koder på hvilken som helst datamaskin, du tester i Expo Go på iPhonen, og EAS kompilerer og sender appen fra Expos servere. En Mac er fortsatt praktisk for simulatoren, men den er ikke påkrevd.

### Claude Code eller Cursor for en React Native-app?

Jeg bruker begge, hver dag. Claude Code jobber i terminalen og tar endring og tester etter hverandre på egen hånd. Cursor er en editor. Metoden betyr mer enn verktøyet: regler, én skjerm om gangen, tester.

### Hvor lang tid tar det å publisere en første app med Claude Code?

Det kommer an på hvor stor appen er og hvor mye tid du har. En app med én funksjon går mye raskere. Den mest uforutsigbare delen er fortsatt Apples gjennomgang.

### Kan Claude Code sette opp abonnementer i appen?

Den kan skrive koden for paywallen og RevenueCat. Med tilkoblede verktøy og nødvendige tillatelser kan den også gjøre ting i konsollene. Ikke anta at produktene er satt opp bare fordi koden finnes: sjekk identifikatorene, prisene og rettighetene etter kjøp, og test så kjøp og gjenoppretting på TestFlight. [Vanlige feil med iOS-paywaller](https://devoria.fr/no/blog/paywall-ios-nybegynnerfeil-salg) gir deg punktene du bør sjekke.


## Prosjektet ditt

[iOS Kit](https://devoria.fr/no/kits/ios): Lag iPhone-appen din med Claude Code: startkoden til appene mine, skills som sjekker arbeidet, og Apple Review Kit, App Store Screenshots Kit og ASO Kit. 129,99 €.
