# ITMS-90717: ret »Invalid large app icon« i Expo

> ITMS-90717: 1024 x 1024-ikonet i dit build har gennemsigtighed eller en alfakanal. Eksportér det uigennemsigtigt, tjek det med sips, og lav et nyt build.

Original side: [ITMS-90717: ret »Invalid large app icon« i Expo](https://devoria.fr/da/blog/itms-90717-invalid-large-app-icon-expo)
Forfatter: [Mehdi Azizi](https://devoria.fr/da/mehdi-azizi)
Udgivet: 2026-11-04
Indhold senest revideret: 2026-11-04


ITMS-90717 er et automatisk tjek, som Apple kører på dit build. Fejlen betyder, at appens store ikon, det på 1024 x 1024 pixels, som App Store viser, indeholder gennemsigtighed eller en alfakanal. **Løsningen: et kvadratisk, uigennemsigtigt ikon, eksporteret uden alfakanal, og derefter et nyt build.**

Med Expo er din PNG-fil sjældent synderen, for prebuild lægger den allerede på en hvid baggrund. Jeg har læst den kode i SDK 57 og tjekket ikonerne i Solys, TradaZen og Nolera. Fejlen kommer så oftest fra en `ios`-mappe, der ligger i git, eller fra en Icon Composer-fil. Her er, hvordan du finder ud af hvilken, og hvordan du retter den.

## Hvad betyder fejlen ITMS-90717?

Beskeden hedder »ITMS-90717: Invalid large app icon«. Den siger, at det store ikon i din apps billedkatalog »can't be transparent or contain an alpha channel«: det må hverken være gennemsigtigt eller have en alfakanal. Ældre beskeder talte om »Invalid App Store Icon«. Det er den samme regel.

Det store ikon er det, App Store bruger. [Xcodes dokumentation om ikoner](https://developer.apple.com/documentation/xcode/configuring-your-app-icon) forklarer det: en app, der distribueres via App Store, skal have sit ikon på 1024 punkter med i billedkataloget.

Alfakanalen er det fjerde lag i en PNG, ved siden af rød, grøn og blå. Den gemmer hver pixels gennemsigtighed. **Et ikon kan se helt fyldt ud og stadig have den kanal**: det er fælden, der går igen i alle forumtråde.

Ligesom de andre ITMS-fejl er det ikke en afvisning fra en reviewer. Apple har analyseret binærfilen ved upload. Afhængigt af upload-værktøjet dukker fejlen op som en valideringsfejl, for eksempel med kode 409.

## Tjek dit ikon med sips

På en Mac er `sips` installeret fra start. Én linje er nok:

```bash
sips -g hasAlpha assets/icon.png
```

Du vil gerne se `hasAlpha: no`. Den 15. oktober 2026 kørte jeg kommandoen på ikonerne, der er angivet i app.json for Solys, TradaZen og Nolera: alle svarer `no`, i 1024 x 1024.

Jeg lavede også et testikon: en helt uigennemsigtig blå firkant, men gemt med en alfakanal. `sips` svarer `yes`. **Ikke en eneste pixel er gennemsigtig, og alligevel er kanalen der.** Derfor skriver så mange udviklere »mit ikon har ingen gennemsigtighed« under den besked.

I Preview viser inspektøren (Tools, Show Inspector) også billedets egenskaber, herunder alfakanalen.

## Ret det: eksportér ikonet uden alfakanal

Tre metoder, fra den nemmeste til den mest præcise.

**1. Preview.** File, Export, formatet PNG, og fjern fluebenet i Alpha. Den eksporterede fil har ikke længere en alfakanal.

**2. sips, uden at installere noget.** `sips` fjerner ikke alfakanalen fra en PNG. Du skal omvejen via en JPEG, som ikke har nogen:

```bash
sips -s format jpeg -s formatOptions 100 icon.png --out icon.jpg
sips -s format png icon.jpg --out icon-opaque.png
sips -g hasAlpha icon-opaque.png
```

På mit testikon med gennemsigtige hjørner blev hjørnerne hvide, og sidste linje svarer `no`. Omvejen via JPEG komprimerer billedet en smule, selv ved maksimal kvalitet: kig godt på resultatet.

**3. ImageMagick.** Hvis du har det installeret, vælger du selv baggrundsfarven:

```bash
magick icon.png -background white -alpha remove -alpha off icon-opaque.png
```

Ifølge [ImageMagicks dokumentation](https://imagemagick.org/command-line-options/#alpha) lægger `-alpha remove` billedet på baggrundsfarven, og `-alpha off` slår kanalen fra.

Alle tre metoder fylder gennemsigtigheden ud med en ensfarvet flade. Hvis dit logo svævede på en gennemsigtig baggrund, er det pæneste at åbne kildefilen og tegne en rigtig baggrund. Expo kræver det i sin [guide til app-ikonet](https://docs.expo.dev/develop/user-interface/splash-screen-and-app-icon/): ikonet skal fylde hele firkanten, uden afrundede hjørner eller gennemsigtige pixels. iOS lægger selv masken på.

## Hvor Expo henter dit ikon, og hvad det gør med det

Expo læser først `ios.icon` og derefter feltet `icon` i roden af din konfiguration. Ifølge [referencen for Expos konfiguration](https://docs.expo.dev/versions/latest/config/app/) accepterer `ios.icon` tre former: en PNG, et objekt med varianterne `light`, `dark` og `tinted`, eller en `.icon`-mappe lavet med Icon Composer.

Tabellen herunder kommer fra koden, der genererer iOS-ikonet under prebuild, `@expo/prebuild-config` 57.0.16 (SDK 57), læst den 15. oktober 2026:

| Det du angiver         | Det prebuild gør           | Risiko for ITMS-90717 |
| ---------------------- | -------------------------- | --------------------- |
| `icon` som PNG         | Fladet ud på hvid baggrund | Lav                   |
| `ios.icon.light`       | Fladet ud på hvid baggrund | Lav                   |
| `ios.icon.tinted`      | Fladet ud på hvid baggrund | Lav                   |
| `ios.icon.dark`        | Gennemsigtighed bevaret    | Ønsket af Apple       |
| `ios.icon` som `.icon` | Kopieret uændret           | Reel                  |
| `ios`-mappe i git      | Prebuild køres ikke        | Reel                  |

**Med en PNG fjerner Expo selv gennemsigtigheden og erstatter den med hvid.** Et frilagt logo ender altså på en hvid firkant: ingen fejl, men måske ikke det udseende, du ville have. Den mørke variant beholder sin gennemsigtighed, og det er meningen: Apple kræver en gennemsigtig baggrund til det mørke ikon, så systemets baggrund kan ses.

I Nolera, som angiver alle tre varianter, svarer `sips` `no` for det genererede lyse og tonede ikon og `yes` for det mørke. Ud fra datoen på committet med varianterne har version 1.0.2, som er online, dem med. Jeg har ikke tjekket det i dens IPA.

### Når ios-mappen ligger i git

Det er den mest sandsynlige årsag med Expo. [Expos side om continuous native generation](https://docs.expo.dev/workflow/continuous-native-generation/) siger det: hvis dit projekt indeholder mapperne `android` og `ios`, kører EAS Build ikke prebuild. **Så rører din app.json ikke længere ikonet**: det er PNG'en i `ios`-mappen, der bliver sendt til Apple.

Tjek det fra projektets rod:

```bash
sips -g hasAlpha ios/*/Images.xcassets/AppIcon.appiconset/*.png
```

Hvis kommandoen svarer `yes` for 1024-ikonet, så erstat filen med din uigennemsigtige version under samme navn. Hvis du ikke har lavet native ændringer i hånden, kan du også slette `ios`-mappen og tilføje den til `.gitignore`: EAS genererer den så ved hvert build. I Solys, TradaZen og Nolera ignoreres den mappe af git.

## iOS 26-formatet: Icon Composer

Icon Composer er Apples værktøj til Liquid Glass-ikoner i iOS 26. Det laver én enkelt `.icon`-fil med flere lag. Ifølge [Apples guide til Icon Composer](https://developer.apple.com/documentation/xcode/creating-your-app-icon-using-icon-composer) laver Xcode også billederne til ældre iOS-versioner ud fra den.

Expo understøtter det siden SDK 54. Du angiver mappen som tekst, aldrig i variantobjektet:

```json
{
  "expo": {
    "ios": {
      "icon": "./assets/app.icon"
    }
  }
}
```

I det tilfælde kopierer prebuild mappen uden at røre den, og det er Xcode, der laver det endelige ikon. Du skal altså bruge Xcode 26 eller nyere, som i de nyeste EAS-images, som jeg forklarer i guiden om [ITMS-90725](https://devoria.fr/da/blog/itms-90725-sdk-version-issue-expo).

Siden august 2025 har tråde på Apples udviklerforum rapporteret ITMS-90717 med `.icon`-filer. De nævnte spor: et gennemsigtigt PNG-lag, et lag større end lærredet, en gruppe med Blur-effekten tæt på kanten. De nævnte løsninger: slå Blur fra, behold en fyldt baggrund, eller gå tilbage til en PNG. Trådene giver ingen officiel løsning fra Apple, og fejlen blev stadig rapporteret i august 2026.

[Apples regler for ikoner](https://developer.apple.com/design/human-interface-guidelines/app-icons) peger i samme retning: hvis du importerer et baggrundslag, skal det dække hele fladen og være uigennemsigtigt. Mine apps bruger stadig en PNG, så jeg har ikke testet Icon Composer i produktion. **Hvis en `.icon`-fil blokerer din upload, så sæt `ios.icon` tilbage til en PNG**: Expo flader den ud, og dit ikon kommer igennem tjekket.

## Tjek ikonet i det endelige build

I IPA'en er 1024-ikonet ikke en PNG-fil: Xcode kompilerer det ind i `Assets.car`. Download IPA'en fra buildets side på expo.dev, og kør:

```bash
unzip -q MyApp.ipa -d ipa
xcrun assetutil --info ipa/Payload/*.app/Assets.car | grep -B3 '"RenditionName" : "App-Icon'
```

Hvert ikon viser et felt `Opaque`. Den 15. oktober 2026 kompilerede jeg med `actool`, Xcodes værktøj, ikonet fra Solys og mit testikon med gennemsigtige hjørner. Det første giver `"Opaque" : true`, det andet `"Opaque" : false`. Apple dokumenterer ikke feltet: tag det som et fingerpeg, ikke som Apples eget tjek.

En fælde, du skal kende: **test ikke de små PNG'er i appens rod med `sips`.** Xcode skriver dem med en alfakanal, selv når kilden er uigennemsigtig. I min test med Solys' ikon svarer `sips` `yes` for dem.

## De andre ikonfejl

| Kode       | Det Apple melder        | Spor med Expo         |
| ---------- | ----------------------- | --------------------- |
| ITMS-90717 | 1024-ikon gennemsigtigt | Eksportér uden alfa   |
| ITMS-90704 | 1024-ikon mangler       | 1024-post mangler     |
| ITMS-90022 | iPhone-ikon mangler     | Ufuldstændigt katalog |
| ITMS-90023 | iPad-ikon mangler       | Ufuldstændigt katalog |

De tre sidste beskeder stammer mest fra 2017 og 2018, da Xcode 9 ændrede reglerne for ikoner.

Med Expo er de blevet sjældne. Prebuild skriver ét universelt ikon på 1024, og Xcode genererer de andre størrelser. Uden et angivet ikon laver Expo endda en hvid firkant for at undgå en fejl ved upload. **Hvis en af de fejl dukker op, så kig på `ios`-mappen i git**: filen `Contents.json` i `AppIcon.appiconset` skal have en post med størrelsen `1024x1024`, og den PNG, den henviser til, skal findes.

## Før din næste upload

Et ikon er rettet på ti minutter, men hver fejl koster et build. De andre automatiske tjek kræver samme omhu, som [ITMS-90683](https://devoria.fr/da/blog/itms-90683-missing-purpose-string-expo) for tilladelsestekster eller [ITMS-91053](https://devoria.fr/da/blog/itms-91053-missing-api-declaration-expo) for privacy manifestet. Når buildet er godkendt, så installér det med [TestFlight](https://devoria.fr/da/blog/testflight-test-iphone-app-for-apple) for at se dit ikon på din hjemmeskærm.

Afvisninger fra en reviewer kræver mere overblik: fremgangsmåden står på siden [app afvist af Apple](https://devoria.fr/da/expertise/app-afvist-af-apple), og de hyppigste årsager står i [hvorfor Apple afviser en app](https://devoria.fr/da/blog/apple-afviser-app-afvisninger-guidelines).

For at tjekke dit projekt før upload samler [Review Kit](https://devoria.fr/da/kits/app-review) min tjekliste og Claude Code-skills, der gennemgår dit projekt. Hvis din upload sidder fast, og du vil have et menneske til at kigge, så [book en time med mig](https://devoria.fr/da/coaching): vi gennemgår dit projekt over video, på din skærm. Og hvis du forbereder din første udgivelse, så [tag din gratis diagnose](https://devoria.fr/da/diagnostic): den sætter trinene i rækkefølge og sender dig min tjekliste mod Apple-afvisninger.

## Ofte stillede spørgsmål

### Hvorfor ser Apple en alfakanal, når mit ikon ikke har nogen gennemsigtighed?

Fordi en PNG kan have en alfakanal, selv når alle pixels er uigennemsigtige. Mange værktøjer tilføjer den som standard ved eksport. Tjek med `sips -g hasAlpha`, og eksportér så ikonet igen uden kanalen.

### Kan man rette ITMS-90717 med en fjernopdatering?

Nej. Ikonet er kompileret ind i binærfilen, i `Assets.car`. En fjernopdatering ændrer kun appens JavaScript og ressourcer. Ret ikonet, lav et nyt build, og send det igen.

### Må det mørke ikon være gennemsigtigt?

Ja. Apple kræver en gennemsigtig baggrund til den mørke variant, og Expo bevarer dens gennemsigtighed. Jeg udleder, at tjekket gælder hovedikonet, det i App Store: det er det, der skal være uigennemsigtigt.

### Skal man runde hjørnerne på iOS-ikonet?

Nej. Lever en fyldt firkant: iOS lægger selv masken på. Afrundede hjørner efterlader gennemsigtige pixels i hjørnerne, præcis det, tjekket afviser.

### Understøtter Expo Icon Composer-ikoner til iOS 26?

Ja, siden SDK 54: angiv stien til `.icon`-mappen i `ios.icon` som tekst. Prebuild kopierer den uændret, og Xcode 26 kompilerer den. Får du ITMS-90717 med det format, så tjek gennemsigtige lag og Blur-effekten, eller gå midlertidigt tilbage til en PNG.


## Dit projekt

[Review Kit](https://devoria.fr/da/kits/app-review): Min tjekliste til App Store-review, mine afvisninger fra Apple og hvordan jeg rettede dem, tjeklisten til Google Play og tre Claude Code-skills. 369 kr..

[iOS & Android Kit](https://devoria.fr/da/kits/ios): Byg din iPhone- og Android-app med Claude Code: startkoden fra mine apps, vejen helt ud i butikkerne og alle kits. 739 kr..

[Diagnose: det, der skiller dig fra din iPhone-app](https://devoria.fr/da/diagnostic): 7 spørgsmål, 60 sekunder: du finder ud af, hvad der reelt holder dig tilbage fra at udgive din iPhone-app, får din vej i 4 trin og det kit, der passer til dig.
