ITMS-90717: ret »Invalid large app icon« i Expo
Af Mehdi Azizi
Udgivet , 8 min.
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.
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 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:
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:
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:
magick icon.png -background white -alpha remove -alpha off icon-opaque.png
Ifølge ImageMagicks dokumentation 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: 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 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 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:
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 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:
{
"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.
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 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:
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 for tilladelsestekster eller ITMS-91053 for privacy manifestet. Når buildet er godkendt, så installér det med TestFlight 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, og de hyppigste årsager står i hvorfor Apple afviser en app.
For at tjekke dit projekt før upload samler Review Kit 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: vi gennemgår dit projekt over video, på din skærm. Og hvis du forbereder din første udgivelse, så tag din gratis diagnose: 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.

