# eas submit iOS: vanlige feil og hvordan du fikser dem

> Feiler eas submit? De ekte meldingene fra EAS og App Store Connect, årsaken og løsningen: ascAppId, API-nøkkel, Apple-avtale, ITMS-koder.

Opprinnelig side: [eas submit iOS: vanlige feil og hvordan du fikser dem](https://devoria.fr/no/blog/eas-submit-ios-vanlige-feil-losning)
Forfatter: [Mehdi Azizi](https://devoria.fr/no/mehdi-azizi)
Publisert: 2026-11-04
Innhold sist revidert: 2026-11-04


Når `eas submit --platform ios` feiler, sier meldingen nesten alltid hvor du skal lete. **Enten er EAS-konfigurasjonen din ufullstendig, eller så blokkerer Apple-kontoen din, eller så avviser Apple binærfilen.** De to første tilfellene fikser du på noen minutter, uten nytt build. Det tredje kjenner du igjen på en ITMS-kode, og det krever nesten alltid et nytt build.

Jeg publiserer iOS-appene mine, blant annet Solys, TradaZen og Nolera, med Expo og EAS. Meldingene jeg siterer her er kopiert fra kildekoden til EAS CLI, på [Expos offisielle GitHub-repo](https://github.com/expo/eas-cli), lest gjennom 3. november 2026. Det gamle Expo-forumet sender deg nå videre til Discord: koden er fortsatt den sikreste kilden. For hele løpet, fra `eas.json`-filen til innsending til gjennomgang, les først [EAS Submit iOS: publiser en Expo-app på App Store](https://devoria.fr/no/blog/eas-submit-ios-publisere-expo-app-app-store). Her reparerer vi.

## Hva eas submit gjør, og hva den trenger

Ifølge [Expos dokumentasjon](https://docs.expo.dev/deploy/submit-to-app-stores/) sender kommandoen `.ipa`-filen din til App Store Connect. Buildet dukker opp i TestFlight etter at Apple har behandlet det, vanligvis etter 10 til 15 minutter. **Den sender ikke appen din til gjennomgang**: det må du fortsatt gjøre selv i App Store Connect.

[Expos side om iOS-innsending](https://docs.expo.dev/submit/ios/) lister tre forutsetninger:

- **en betalt Apple Developer-konto**, påkrevd for all innsending til App Store;
- **bundle-ID-en** i `ios.bundleIdentifier`;
- **EAS CLI installert** og logget inn på Expo-kontoen din.

For å sende uten interaksjon legger samme side til to innstillinger:

- **`ascAppId`** i `submit`-profilen i `eas.json`, nummeret til appoppføringen din i App Store Connect;
- **en App Store Connect API-nøkkel**, administrert av EAS eller levert av deg. Hvordan du lager den, hvilken rolle den har og hvordan du trekker den tilbake, står i [App Store Connect API-nøkkel (.p8)](https://devoria.fr/no/blog/app-store-connect-api-nokkel-p8).

Minimumsprofilen er bare noen få linjer. Verdien er fiktiv:

```json
{
  "submit": {
    "production": {
      "ios": {
        "ascAppId": "1234567890"
      }
    }
  }
}
```

Hvis EAS allerede tar vare på API-nøkkelen din, holder denne profilen. Sånn er det for de fleste appene mine.

## Les meldingen: tre feilfamilier

Før du leter etter løsningen, finn ut når kommandoen stopper. Denne tabellen er rutenettet jeg bruker ved hver feil.

| Når feilen skjer                         | Familie           | Nytt build?   |
| ---------------------------------------- | ----------------- | ------------- |
| Før noe er sendt                         | EAS-konfigurasjon | Nei           |
| Tilkobling til Apple, opprettelse av app | Apple-konto       | Nei           |
| Etter sending, kode ITMS-90xxx           | Binærfil avvist   | Nesten alltid |

Detaljene finner du på siden for innsendingen, i Expo-dashbordet. [Expo anbefaler](https://docs.expo.dev/deploy/submit-to-app-stores/) å lese loggene der og se etter boblen «Build Annotations», som viser vanlige feilårsaker. I terminalen viser `--verbose` alltid loggene fra EAS Submit, ifølge [EAS CLI-referansen](https://docs.expo.dev/eas/cli/).

## Feil i EAS-konfigurasjonen

### «Set ascAppId in the submit profile (eas.json) or re-run this command in interactive mode.»

Du kjørte kommandoen med `--non-interactive`, for eksempel i CI, og profilen din inneholder ikke `ascAppId`. [Koden i EAS CLI](https://github.com/expo/eas-cli/blob/main/packages/eas-cli/src/submit/ios/IosSubmitCommand.ts) stopper da: den kan verken spørre deg eller opprette appoppføringen for deg.

**Løsning: kopier nummeret til appoppføringen inn i `ascAppId`.** [Expo forklarer hvor du finner det](https://github.com/expo/fyi/blob/main/asc-app-id.md): i App Store Connect åpner du appen din, så App Information. Det er feltet Apple ID, under General Information, et tall på rundt ti sifre. Det er verken Apple-e-postadressen din eller bundle-ID-en din.

På Nolera, uten `ascAppId`, krevde kommandoen en Apple Developer-økt, som utløper. Etter at nummeret kom inn i `eas.json`, spør innsendingen ikke om noe lenger.

> Legg til `ascAppId` før buildet, ikke etter. Til og med SDK 57 inkluderer [fingeravtrykket Expo beregner](https://github.com/expo/expo/blob/main/packages/@expo/fingerprint/src/sourcer/Expo.ts) alltid `eas.json`. På Vigie, der runtime-versjonen følger `fingerprint`-policyen, endret fingeravtrykket seg da jeg la til dette nummeret etter et build: en oppdatering publisert etterpå ville aldri nådd det installerte buildet. Fra og med SDK 58 ignorerer standardinnstillingen for fingeravtrykk, `balanced`, `eas.json`, ifølge [Expos endringslogg](https://github.com/expo/expo/blob/main/packages/@expo/fingerprint/CHANGELOG.md).

### «App Store Connect API Keys cannot be set up in --non-interactive mode.»

Profilen din inneholder ingen nøkkel, og EAS har ingen knyttet til appen din. [Expo presiserer](https://docs.expo.dev/submit/ios/) at kommandoen i ikke-interaktiv modus ikke kan be deg om en nøkkel, og at den feiler med denne meldingen.

To mulige løsninger:

- **La EAS lage og ta vare på nøkkelen.** Kjør `eas credentials --platform ios` én gang i interaktiv modus på maskinen din, og la den sette opp en App Store Connect API-nøkkel for appen.
- **Bruk din egen nøkkel** i `ascApiKeyPath`, `ascApiKeyIssuerId` og `ascApiKeyId`. Ifølge [eas.json-referansen](https://docs.expo.dev/eas/json/) godtar disse tre feltene miljøvariabler, som `$ASC_API_KEY_PATH`.

På den siste appen min ville `--auto-submit` ha en Apple-ID for å lage sin egen innsendingsnøkkel. Jeg la de tre feltene for min egen nøkkel i profilen i arbeidskopien min, aldri committet. Så sendte jeg det ferdige buildet med `--id` og `--non-interactive`.

### «EXPO_APPLE_APP_SPECIFIC_PASSWORD must be in the format xxxx-xxxx-xxxx-xxxx, where x is a lowercase letter.»

Variabelen inneholder noe annet enn et appspesifikt passord, ofte selve Apple-passordet ditt. [EAS CLI](https://github.com/expo/eas-cli/blob/main/packages/eas-cli/src/submit/ios/IosSubmitCommand.ts) sjekker dette formatet før noe sendes.

Ifølge [Apples hjelpeside](https://support.apple.com/en-us/102654) lager du et appspesifikt passord på account.apple.com, under App-Specific Passwords, med tofaktorautentisering slått på. Det trekkes tilbake så snart du endrer passordet til Apple-kontoen din. **Expo anser denne metoden som [mindre sikker enn API-nøkkelen](https://github.com/expo/fyi/blob/main/apple-app-specific-password.md), som er standardmetoden og den anbefalte.**

## Feil i Apple-kontoen

### «… agree to the latest Program License Agreement in your developer account.»

Hele meldingen begynner med «You currently don't have access to this membership resource». Hos Apple kan råsvaret inneholde «Unable to process request - PLA Update available». De nyere innsendingsstegene i EAS viser heller «A required Apple agreement is missing or has expired».

Årsaken er den samme: Apple har oppdatert en avtale, og ingen har godtatt den. **Bare kontoinnehaveren, Account Holder, kan godta avtaler**, ifølge [Apples rolletabell](https://developer.apple.com/help/account/access/roles/). [Koden i EAS](https://github.com/expo/eas-cli/blob/main/packages/build-tools/src/steps/utils/ios/AscApiClient.ts) ber vedkommende gå via Business-siden i App Store Connect, og deretter, hvis Apple foreslår det, via kontoen sin på developer.apple.com. Kjør så kommandoen på nytt. Avtalen for betalte apper har sin egen guide: [Paid Apps Agreement i App Store Connect](https://devoria.fr/no/blog/paid-apps-agreement-statuser-w-8ben-forste-utbetaling).

### «App Store Connect rejected the API authentication credentials.»

Apple svarte med en 401-feil, `NOT_AUTHORIZED`. [EAS](https://github.com/expo/eas-cli/blob/main/packages/build-tools/src/steps/utils/ios/AscApiClient.ts) nevner tre årsaker: en nøkkel som ikke lenger er aktiv, en nøkkel fra en annen App Store Connect-konto, eller feil Key ID, nøkkelinnhold eller Issuer ID.

Sjekk de to ID-ene i App Store Connect, menyen Users and Access, fanen Integrations. Ifølge [Apple](https://developer.apple.com/documentation/appstoreconnectapi/generating-tokens-for-api-requests) vises Issuer ID øverst på siden, og Key ID i listen over aktive nøkler. **En tilbakekalt nøkkel kan aldri aktiveres igjen.** [Apple viser den](https://developer.apple.com/documentation/appstoreconnectapi/revoking-api-keys) i 30 dager under Revoked: du må lage en ny.

### «App Store Connect app for application identifier … was not found.»

Appoppføringen som `ascAppId` peker på, finnes ikke med nøkkelen din. [EAS](https://github.com/expo/eas-cli/blob/main/packages/build-tools/src/steps/utils/ios/AscApiUtils.ts) ber deg sjekke nummeret, og at nøkkelen faktisk har tilgang til appen i riktig konto. Den lister til og med noen apper som er synlige med denne nøkkelen. Med Apples egne opplastingsverktøy vises det samme problemet som «No suitable application records were found».

Tre årsaker går igjen, to av dem nevnt i [denne tråden på Apples forum](https://developer.apple.com/forums/thread/106806):

- **Appoppføringen finnes ikke.** Opprett den i App Store Connect, eller fjern `ascAppId` så kommandoen oppretter den.
- **Nummeret kommer fra en annen konto.** Du har kopiert `ascAppId` fra et annet team eller et annet prosjekt.
- **Brukeren har ikke tilgang til appen.** En App Manager eller Developer kan være begrenset til enkelte apper. En team-nøkkel har derimot [tilgang til alle apper](https://developer.apple.com/documentation/appstoreconnectapi/creating-api-keys-for-app-store-connect-api) i kontoen.

### «… is not available to team» eller «… is not available to provider»

Denne meldingen dukker opp når EAS oppretter appoppføringen for deg fordi `ascAppId` mangler. Bundle-ID-en er allerede tatt av et annet team. [EAS ber deg](https://github.com/expo/eas-cli/blob/main/packages/eas-cli/src/credentials/ios/appstore/ensureAppExists.ts) endre den i appkonfigurasjonen og kjøre på nytt.

### «App name "…" is already taken. Using generated name "…"»

Dette er ikke en feil. Når navnet allerede er tatt på App Store, legger EAS til seks tilfeldige tegn og prøver igjen, opptil fem ganger. Du gir appoppføringen nytt navn senere i App Store Connect. For å unngå dette, fyll inn `appName` og `language` i profilen før første innsending: uten `language` blir [hovedspråket `en-US`](https://docs.expo.dev/eas/json/).

## Feil i binærfilen: ITMS-kodene

Etter sendingen behandler Apple buildet. Hvis det avvises, viser loggen én eller flere ITMS-koder. Dette er de som [innsendingssteget i EAS](https://github.com/expo/eas-cli/blob/main/packages/build-tools/src/steps/functions/uploadToAsc.ts) kjenner igjen og oversetter:

| ITMS-kode                  | Hva Apple avviser                         | Løsning                  |
| -------------------------- | ----------------------------------------- | ------------------------ |
| 90189                      | Buildnummeret er allerede brukt           | `autoIncrement`          |
| 90062, 90186, 90478        | Versjonen er lukket eller passert         | Øk `version`             |
| 90683                      | Tillatelsestekst mangler                  | `ios.infoPlist`          |
| 90725                      | For gammel iOS SDK                        | iOS-image eller Expo SDK |
| 90054, 90055               | Bundle ulik appoppføringen det sendes til | Rett `ascAppId`          |
| 90022, 90023, 90391, 90713 | Ikoner mangler eller er feil deklarert    | Gå gjennom ikonene       |
| 90771                      | ID-er for bakgrunnsoppgaver mangler       | `ios.infoPlist`          |

Tre presiseringer fra disse meldingene:

- **Buildnummeret er unikt per versjon.** For 90189 anbefaler EAS `"autoIncrement": true` i `eas.json`. Alt står i [buildnummer og versjon](https://devoria.fr/no/blog/app-store-connect-build-number-versjon-buildnummer).
- **For 90725** anbefaler EAS å velge et nyere iOS-image i `eas.json`, og om nødvendig å gå over til en støttet Expo SDK.
- **For 90771** deklarerer Info.plist bakgrunnsmodusen `processing`, men ikke nøkkelen `BGTaskSchedulerPermittedIdentifiers`.

Unntatt for 90054 og 90055, der det holder å peke på riktig appoppføring eller et annet build, **gjelder løsningen binærfilen: lag et nytt build og send det på nytt.** To av kodene har sin egen guide: [ITMS-90683 med Expo](https://devoria.fr/no/blog/itms-90683-missing-purpose-string-expo) og [ITMS-90725](https://devoria.fr/no/blog/itms-90725-sdk-version-issue-expo).

I slutten av september 2026 ble et build av Solys avvist ved levering for ITMS-90683. Jeg hadde fjernet en tillatelsestekst for bilder mens jeg ryddet i konfigurasjonsfilen. Solys bruker ikke bilder, men et bibliotek i prosjektet kaller Photos-API-et i iOS. **Apple analyserer binærfilen, ikke faktisk bruk:** siden da har jeg aldri fjernet disse tekstene.

Statusen Missing Compliance er derimot ikke en innsendingsfeil. Det mangler en erklæring om kryptering fra deg, forklart i [guiden for publisering med EAS](https://devoria.fr/no/blog/eas-submit-ios-publisere-expo-app-app-store).

## Sjekklisten min før hver innsending

- `ascAppId` står i `submit`-profilen, lagt til før buildet.
- API-nøkkelen administreres av EAS, eller de tre feltene peker på en `.p8` som ligger utenfor repoet.
- Account Holder har godtatt de nyeste avtalene i App Store Connect.
- `autoIncrement` er på, med `"appVersionSource": "remote"`, [anbefalt av Expo](https://docs.expo.dev/build-reference/app-versions/) siden EAS CLI 12.
- `version` er høyere enn den siste godkjente versjonen.
- Hvert sensitivt API i binærfilen har sin tillatelsestekst.
- For en ny app er `appName` og `language` fylt inn før første innsending.

## Send din første app uten å bli sittende fast

Kommandoen er bare ett steg. [iOS & Android Kit](https://devoria.fr/no/kits/ios) bygger på startkoden til appene mine, abonnementer inkludert, og tar deg gjennom fire steg helt til App Store, i ditt eget tempo.

Hvis du forbereder din første lansering, [ta den gratis diagnosen](https://devoria.fr/no/diagnostic): den forteller deg hva som faktisk stopper deg, og sender deg sjekklisten min mot avvisninger fra Apple. For appoppføringen, skjermbildene og godkjenningen går siden [publisere en app på App Store](https://devoria.fr/no/expertise/publisere-app-pa-app-store) gjennom hvert steg.

## Ofte stilte spørsmål

### Hvorfor feiler eas submit bare i CI?

I `--non-interactive`-modus kan ikke kommandoen spørre deg om noe. Den trenger `ascAppId` i profilen og en API-nøkkel som allerede er knyttet til appen, eller de tre feltene i `eas.json`. På maskinen din ville den ha stilt deg disse spørsmålene.

### Må jeg lage et nytt build etter en feil i eas submit?

Bare hvis Apple avviser binærfilen, med en ITMS-kode. Unntak: for ITMS-90054 og 90055 pekte buildet på feil appoppføring, og det holder å sende det til riktig. Konfigurasjons- og kontofeil retter du i `eas.json`, i App Store Connect eller i Apple-kontoen din. Så sender du det samme buildet på nytt, for eksempel med `--latest` eller `--id`.

### Hvor ser jeg loggene for en EAS Submit-innsending?

På siden for innsendingen, i Expo-dashbordet. Expo anbefaler å lese loggene der og boblen «Build Annotations». I terminalen legger du til `--verbose` for alltid å vise loggene.

### Kan jeg bruke eas submit med en gratis Apple-konto?

Nei. Expo krever en betalt Apple Developer-konto for å sende en app til App Store. Gratiskontoen lar deg teste på din egen iPhone, ikke bruke App Store Connect.

### Hvilken rolle skal API-nøkkelen ha for eas submit?

Expos guide gir nøkkelen rollen Admin. Ifølge Apples rolletabell kan også rollene App Manager og Developer laste opp builds. Expo-buildene mine kjører med en team-nøkkel med rollen App Manager. Bare Account Holder og Admins kan lage en team-nøkkel.

### Hva betyr «Increment Build Number» i EAS?

Apple har avvist buildet med koden ITMS-90189: dette buildnummeret finnes allerede for denne versjonen. Slå på `"autoIncrement": true` i `eas.json`, eller øk `ios.buildNumber`, og lag så et nytt build.


## Prosjektet ditt

[Review Kit](https://devoria.fr/no/kits/app-review): Sjekklisten min for App Store-gjennomgang, Apples avslag på appene mine med rettelser, sjekklisten for Google Play og tre Claude Code-skills. 499 kr.

[iOS & Android Kit](https://devoria.fr/no/kits/ios): Lag din iPhone- og Android-app med Claude Code: startkoden fra appene mine, veien helt til butikkene og alle kitene. 999 kr.

[Diagnose: dette står mellom deg og iPhone-appen din](https://devoria.fr/no/diagnostic): 7 spørsmål, 60 sekunder: du får vite hva som egentlig hindrer deg i å publisere iPhone-appen din, veien din i 4 steg og kitet som passer deg.
