# ITMS-90717: åtgärda ”Invalid large app icon” i Expo

> ITMS-90717: byggets ikon på 1024 x 1024 har transparens eller en alfakanal. Exportera den ogenomskinlig, kontrollera med sips och bygg om.

Originalsida: [ITMS-90717: åtgärda ”Invalid large app icon” i Expo](https://devoria.fr/sv/blog/itms-90717-invalid-large-app-icon-expo)
Författare: [Mehdi Azizi](https://devoria.fr/sv/mehdi-azizi)
Publicerad: 2026-11-04
Innehållet senast granskat: 2026-11-04


ITMS-90717 är en automatisk kontroll som Apple kör på ditt bygge. Den säger att appens stora ikon, den på 1024 x 1024 pixlar som visas i App Store, innehåller transparens eller en alfakanal. **Lösningen: en kvadratisk, ogenomskinlig ikon som exporteras utan alfakanal, och sedan ett nytt bygge.**

Med Expo är det sällan din PNG-fil som är boven: prebuild lägger den redan på en vit bakgrund. Jag har läst den koden i SDK 57 och kontrollerat ikonerna i Solys, TradaZen och Nolera. Felet kommer då oftast från en versionshanterad `ios`-mapp eller en Icon Composer-fil. Så här hittar du vilken det är, och fixar den.

## Vad betyder felet ITMS-90717?

Meddelandet heter ”ITMS-90717: Invalid large app icon”. Det anger att den stora ikonen i appens bildkatalog ”can't be transparent or contain an alpha channel”: den får varken vara transparent eller innehålla en alfakanal. Äldre meddelanden talade om ”Invalid App Store Icon”. Det är samma regel.

Den stora ikonen är App Store-ikonen. [Xcodes dokumentation om ikoner](https://developer.apple.com/documentation/xcode/configuring-your-app-icon) förklarar det: en app som distribueras på App Store måste ha sin ikon på 1024 punkter i bildkatalogen.

Alfakanalen är det fjärde lagret i en PNG, bredvid rött, grönt och blått. Den lagrar varje pixels transparens. **En ikon kan se helt fylld ut och ändå ha kvar kanalen**: det är fällan som dyker upp i varenda forumtråd.

Precis som andra ITMS-fel är det här inget avslag från en granskare. Apple har analyserat binären vid leveransen. Beroende på uppladdningsverktyget visas felet som en misslyckad validering, till exempel med kod 409.

## Kontrollera ikonen med sips

På Mac är `sips` förinstallerat. Det räcker med en rad:

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

Du vill se `hasAlpha: no`. Den 15 oktober 2026 körde jag kommandot på ikonerna som anges i app.json för Solys, TradaZen och Nolera: alla svarar `no`, i 1024 x 1024.

Jag gjorde också en testikon: en helt ogenomskinlig blå kvadrat, men sparad med alfakanal. `sips` svarar `yes`. **Ingen pixel är transparent, och ändå finns kanalen där.** Det är därför så många utvecklare skriver ”min ikon har ingen transparens” under det här meddelandet.

I Preview listar inspektören (Tools, Show Inspector) också bildens egenskaper, bland annat alfakanalen.

## Åtgärda: exportera ikonen utan alfakanal

Tre metoder, från den enklaste till den mest exakta.

**1. Preview.** File, Export, formatet PNG, och avmarkera sedan rutan Alpha. Den exporterade filen har ingen alfakanal längre.

**2. sips, utan att installera något.** `sips` tar inte bort alfakanalen från en PNG. Du får gå via en JPEG, som inte har någon:

```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å min testikon med transparenta hörn blev hörnen vita och sista raden svarar `no`. Omvägen via JPEG komprimerar bilden lite, även med högsta kvalitet: granska resultatet noga.

**3. ImageMagick.** Har du det installerat väljer du själv bakgrundsfärgen:

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

Enligt [ImageMagicks dokumentation](https://imagemagick.org/command-line-options/#alpha) lägger `-alpha remove` bilden på bakgrundsfärgen, och `-alpha off` stänger av kanalen.

Alla tre metoderna fyller transparensen med en enfärgad yta. Om din logga svävade på en transparent bakgrund är det snyggast att gå tillbaka till källfilen och rita en riktig bakgrund. Expo kräver det i sin [guide om appikonen](https://docs.expo.dev/develop/user-interface/splash-screen-and-app-icon/): ikonen ska fylla hela kvadraten, utan rundade hörn eller transparenta pixlar. iOS lägger på masken själv.

## Var Expo hämtar din ikon, och vad den gör med den

Expo läser först `ios.icon`, sedan fältet `icon` i roten av din konfiguration. Enligt [Expos konfigurationsreferens](https://docs.expo.dev/versions/latest/config/app/) accepterar `ios.icon` tre former: en PNG, ett objekt med varianterna `light`, `dark` och `tinted`, eller en `.icon`-mapp skapad med Icon Composer.

Tabellen nedan bygger på koden som genererar iOS-ikonen vid prebuild, `@expo/prebuild-config` 57.0.16 (SDK 57), läst den 15 oktober 2026:

| Det du anger                | Det prebuild gör           | Risk för ITMS-90717 |
| --------------------------- | -------------------------- | ------------------- |
| `icon` som PNG              | Plattas ut på vit bakgrund | Låg                 |
| `ios.icon.light`            | Plattas ut på vit bakgrund | Låg                 |
| `ios.icon.tinted`           | Plattas ut på vit bakgrund | Låg                 |
| `ios.icon.dark`             | Transparensen behålls      | Avsett av Apple     |
| `ios.icon` som `.icon`      | Kopieras som den är        | Verklig             |
| Versionshanterad `ios`-mapp | Prebuild körs inte         | Verklig             |

**Med en PNG tar Expo själv bort transparensen och ersätter den med vitt.** En frilagd logga hamnar alltså på en vit kvadrat: inget fel, men ett utseende du kanske inte ville ha. Den mörka varianten behåller sin transparens, och det är meningen: Apple kräver transparent bakgrund för den mörka ikonen så att systemets bakgrund syns.

I Nolera, som anger alla tre varianterna, svarar `sips` `no` för den genererade ljusa och tonade ikonen, och `yes` för den mörka. Att döma av datumet på commiten med varianterna innehåller version 1.0.2, som är publicerad, dem. Jag har inte kontrollerat det i dess IPA.

### Fallet med versionshanterad ios-mapp

Det är den troligaste orsaken med Expo. [Expos sida om continuous native generation](https://docs.expo.dev/workflow/continuous-native-generation/) säger det: om ditt projekt innehåller mapparna `android` och `ios` kör EAS Build inte prebuild. **Då påverkar din app.json inte längre ikonen**: det är PNG-filen i `ios`-mappen som skickas till Apple.

Kontrollera det från projektets rot:

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

Om kommandot svarar `yes` för 1024-ikonen ersätter du den filen med din ogenomskinliga version, under samma namn. Har du inte gjort några native-ändringar för hand kan du också ta bort `ios`-mappen och lägga till den i `.gitignore`: EAS genererar den på nytt vid varje bygge. I Solys, TradaZen och Nolera ignoreras den mappen av git.

## Formatet i iOS 26: Icon Composer

Icon Composer är Apples verktyg för Liquid Glass-ikonerna i iOS 26. Det skapar en enda `.icon`-fil med flera lager. Enligt [Apples guide om Icon Composer](https://developer.apple.com/documentation/xcode/creating-your-app-icon-using-icon-composer) tar Xcode även fram bilderna för äldre iOS-versioner ur den.

Expo stöder det sedan SDK 54. Du anger mappen som text, aldrig i variantobjektet:

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

I det fallet kopierar prebuild mappen utan att röra den, och det är Xcode som skapar den slutliga ikonen. Du behöver alltså Xcode 26 eller senare, den som finns i de senaste EAS-avbildningarna, som jag förklarar i guiden om [ITMS-90725](https://devoria.fr/sv/blog/itms-90725-sdk-version-issue-expo).

Sedan augusti 2025 finns det trådar på Apples utvecklarforum som rapporterar ITMS-90717 med `.icon`-filer. De spår som nämns: ett transparent PNG-lager, ett lager som är större än duken, en grupp med Blur-effekten nära kanten. De lösningar som nämns: stäng av Blur, behåll en helfylld bakgrund eller gå tillbaka till en PNG. Trådarna ger ingen officiell lösning från Apple, och felet rapporterades fortfarande i augusti 2026.

[Apples regler för ikoner](https://developer.apple.com/design/human-interface-guidelines/app-icons) pekar åt samma håll: om du importerar ett bakgrundslager måste det täcka hela ytan och vara ogenomskinligt. Mina appar använder fortfarande en PNG, så jag har inte testat Icon Composer i produktion. **Om en `.icon`-fil stoppar din uppladdning, byt tillbaka `ios.icon` till en PNG**: Expo plattar ut den, och ikonen klarar kontrollen.

## Kontrollera ikonen i det färdiga bygget

I IPA-filen är 1024-ikonen ingen PNG-fil: Xcode kompilerar den till `Assets.car`. Ladda ner IPA-filen från byggets sida på expo.dev och kör sedan:

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

Varje ikon visar ett `Opaque`-fält. Den 15 oktober 2026 kompilerade jag med `actool`, Xcodes verktyg, Solys ikon och min testikon med transparenta hörn. Den första ger `"Opaque" : true`, den andra `"Opaque" : false`. Apple dokumenterar inte fältet: se det som en ledtråd, inte som Apples kontroll.

En fälla att känna till: **testa inte de små PNG-filerna i appens rot med `sips`.** Xcode skriver dem med alfakanal, även när källan är ogenomskinlig. I mitt test med Solys ikon svarar `sips` `yes` för dem.

## Andra ikonfel

| Kod        | Vad Apple rapporterar | Spår med Expo        |
| ---------- | --------------------- | -------------------- |
| ITMS-90717 | Transparent 1024-ikon | Exportera utan alfa  |
| ITMS-90704 | 1024-ikon saknas      | 1024-post saknas     |
| ITMS-90022 | iPhone-ikon saknas    | Ofullständig katalog |
| ITMS-90023 | iPad-ikon saknas      | Ofullständig katalog |

De tre sista meddelandena härstammar mest från 2017 och 2018, när Xcode 9 ändrade reglerna för ikoner.

Med Expo har de blivit sällsynta. Prebuild skriver en enda universell ikon på 1024, och Xcode genererar övriga storlekar. Utan angiven ikon skapar Expo till och med en vit kvadrat, för att undvika att uppladdningen misslyckas. **Om något av de här felen dyker upp, titta på den versionshanterade `ios`-mappen**: filen `Contents.json` i `AppIcon.appiconset` måste innehålla en post med storleken `1024x1024`, och PNG-filen den hänvisar till måste finnas.

## Inför nästa uppladdning

En ikon fixar du på tio minuter, men varje fel kostar ett bygge. De andra automatiska kontrollerna kräver samma noggrannhet, som [ITMS-90683](https://devoria.fr/sv/blog/itms-90683-missing-purpose-string-expo) för behörighetstexterna eller [ITMS-91053](https://devoria.fr/sv/blog/itms-91053-missing-api-declaration-expo) för integritetsmanifestet. När bygget har godkänts installerar du det med [TestFlight](https://devoria.fr/sv/blog/testflight-testa-iphone-app) för att se ikonen på din hemskärm.

Avslag från en granskare kräver mer eftertanke: arbetsgången finns på sidan [app avvisad av Apple](https://devoria.fr/sv/expertise/app-nekad-av-apple), och de vanligaste orsakerna i [varför Apple avvisar en app](https://devoria.fr/sv/blog/apple-avvisade-appen-orsaker).

För att kontrollera ditt projekt före uppladdning samlar [Review Kit](https://devoria.fr/sv/kits/app-review) min checklista och Claude Code-skills som går igenom ditt projekt. Om uppladdningen fastnar och du vill ha ett mänskligt öga, [boka en timme med mig](https://devoria.fr/sv/coaching): vi går igenom ditt projekt via videosamtal, på din skärm. Och om du förbereder din första release, [gör din gratis diagnos](https://devoria.fr/sv/diagnostic): den sätter stegen i rätt ordning och skickar dig min checklista mot avslag från Apple.

## Vanliga frågor

### Varför ser Apple en alfakanal när min ikon inte har någon transparens?

För att en PNG kan behålla en alfakanal även när alla pixlar är ogenomskinliga. Många verktyg lägger till den som standard vid export. Kontrollera med `sips -g hasAlpha` och exportera sedan om ikonen utan kanalen.

### Kan man åtgärda ITMS-90717 med en fjärruppdatering?

Nej. Ikonen kompileras in i binären, i `Assets.car`. En fjärruppdatering ändrar bara appens JavaScript och resurser. Fixa ikonen, bygg om och skicka in igen.

### Får den mörka ikonen vara transparent?

Ja. Apple kräver transparent bakgrund för den mörka varianten, och Expo behåller dess transparens. Min slutsats är att kontrollen gäller huvudikonen, App Store-ikonen: det är den som måste vara ogenomskinlig.

### Ska man runda hörnen på iOS-ikonen?

Nej. Leverera en helfylld kvadrat: iOS lägger på masken själv. Rundade hörn lämnar transparenta pixlar i hörnen, precis det som den här kontrollen avvisar.

### Stöder Expo Icon Composer-ikonerna i iOS 26?

Ja, sedan SDK 54: ange sökvägen till `.icon`-mappen i `ios.icon`, som text. Prebuild kopierar den som den är och Xcode 26 kompilerar den. Får du ITMS-90717 med det formatet, kontrollera transparenta lager och Blur-effekten, eller gå tillfälligt tillbaka till en PNG.


## Ditt projekt

[Review Kit](https://devoria.fr/sv/kits/app-review): Min checklista för App Store-granskningen, mina avslag från Apple och hur jag fixade dem, en för Google Play och tre Claude Code-skills. 549 kr.

[iOS & Android Kit](https://devoria.fr/sv/kits/ios): Bygg din app för iPhone och Android med Claude Code: startkoden från mina appar, hela vägen till butikerna och alla kit. 1 099 kr.

[Diagnos: det som skiljer dig från din iPhone-app](https://devoria.fr/sv/diagnostic): 7 frågor, 60 sekunder: du får veta vad som egentligen hindrar dig från att publicera din iPhone-app, din väg i 4 steg och kitet som passar dig.
