# ITMS-90717: popravak „Invalid large app icon” u Expou

> ITMS-90717: ikona 1024 x 1024 u tvom buildu ima prozirnost ili alfa kanal. Izvezi je neprozirnu, provjeri sa sips i napravi novi build.

Izvorna stranica: [ITMS-90717: popravak „Invalid large app icon” u Expou](https://devoria.fr/hr/blog/itms-90717-invalid-large-app-icon-expo)
Autor: [Mehdi Azizi](https://devoria.fr/hr/mehdi-azizi)
Objavljeno: 2026-11-04
Zadnja revizija sadržaja: 2026-11-04


ITMS-90717 je Appleova automatska provjera tvog builda. Javlja da velika ikona aplikacije, ona od 1024 x 1024 piksela koju prikazuje App Store, sadrži prozirnost ili alfa kanal. **Rješenje: kvadratna, neprozirna ikona izvezena bez alfa kanala, a zatim novi build.**

S Expoom tvoja PNG datoteka rijetko je krivac: prebuild je već postavlja na bijelu pozadinu. Pročitao sam taj kod u SDK-u 57 i provjerio ikone aplikacija Solys, TradaZen i Nolera. Greška tada najčešće dolazi iz `ios` mape koja je u gitu ili iz datoteke Icon Composera. Evo kako otkriti što je od toga i kako to popraviti.

## Što znači greška ITMS-90717?

Poruka nosi naslov „ITMS-90717: Invalid large app icon”. Navodi da velika ikona u katalogu slika tvoje aplikacije „can't be transparent or contain an alpha channel”: ne smije biti prozirna niti sadržavati alfa kanal. Starije poruke govorile su o „Invalid App Store Icon”. Pravilo je isto.

Ta velika ikona je ikona za App Store. [Xcodeova dokumentacija o ikonama](https://developer.apple.com/documentation/xcode/configuring-your-app-icon) to objašnjava: aplikacija koja se distribuira preko App Storea mora u svom katalogu slika imati ikonu od 1024 točke.

Alfa kanal je četvrti sloj PNG-a, uz crveni, zeleni i plavi. U njemu je zapisana prozirnost svakog piksela. **Ikona može izgledati potpuno puna, a i dalje imati taj kanal**: to je zamka koja se ponavlja u svakoj temi na forumima.

Kao i ostale ITMS greške, ovo nije odbijanje od strane reviewera. Apple je analizirao binarnu datoteku pri isporuci. Ovisno o alatu za slanje, greška se pojavljuje kao neuspjela validacija, na primjer s kodom 409.

## Provjeri ikonu sa sips

Na Macu je `sips` instaliran od početka. Dovoljan je jedan redak:

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

Želiš vidjeti `hasAlpha: no`. Dana 15. listopada 2026. pokrenuo sam ovu naredbu na ikonama navedenima u app.json datotekama Solysa, TradaZena i Nolere: sve odgovaraju `no`, u 1024 x 1024.

Napravio sam i probnu ikonu: plavi kvadrat, potpuno neproziran, ali spremljen s alfa kanalom. `sips` odgovara `yes`. **Nijedan piksel nije proziran, a kanal je ipak tu.** Zato toliko developera ispod ove poruke piše „moja ikona nema nikakvu prozirnost”.

U aplikaciji Preview inspektor (Tools, Show Inspector) također prikazuje svojstva slike, uključujući alfa kanal.

## Popravak: izvezi ikonu bez alfa kanala

Tri metode, od najjednostavnije do najpreciznije.

**1. Preview.** File, Export, format PNG, pa odznači kvačicu Alpha. Izvezena datoteka više nema alfa kanal.

**2. sips, bez instaliranja ičega.** `sips` ne uklanja alfa kanal iz PNG-a. Moraš proći kroz JPEG, koji ga nema:

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

Na mojoj probnoj ikoni s prozirnim kutovima kutovi su postali bijeli, a zadnji redak odgovara `no`. Prolaz kroz JPEG malo komprimira sliku, čak i na maksimalnoj kvaliteti: dobro pogledaj rezultat.

**3. ImageMagick.** Ako ga imaš instaliranog, sam biraš boju pozadine:

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

Prema [dokumentaciji ImageMagicka](https://imagemagick.org/command-line-options/#alpha), `-alpha remove` postavlja sliku na boju pozadine, a `-alpha off` isključuje kanal.

Sve tri metode ispunjavaju prozirnost jednom bojom. Ako ti je logo lebdio na prozirnoj pozadini, najčišće je vratiti se na izvornu datoteku i nacrtati pravu pozadinu. Expo to traži u svom [vodiču za ikonu aplikacije](https://docs.expo.dev/develop/user-interface/splash-screen-and-app-icon/): ikona mora ispuniti cijeli kvadrat, bez zaobljenih kutova i prozirnih piksela. iOS sam primjenjuje masku.

## Odakle Expo uzima tvoju ikonu i što s njom radi

Expo prvo čita `ios.icon`, a zatim polje `icon` u korijenu konfiguracije. Prema [referenci Expoove konfiguracije](https://docs.expo.dev/versions/latest/config/app/), `ios.icon` prihvaća tri oblika: PNG, objekt s varijantama `light`, `dark` i `tinted` ili `.icon` mapu napravljenu u Icon Composeru.

Sljedeća tablica dolazi iz koda koji generira iOS ikonu pri prebuildu, `@expo/prebuild-config` 57.0.16 (SDK 57), pročitanog 15. listopada 2026.:

| Što navedeš            | Što radi prebuild            | Rizik od ITMS-90717 |
| ---------------------- | ---------------------------- | ------------------- |
| `icon` kao PNG         | Spljošten na bijelu pozadinu | Nizak               |
| `ios.icon.light`       | Spljošten na bijelu pozadinu | Nizak               |
| `ios.icon.tinted`      | Spljošten na bijelu pozadinu | Nizak               |
| `ios.icon.dark`        | Prozirnost se zadržava       | Apple to traži      |
| `ios.icon` kao `.icon` | Kopiran bez izmjena          | Stvaran             |
| `ios` mapa u gitu      | Prebuild se ne pokreće       | Stvaran             |

**S PNG-om Expo sam uklanja prozirnost i zamjenjuje je bijelom bojom.** Izrezani logo tako završi na bijelom kvadratu: nema greške, ali izgled možda nije onakav kakav si htio. Tamna varijanta zadržava prozirnost, i to namjerno: Apple traži prozirnu pozadinu za tamnu ikonu, kako bi se vidjela pozadina koju daje sustav.

Na Noleri, koja navodi sve tri varijante, `sips` odgovara `no` za generiranu svijetlu i obojenu ikonu, a `yes` za tamnu. Sudeći po datumu commita tih varijanti, verzija 1.0.2, koja je objavljena, ih sadrži. To nisam provjerio u njenom IPA-u.

### Slučaj kad je ios mapa u gitu

To je najvjerojatniji uzrok s Expoom. [Expoova stranica o kontinuiranom generiranju nativnog koda](https://docs.expo.dev/workflow/continuous-native-generation/) to kaže: ako tvoj projekt sadrži mape `android` i `ios`, EAS Build ne pokreće prebuild. **Tvoj app.json tada više ne utječe na ikonu**: Appleu odlazi PNG iz `ios` mape.

Provjeri to iz korijena projekta:

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

Ako naredba odgovori `yes` za ikonu od 1024, zamijeni tu datoteku svojom neprozirnom verzijom, pod istim imenom. Ako nisi ručno radio nikakve nativne izmjene, možeš i obrisati `ios` mapu i dodati je u `.gitignore`: EAS će je ponovno generirati pri svakom buildu. Na Solysu, TradaZenu i Noleri git ignorira tu mapu.

## Format iz iOS-a 26: Icon Composer

Icon Composer je Appleov alat za Liquid Glass ikone iOS-a 26. Stvara jednu `.icon` datoteku s više slojeva. Prema [Appleovom vodiču za Icon Composer](https://developer.apple.com/documentation/xcode/creating-your-app-icon-using-icon-composer), Xcode iz nje izvlači i slike za starije verzije iOS-a.

Expo ga podržava od SDK-a 54. Mapu navodiš kao tekst, nikad unutar objekta s varijantama:

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

U tom slučaju prebuild kopira mapu bez ikakvih izmjena, a konačnu ikonu izrađuje Xcode. Zato ti treba Xcode 26 ili noviji, onaj iz novijih EAS imagea, kako objašnjavam u vodiču o [ITMS-90725](https://devoria.fr/hr/blog/itms-90725-sdk-version-issue-expo).

Od kolovoza 2025. na Appleovom forumu za developere teme prijavljuju ITMS-90717 s `.icon` datotekama. Navedeni mogući uzroci: prozirni PNG sloj, sloj veći od platna, grupa s efektom Blur blizu ruba. Spomenuta zaobilazna rješenja: isključiti Blur, zadržati punu pozadinu ili se vratiti na PNG. Te teme ne donose nikakav službeni Appleov popravak, a greška je bila prijavljivana još u kolovozu 2026.

[Appleova pravila za ikone](https://developer.apple.com/design/human-interface-guidelines/app-icons) idu u istom smjeru: ako uvezeš pozadinski sloj, mora pokrivati cijelu površinu i biti neproziran. Moje aplikacije još koriste PNG, pa Icon Composer nisam testirao u produkciji. **Ako ti `.icon` datoteka blokira slanje, vrati `ios.icon` na PNG**: Expo će ga spljoštiti i tvoja ikona će proći ovu provjeru.

## Provjeri ikonu u konačnom buildu

U IPA-u ikona od 1024 nije PNG datoteka: Xcode je kompajlira u `Assets.car`. Preuzmi IPA sa stranice builda na expo.dev, pa pokreni:

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

Svaka ikona prikazuje polje `Opaque`. Dana 15. listopada 2026. kompajlirao sam s `actool`, Xcodeovim alatom, ikonu Solysa i svoju probnu ikonu s prozirnim kutovima. Prva izlazi kao `"Opaque" : true`, druga kao `"Opaque" : false`. Apple ne dokumentira to polje: shvati ga kao trag, ne kao Appleovu provjeru.

Zamka koju trebaš znati: **ne testiraj sa `sips` male PNG datoteke u korijenu aplikacije.** Xcode ih zapisuje s alfa kanalom, čak i kad je izvor neproziran. U mom testu s ikonom Solysa `sips` za njih odgovara `yes`.

## Ostale greške s ikonama

| Kod        | Što Apple javlja       | Smjer s Expoom          |
| ---------- | ---------------------- | ----------------------- |
| ITMS-90717 | Prozirna ikona od 1024 | Izvesti bez alfa kanala |
| ITMS-90704 | Nema ikone od 1024     | Nedostaje unos za 1024  |
| ITMS-90022 | Nema ikone za iPhone   | Nepotpun katalog        |
| ITMS-90023 | Nema ikone za iPad     | Nepotpun katalog        |

Zadnje tri poruke uglavnom potječu iz 2017. i 2018., kad je Xcode 9 promijenio pravila za ikone.

S Expoom su postale rijetke. Prebuild zapisuje jednu univerzalnu ikonu od 1024, a Xcode generira ostale veličine. Ako nisi naveo ikonu, Expo čak stvara bijeli kvadrat, da izbjegne neuspjeh pri slanju. **Ako dobiješ neku od tih grešaka, pogledaj `ios` mapu u gitu**: datoteka `Contents.json` u `AppIcon.appiconset` mora imati unos veličine `1024x1024`, a PNG koji navodi mora postojati.

## Prije sljedećeg slanja

Ikona se popravi za deset minuta, ali svaka greška košta jedan build. Ostale automatske provjere traže istu pažnju, poput [ITMS-90683](https://devoria.fr/hr/blog/itms-90683-missing-purpose-string-expo) za tekstove dozvola ili [ITMS-91053](https://devoria.fr/hr/blog/itms-91053-missing-api-declaration-expo) za privacy manifest. Kad build bude prihvaćen, instaliraj ga preko [TestFlighta](https://devoria.fr/hr/blog/testflight-testiranje-iphone-aplikacije) da vidiš svoju ikonu na početnom zaslonu.

Odbijanja od strane reviewera traže više odmaka: postupak je na stranici [aplikacija koju je Apple odbio](https://devoria.fr/hr/expertise/apple-odbio-aplikaciju), a najčešći razlozi su u tekstu [zašto Apple odbija aplikaciju](https://devoria.fr/hr/blog/apple-odbio-aplikaciju-razlozi).

Da provjeriš svoj projekt prije slanja, [Review Kit](https://devoria.fr/hr/kits/app-review) objedinjuje moju checklistu i Claude Code skillove koji pregledavaju tvoj projekt. Ako ti je slanje zapelo i želiš ljudski pogled, [rezerviraj sat vremena sa mnom](https://devoria.fr/hr/coaching): prolazimo kroz tvoj projekt videopozivom, na tvom ekranu. A ako pripremaš prvo objavljivanje, [napravi besplatnu dijagnozu](https://devoria.fr/hr/diagnostic): posložit će korake po redu i poslati ti moju checklistu protiv Appleovih odbijanja.

## Česta pitanja

### Zašto Apple vidi alfa kanal kad moja ikona nema nikakvu prozirnost?

Zato što PNG može zadržati alfa kanal čak i kad su mu svi pikseli neprozirni. Mnogi alati ga po defaultu dodaju pri izvozu. Provjeri sa `sips -g hasAlpha`, pa ponovno izvezi ikonu bez tog kanala.

### Može li se ITMS-90717 popraviti udaljenim ažuriranjem?

Ne. Ikona je kompajlirana u binarnu datoteku, u `Assets.car`. Udaljeno ažuriranje mijenja samo JavaScript i resurse aplikacije. Popravi ikonu, napravi novi build i ponovno ga pošalji.

### Smije li tamna ikona biti prozirna?

Da. Apple traži prozirnu pozadinu za tamnu varijantu, a Expo zadržava njenu prozirnost. Iz toga zaključujem da provjera cilja glavnu ikonu, onu za App Store: ona mora biti neprozirna.

### Trebam li zaobliti kutove iOS ikone?

Ne. Daj puni kvadrat: iOS sam primjenjuje masku. Zaobljeni kutovi ostavljaju prozirne piksele u kutovima, upravo ono što ova provjera odbija.

### Podržava li Expo Icon Composer ikone iz iOS-a 26?

Da, od SDK-a 54: navedi putanju do `.icon` mape u `ios.icon`, kao tekst. Prebuild je kopira bez izmjena, a Xcode 26 je kompajlira. Ako s tim formatom dobiješ ITMS-90717, provjeri prozirne slojeve i efekt Blur ili se privremeno vrati na PNG.


## Tvoj projekt

[Review Kit](https://devoria.fr/hr/kits/app-review): Moja checklista za App Store pregled, moja Appleova odbijanja i kako sam ih ispravio, checklista za Google Play i tri Claude Code skilla. 49 €.

[iOS & Android Kit](https://devoria.fr/hr/kits/ios): Napravi svoju iPhone i Android aplikaciju s Claude Codeom: početni kod mojih aplikacija, put do trgovina i svi kitovi. 99 €.

[Dijagnoza: što te dijeli od tvoje iPhone aplikacije](https://devoria.fr/hr/diagnostic): 7 pitanja, 60 sekundi: saznaj što te stvarno koči da objaviš svoju iPhone aplikaciju, dobij svoj put u 4 koraka i kit koji ti odgovara.
