# ITMS-90717: „Invalid large app icon“ mit Expo beheben

> ITMS-90717: Dein 1024er-Icon hat Transparenz oder einen Alphakanal. Exportiere es deckend, prüfe es mit sips und mach einen neuen Build.

Originalseite: [ITMS-90717: „Invalid large app icon“ mit Expo beheben](https://devoria.fr/de/blog/itms-90717-invalid-large-app-icon-expo)
Autor: [Mehdi Azizi](https://devoria.fr/de/mehdi-azizi)
Veröffentlicht: 2026-11-04
Letzte inhaltliche Überarbeitung: 2026-11-04


ITMS-90717 ist eine automatische Prüfung, die Apple auf deinen Build anwendet. Sie meldet, dass das große App-Icon, also das 1024 x 1024 Pixel große Icon, das der App Store anzeigt, Transparenz oder einen Alphakanal enthält. **Die Lösung: ein quadratisches, deckendes Icon, ohne Alphakanal exportiert, und danach ein neuer Build.**

Mit Expo ist deine PNG-Datei selten schuld: Der Prebuild legt sie bereits auf einen weißen Hintergrund. Ich habe diesen Code im SDK 57 gelesen und die Icons von Solys, TradaZen und Nolera geprüft. Der Fehler kommt dann meistens von einem versionierten `ios`-Ordner oder einer Icon-Composer-Datei. So findest du heraus, was es bei dir ist, und behebst es.

## Was bedeutet der Fehler ITMS-90717?

Die Meldung heißt „ITMS-90717: Invalid large app icon“. Sie erklärt, dass das große Icon im Asset-Katalog deiner App „can't be transparent or contain an alpha channel“: Es darf weder transparent sein noch einen Alphakanal enthalten. Ältere Meldungen sprachen von „Invalid App Store Icon“. Es ist dieselbe Regel.

Dieses große Icon ist das des App Store. Die [Xcode-Dokumentation zu Icons](https://developer.apple.com/documentation/xcode/configuring-your-app-icon) erklärt es: Eine App, die über den App Store verteilt wird, muss ihr 1024-Punkt-Icon im Asset-Katalog mitliefern.

Der Alphakanal ist die vierte Ebene eines PNG, neben Rot, Grün und Blau. Er speichert die Transparenz jedes Pixels. **Ein Icon kann komplett gefüllt aussehen und diesen Kanal trotzdem behalten**: Das ist die Falle, die in jedem Forenthread wieder auftaucht.

Wie die anderen ITMS-Fehler ist das keine Ablehnung durch einen Reviewer. Apple hat das Binary bei der Auslieferung analysiert. Je nach Upload-Tool erscheint der Fehler als fehlgeschlagene Validierung, zum Beispiel mit dem Code 409.

## Dein Icon mit sips prüfen

Auf dem Mac ist `sips` vorinstalliert. Eine Zeile reicht:

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

Du willst `hasAlpha: no` lesen. Am 15. Oktober 2026 habe ich diesen Befehl auf die Icons laufen lassen, die in den app.json von Solys, TradaZen und Nolera angegeben sind: Alle antworten mit `no`, in 1024 x 1024.

Ich habe auch ein Test-Icon gebaut: ein komplett deckendes blaues Quadrat, aber mit Alphakanal gespeichert. `sips` antwortet mit `yes`. **Kein einziges Pixel ist transparent, und trotzdem ist der Kanal da.** Deshalb schreiben so viele Entwickler unter diese Meldung „mein Icon hat keinerlei Transparenz“.

In Preview listet auch der Inspector (Tools, Show Inspector) die Eigenschaften des Bildes auf, darunter den Alphakanal.

## Beheben: das Icon ohne Alphakanal exportieren

Drei Methoden, von der einfachsten bis zur genauesten.

**1. Preview.** File, Export, Format PNG, dann das Häkchen bei Alpha entfernen. Die exportierte Datei hat keinen Alphakanal mehr.

**2. sips, ohne etwas zu installieren.** `sips` entfernt den Alphakanal eines PNG nicht. Du musst den Umweg über ein JPEG gehen, das keinen hat:

```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
```

Bei meinem Test-Icon mit transparenten Ecken wurden die Ecken weiß, und die letzte Zeile antwortet mit `no`. Der Umweg über JPEG komprimiert das Bild etwas, selbst bei maximaler Qualität: Schau dir das Ergebnis genau an.

**3. ImageMagick.** Wenn du es installiert hast, wählst du die Hintergrundfarbe selbst:

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

Laut der [ImageMagick-Dokumentation](https://imagemagick.org/command-line-options/#alpha) legt `-alpha remove` das Bild auf die Hintergrundfarbe, und `-alpha off` deaktiviert den Kanal.

Diese drei Methoden füllen die Transparenz mit einer einfarbigen Fläche. Wenn dein Logo auf transparentem Hintergrund schwebte, ist es am saubersten, die Quelldatei zu nehmen und dort einen echten Hintergrund zu zeichnen. Expo verlangt das in seinem [Leitfaden zum App-Icon](https://docs.expo.dev/develop/user-interface/splash-screen-and-app-icon/): Das Icon muss das ganze Quadrat füllen, ohne abgerundete Ecken und ohne transparente Pixel. iOS wendet die Maske selbst an.

## Wo Expo dein Icon herholt und was es damit macht

Expo liest zuerst `ios.icon`, dann das Feld `icon` auf der obersten Ebene deiner Konfiguration. Laut der [Referenz der Expo-Konfiguration](https://docs.expo.dev/versions/latest/config/app/) akzeptiert `ios.icon` drei Formen: ein PNG, ein Objekt mit den Varianten `light`, `dark` und `tinted` oder einen mit Icon Composer erstellten `.icon`-Ordner.

Die folgende Tabelle stammt aus dem Code, der das iOS-Icon beim Prebuild erzeugt, `@expo/prebuild-config` 57.0.16 (SDK 57), gelesen am 15. Oktober 2026:

| Was du angibst             | Was der Prebuild macht        | Risiko ITMS-90717 |
| -------------------------- | ----------------------------- | ----------------- |
| `icon` als PNG             | Auf weißen Hintergrund gelegt | Gering            |
| `ios.icon.light`           | Auf weißen Hintergrund gelegt | Gering            |
| `ios.icon.tinted`          | Auf weißen Hintergrund gelegt | Gering            |
| `ios.icon.dark`            | Transparenz bleibt erhalten   | Von Apple gewollt |
| `ios.icon` als `.icon`     | Unverändert kopiert           | Real              |
| Versionierter `ios`-Ordner | Prebuild läuft nicht erneut   | Real              |

**Bei einem PNG entfernt Expo die Transparenz selbst und ersetzt sie durch Weiß.** Ein freigestelltes Logo landet also auf einem weißen Quadrat: kein Fehler, aber vielleicht nicht der Look, den du wolltest. Die dunkle Variante behält ihre Transparenz, und das ist gewollt: Apple verlangt für das dunkle Icon einen transparenten Hintergrund, damit der vom System gelieferte Hintergrund durchscheint.

Bei Nolera, das alle drei Varianten angibt, antwortet `sips` mit `no` für das erzeugte helle und getönte Icon und mit `yes` für das dunkle. Laut dem Datum des Commits dieser Varianten enthält die veröffentlichte Version 1.0.2 sie. In ihrer IPA habe ich das nicht geprüft.

### Der Fall des versionierten ios-Ordners

Das ist mit Expo die wahrscheinlichste Ursache. Die [Expo-Seite zu Continuous Native Generation](https://docs.expo.dev/workflow/continuous-native-generation/) sagt es: Wenn dein Projekt die Ordner `android` und `ios` enthält, startet EAS Build den Prebuild nicht. **Deine app.json hat dann keinen Einfluss mehr auf das Icon**: Es ist das PNG aus dem `ios`-Ordner, das an Apple geht.

Prüf das vom Projektstamm aus:

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

Wenn der Befehl für das 1024er-Icon mit `yes` antwortet, ersetze diese Datei durch deine deckende Version, unter demselben Namen. Wenn du keine nativen Änderungen von Hand gemacht hast, kannst du den `ios`-Ordner auch löschen und in die `.gitignore` aufnehmen: EAS erzeugt ihn bei jedem Build neu. Bei Solys, TradaZen und Nolera wird dieser Ordner von git ignoriert.

## Das Format von iOS 26: Icon Composer

Icon Composer ist Apples Tool für die Liquid-Glass-Icons von iOS 26. Es erzeugt eine einzige `.icon`-Datei mit mehreren Ebenen. Laut [Apples Leitfaden zu Icon Composer](https://developer.apple.com/documentation/xcode/creating-your-app-icon-using-icon-composer) erzeugt Xcode daraus auch die Bilder für ältere iOS-Versionen.

Expo unterstützt das seit SDK 54. Du gibst den Ordner als Text an, niemals im Varianten-Objekt:

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

In diesem Fall kopiert der Prebuild den Ordner, ohne ihn anzufassen, und Xcode erzeugt das endgültige Icon. Du brauchst also Xcode 26 oder neuer, wie in den aktuellen EAS-Images, wie ich im Leitfaden zu [ITMS-90725](https://devoria.fr/de/blog/itms-90725-sdk-version-issue-expo-beheben) erkläre.

Seit August 2025 melden Threads im Apple-Entwicklerforum ITMS-90717 mit `.icon`-Dateien. Die genannten Spuren: eine transparente PNG-Ebene, eine Ebene, die größer ist als die Leinwand, eine Gruppe mit Blur-Effekt nahe am Rand. Die genannten Workarounds: Blur abschalten, einen vollen Hintergrund behalten oder zu einem PNG zurückkehren. Diese Threads liefern keine offizielle Lösung von Apple, und der Fehler wurde noch im August 2026 gemeldet.

[Apples Regeln für Icons](https://developer.apple.com/design/human-interface-guidelines/app-icons) gehen in dieselbe Richtung: Wenn du eine Hintergrundebene importierst, muss sie die ganze Fläche abdecken und deckend sein. Meine Apps nutzen noch ein PNG, ich habe Icon Composer also nicht in Produktion getestet. **Wenn eine `.icon`-Datei deinen Upload blockiert, stell `ios.icon` wieder auf ein PNG um**: Expo legt es auf einen Hintergrund, und dein Icon besteht diese Prüfung.

## Das Icon im fertigen Build prüfen

In der IPA ist das 1024er-Icon keine PNG-Datei: Xcode kompiliert es in `Assets.car`. Lade die IPA von der Build-Seite auf expo.dev herunter und führe dann aus:

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

Jedes Icon zeigt ein Feld `Opaque`. Am 15. Oktober 2026 habe ich mit `actool`, dem Xcode-Tool, das Icon von Solys und mein Test-Icon mit transparenten Ecken kompiliert. Das erste kommt mit `"Opaque" : true` heraus, das zweite mit `"Opaque" : false`. Apple dokumentiert dieses Feld nicht: Sieh es als Hinweis, nicht als Apples eigentliche Prüfung.

Eine Falle, die du kennen solltest: **Teste nicht die kleinen PNGs im Stammverzeichnis der App mit `sips`.** Xcode schreibt sie mit Alphakanal, selbst wenn die Quelle deckend ist. Bei meinem Test mit dem Solys-Icon antwortet `sips` für sie mit `yes`.

## Die anderen Icon-Fehler

| Code       | Was Apple meldet        | Ansatz mit Expo        |
| ---------- | ----------------------- | ---------------------- |
| ITMS-90717 | 1024er-Icon transparent | Ohne Alpha exportieren |
| ITMS-90704 | 1024er-Icon fehlt       | 1024er-Eintrag fehlt   |
| ITMS-90022 | iPhone-Icon fehlt       | Katalog unvollständig  |
| ITMS-90023 | iPad-Icon fehlt         | Katalog unvollständig  |

Die letzten drei Meldungen stammen vor allem aus 2017 und 2018, als Xcode 9 die Regeln für Icons geändert hat.

Mit Expo sind sie selten geworden. Der Prebuild schreibt ein einziges universelles 1024er-Icon, und Xcode erzeugt die anderen Größen. Ohne angegebenes Icon erzeugt Expo sogar ein weißes Quadrat, um einen Fehler beim Upload zu vermeiden. **Wenn einer dieser Fehler auftaucht, schau in den versionierten `ios`-Ordner**: Die Datei `Contents.json` in `AppIcon.appiconset` muss einen Eintrag der Größe `1024x1024` enthalten, und das dort genannte PNG muss existieren.

## Vor deinem nächsten Upload

Ein Icon ist in zehn Minuten korrigiert, aber jeder Fehler kostet einen Build. Die anderen automatischen Prüfungen verlangen dieselbe Sorgfalt, etwa [ITMS-90683](https://devoria.fr/de/blog/itms-90683-missing-purpose-string-expo) für die Berechtigungstexte oder [ITMS-91053](https://devoria.fr/de/blog/itms-91053-missing-api-declaration-expo-beheben) für das Privacy Manifest. Sobald der Build akzeptiert ist, installier ihn mit [TestFlight](https://devoria.fr/de/blog/testflight-iphone-app-testen), um dein Icon auf deinem Home-Bildschirm zu sehen.

Ablehnungen durch einen Reviewer brauchen mehr Abstand: Das Vorgehen steht auf der Seite [App von Apple abgelehnt](https://devoria.fr/de/expertise/app-von-apple-abgelehnt), und die häufigsten Gründe findest du unter [warum Apple eine App ablehnt](https://devoria.fr/de/blog/app-store-ablehnung-apple-gruende).

Um dein Projekt vor dem Upload zu prüfen, bündelt das [Review Kit](https://devoria.fr/de/kits/app-review) meine Checkliste und Claude-Code-Skills, die dein Projekt gegenlesen. Wenn dein Upload hängt und du einen menschlichen Blick willst, [buch eine Stunde mit mir](https://devoria.fr/de/coaching): Wir gehen dein Projekt per Video durch, auf deinem Bildschirm. Und wenn du deinen ersten Release vorbereitest, [mach deine kostenlose Diagnose](https://devoria.fr/de/diagnostic): Sie bringt die Schritte in die richtige Reihenfolge und schickt dir meine Checkliste gegen Apple-Ablehnungen.

## Häufige Fragen

### Warum sieht Apple einen Alphakanal, obwohl mein Icon keinerlei Transparenz hat?

Weil ein PNG einen Alphakanal behalten kann, auch wenn alle Pixel deckend sind. Viele Tools fügen ihn beim Export standardmäßig hinzu. Prüf das mit `sips -g hasAlpha` und exportiere das Icon dann ohne diesen Kanal neu.

### Kann man ITMS-90717 mit einem Remote-Update beheben?

Nein. Das Icon ist ins Binary kompiliert, in `Assets.car`. Ein Remote-Update ändert nur das JavaScript und die Ressourcen der App. Korrigier das Icon, mach einen neuen Build und lade ihn erneut hoch.

### Darf das dunkle Icon transparent sein?

Ja. Apple verlangt für die dunkle Variante einen transparenten Hintergrund, und Expo behält ihre Transparenz. Daraus schließe ich, dass die Prüfung auf das Haupt-Icon zielt, das des App Store: Das muss deckend sein.

### Muss ich die Ecken des iOS-Icons abrunden?

Nein. Liefere ein volles Quadrat: iOS wendet die Maske selbst an. Abgerundete Ecken hinterlassen transparente Pixel in den Ecken, genau das, was diese Prüfung ablehnt.

### Unterstützt Expo die Icon-Composer-Icons von iOS 26?

Ja, seit SDK 54: Gib den Pfad zum `.icon`-Ordner in `ios.icon` als Text an. Der Prebuild kopiert ihn unverändert, und Xcode 26 kompiliert ihn. Bei ITMS-90717 mit diesem Format prüfst du die transparenten Ebenen und den Blur-Effekt oder kehrst vorübergehend zu einem PNG zurück.


## Dein Projekt

[Review Kit](https://devoria.fr/de/kits/app-review): Meine Checkliste für die App Store Review, meine von Apple abgelehnten und korrigierten Fälle, die für Google Play und drei Claude Code Skills. 49 €.

[iOS & Android Kit](https://devoria.fr/de/kits/ios): Bau deine iPhone- und Android-App mit Claude Code: der Startcode meiner Apps, der Weg bis in die Stores und alle Kits. 99 €.

[Diagnose: Was dich von deiner iPhone-App trennt](https://devoria.fr/de/diagnostic): 7 Fragen, 60 Sekunden: Du erfährst, was dich wirklich davon abhält, deine iPhone-App zu veröffentlichen, bekommst deinen Weg in 4 Schritten und das passende Kit.
