ITMS-90717: fiks «Invalid large app icon» med Expo
Av Mehdi Azizi
Publisert , 8 min
ITMS-90717: 1024 x 1024-ikonet i builden din har gjennomsiktighet eller en alfakanal. Eksporter det ugjennomsiktig, sjekk med sips og bygg på nytt.
ITMS-90717 er en automatisk kontroll Apple kjører på builden din. Den sier at det store app-ikonet, det på 1024 x 1024 piksler som App Store viser, inneholder gjennomsiktighet eller en alfakanal. Løsningen: et kvadratisk, ugjennomsiktig ikon, eksportert uten alfakanal, og så en ny build.
Med Expo er PNG-filen din sjelden synderen: prebuild legger den allerede på en hvit bakgrunn. Jeg har lest denne koden i SDK 57 og sjekket ikonene til Solys, TradaZen og Nolera. Feilen kommer da som oftest fra en versjonert ios-mappe eller en Icon Composer-fil. Her ser du hvordan du finner ut hvilken, og fikser det.
Hva betyr feilen ITMS-90717?
Meldingen har tittelen «ITMS-90717: Invalid large app icon». Den presiserer at det store ikonet i appens bildekatalog «can't be transparent or contain an alpha channel»: det kan verken være gjennomsiktig eller inneholde en alfakanal. Eldre meldinger snakket om «Invalid App Store Icon». Det er samme regel.
Dette store ikonet er det som vises i App Store. Xcode-dokumentasjonen om ikoner forklarer det: en app som distribueres i App Store, må ha sitt 1024-punkters ikon i bildekatalogen.
Alfakanalen er det fjerde laget i en PNG, ved siden av rødt, grønt og blått. Den lagrer gjennomsiktigheten til hver piksel. Et ikon kan se helt fylt ut og likevel ha denne kanalen: det er fellen som går igjen i alle forumtråder.
Som de andre ITMS-feilene er dette ikke et avslag fra en reviewer. Apple har analysert binærfilen ved levering. Avhengig av opplastingsverktøyet dukker feilen opp som en valideringsfeil, for eksempel med kode 409.
Sjekk ikonet ditt med sips
På Mac er sips installert fra før. Én linje holder:
sips -g hasAlpha assets/icon.png
Du vil se hasAlpha: no. Den 15. oktober 2026 kjørte jeg denne kommandoen på ikonene som er oppgitt i app.json for Solys, TradaZen og Nolera: alle svarer no, i 1024 x 1024.
Jeg lagde også et testikon: et helt ugjennomsiktig blått kvadrat, men lagret med en alfakanal. sips svarer yes. Ingen piksler er gjennomsiktige, og likevel er kanalen der. Det er derfor så mange utviklere skriver «ikonet mitt har ingen gjennomsiktighet» under denne meldingen.
I Preview viser også inspektøren (Tools, Show Inspector) bildets egenskaper, blant annet alfakanalen.
Fiks det: eksporter ikonet uten alfakanal
Tre metoder, fra den enkleste til den mest presise.
1. Preview. File, Export, PNG-format, og fjern haken for Alpha. Den eksporterte filen har ikke lenger alfakanal.
2. sips, uten å installere noe. sips fjerner ikke alfakanalen fra en PNG. Du må gå via en JPEG, som ikke har noen:
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å testikonet mitt med gjennomsiktige hjørner ble hjørnene hvite, og siste linje svarer no. Omveien via JPEG komprimerer bildet litt, selv med høyeste kvalitet: se nøye på resultatet.
3. ImageMagick. Har du det installert, velger du bakgrunnsfargen selv:
magick icon.png -background white -alpha remove -alpha off icon-opaque.png
Ifølge ImageMagick-dokumentasjonen legger -alpha remove bildet på bakgrunnsfargen, og -alpha off slår av kanalen.
Alle tre metodene fyller gjennomsiktigheten med en ensfarget bakgrunn. Hvis logoen din lå på en gjennomsiktig bakgrunn, er det ryddigst å gå tilbake til kildefilen og tegne en ekte bakgrunn der. Expo krever det i sin guide om app-ikonet: ikonet skal fylle hele kvadratet, uten avrundede hjørner eller gjennomsiktige piksler. iOS legger på masken selv.
Hvor Expo henter ikonet ditt, og hva det gjør med det
Expo leser først ios.icon, deretter feltet icon på rotnivå i konfigurasjonen din. Ifølge Expos konfigurasjonsreferanse godtar ios.icon tre former: en PNG, et objekt med variantene light, dark og tinted, eller en .icon-mappe laget med Icon Composer.
Tabellen nedenfor er basert på koden som genererer iOS-ikonet ved prebuild, @expo/prebuild-config 57.0.16 (SDK 57), lest 15. oktober 2026:
| Det du oppgir | Det prebuild gjør | Risiko for ITMS-90717 |
|---|---|---|
icon som PNG | Flatet ut på hvit bakgrunn | Lav |
ios.icon.light | Flatet ut på hvit bakgrunn | Lav |
ios.icon.tinted | Flatet ut på hvit bakgrunn | Lav |
ios.icon.dark | Gjennomsiktighet beholdt | Ønsket av Apple |
ios.icon som .icon | Kopiert uendret | Reell |
Versjonert ios-mappe | Prebuild kjøres ikke | Reell |
Med en PNG fjerner Expo gjennomsiktigheten selv og erstatter den med hvitt. En frilagt logo havner dermed på et hvitt kvadrat: ingen feil, men kanskje ikke det utseendet du ville ha. Den mørke varianten beholder gjennomsiktigheten, og det er med vilje: Apple krever gjennomsiktig bakgrunn for det mørke ikonet, slik at bakgrunnen systemet leverer, vises.
På Nolera, som oppgir alle tre variantene, svarer sips no for det genererte lyse og fargetonede ikonet, og yes for det mørke. Ut fra datoen på commiten med disse variantene har versjon 1.0.2, som er publisert, dem med. Jeg har ikke sjekket det i IPA-en.
Når ios-mappen er versjonert
Dette er den mest sannsynlige årsaken med Expo. Expos side om continuous native generation sier det: hvis prosjektet ditt inneholder mappene android og ios, kjører ikke EAS Build prebuild. Da rører ikke app.json ikonet lenger: det er PNG-en i ios-mappen som sendes til Apple.
Sjekk det fra prosjektets rotmappe:
sips -g hasAlpha ios/*/Images.xcassets/AppIcon.appiconset/*.png
Svarer kommandoen yes for 1024-ikonet, bytter du ut filen med den ugjennomsiktige versjonen din, med samme navn. Har du ikke gjort noen native endringer for hånd, kan du også slette ios-mappen og legge den til i .gitignore: EAS genererer den på nytt ved hver build. I Solys, TradaZen og Nolera ignoreres denne mappen av git.
iOS 26-formatet: Icon Composer
Icon Composer er Apples verktøy for Liquid Glass-ikonene i iOS 26. Det lager én enkelt .icon-fil med flere lag. Ifølge Apples guide om Icon Composer henter Xcode også bildene for eldre iOS-versjoner fra den.
Expo støtter dette siden SDK 54. Du oppgir mappen som tekst, aldri i variantobjektet:
{
"expo": {
"ios": {
"icon": "./assets/app.icon"
}
}
}
I så fall kopierer prebuild mappen uten å røre den, og det er Xcode som lager det endelige ikonet. Du trenger derfor Xcode 26 eller nyere, som er det de nyere EAS-imagene bruker, slik jeg forklarer i guiden om ITMS-90725.
Siden august 2025 har tråder i Apples utviklerforum rapportert ITMS-90717 med .icon-filer. Sporene som nevnes: et gjennomsiktig PNG-lag, et lag som er større enn lerretet, en gruppe med Blur-effekt nær kanten. Omveiene som nevnes: slå av Blur, behold en helfylt bakgrunn, eller gå tilbake til en PNG. Trådene gir ingen offisiell løsning fra Apple, og feilen ble fortsatt rapportert i august 2026.
Apples retningslinjer for ikoner peker i samme retning: hvis du importerer et bakgrunnslag, må det dekke hele flaten og være ugjennomsiktig. Appene mine bruker fortsatt PNG, så jeg har ikke testet Icon Composer i produksjon. Hvis en .icon-fil stopper opplastingen din, bytt ios.icon tilbake til en PNG: Expo flater den ut, og ikonet ditt passerer denne kontrollen.
Sjekk ikonet i den ferdige builden
I IPA-en er ikke 1024-ikonet en PNG-fil: Xcode kompilerer det inn i Assets.car. Last ned IPA-en fra build-siden på expo.dev, og kjør:
unzip -q MyApp.ipa -d ipa
xcrun assetutil --info ipa/Payload/*.app/Assets.car | grep -B3 '"RenditionName" : "App-Icon'
Hvert ikon viser et Opaque-felt. Den 15. oktober 2026 kompilerte jeg Solys-ikonet og testikonet mitt med gjennomsiktige hjørner med actool, Xcode-verktøyet. Det første gir "Opaque" : true, det andre "Opaque" : false. Apple dokumenterer ikke dette feltet: se på det som en indikasjon, ikke som Apples egen kontroll.
En felle du bør kjenne til: ikke test de små PNG-ene som ligger i roten av appen med sips. Xcode skriver dem med alfakanal, selv når kilden er ugjennomsiktig. I testen min med Solys-ikonet svarer sips yes for dem.
De andre ikonfeilene
| Kode | Det Apple melder | Spor med Expo |
|---|---|---|
| ITMS-90717 | Gjennomsiktig 1024-ikon | Eksporter uten alfa |
| ITMS-90704 | 1024-ikon mangler | 1024-oppføring mangler |
| ITMS-90022 | iPhone-ikon mangler | Ufullstendig katalog |
| ITMS-90023 | iPad-ikon mangler | Ufullstendig katalog |
De tre siste meldingene stammer mest fra 2017 og 2018, da Xcode 9 endret reglene for ikoner.
Med Expo har de blitt sjeldne. Prebuild skriver ett enkelt universelt 1024-ikon, og Xcode genererer de andre størrelsene. Uten oppgitt ikon lager Expo til og med et hvitt kvadrat, for å unngå at opplastingen feiler. Får du en av disse feilene, se på den versjonerte ios-mappen: filen Contents.json i AppIcon.appiconset må inneholde en oppføring med størrelsen 1024x1024, og PNG-en den viser til, må finnes.
Før neste opplasting
Et ikon fikses på ti minutter, men hver feil koster en build. De andre automatiske kontrollene krever samme nøyaktighet, som ITMS-90683 for tillatelsestekstene eller ITMS-91053 for personvernmanifestet. Når builden er godkjent, installer den med TestFlight for å se ikonet på hjemskjermen din.
Avslag fra en reviewer krever mer ettertanke: fremgangsmåten står på siden app avvist av Apple, og de vanligste årsakene finner du i hvorfor Apple avviser en app.
For å sjekke prosjektet ditt før opplasting samler Review Kit sjekklisten min og Claude Code-skills som går gjennom prosjektet ditt. Hvis opplastingen står fast og du vil ha et menneskelig blikk, book en time med meg: vi går gjennom prosjektet ditt på video, på din skjerm. Og forbereder du din første lansering, ta den gratis diagnosen: den setter stegene i riktig rekkefølge og sender deg sjekklisten min mot avslag fra Apple.
Ofte stilte spørsmål
Hvorfor ser Apple en alfakanal når ikonet mitt ikke har noen gjennomsiktighet?
Fordi en PNG kan beholde en alfakanal selv når alle pikslene er ugjennomsiktige. Mange verktøy legger den til som standard ved eksport. Sjekk med sips -g hasAlpha, og eksporter ikonet på nytt uten denne kanalen.
Kan jeg fikse ITMS-90717 med en ekstern oppdatering?
Nei. Ikonet er kompilert inn i binærfilen, i Assets.car. En ekstern oppdatering endrer bare JavaScript-koden og appens ressurser. Fiks ikonet, lag en ny build og send den inn på nytt.
Kan det mørke ikonet være gjennomsiktig?
Ja. Apple krever gjennomsiktig bakgrunn for den mørke varianten, og Expo beholder gjennomsiktigheten. Jeg slutter av dette at kontrollen gjelder hovedikonet, det i App Store: det er det som må være ugjennomsiktig.
Må jeg runde av hjørnene på iOS-ikonet?
Nei. Lever et helfylt kvadrat: iOS legger på masken selv. Avrundede hjørner etterlater gjennomsiktige piksler i hjørnene, akkurat det denne kontrollen avviser.
Støtter Expo Icon Composer-ikonene i iOS 26?
Ja, siden SDK 54: oppgi stien til .icon-mappen i ios.icon, som tekst. Prebuild kopierer den uendret, og Xcode 26 kompilerer den. Får du ITMS-90717 med dette formatet, sjekk gjennomsiktige lag og Blur-effekten, eller gå midlertidig tilbake til en PNG.

