Exponent.app icon instead of my app icon

#1

Seeking a clue on how to solve an icon issue with iOS app store: After uploading an expo generated .ipa to iTunes Connect, itunes connect rejected the build because it found ‘Exponent.app’ in the asset catalog for my app’s icon. Why would Apple find that icon instead of mine?

“Invalid App Store Icon - The App Store Icon in the asset catalog in ‘Exponent.app’ can’t be transparent nor contain an alpha channel.”

my app.json specifies an icon file.
{
“expo”: {
“name”: “xxxxx”,
“icon”: “./assets/app-icon.png”,
“version”: “1.0.0”,
“sdkVersion”: “21.0.0”,
“ios”: {
“bundleIdentifier”: “com.xxxxx.xxxxx”,
“buildNumber”: “2”
},
}
}

#2

Hey @arthursun, we recently fixed some bugs that addressed some of the issues around icons. Could you try a rebuild and let me know the result?

Thanks a bunch and thanks for using Expo

#3

Thank you for taking an interest and responding. Good news the problem was not with ‘Exponent.app’ it was with the icons that our app provided to Apple. We removed the alpha channels in our icons and apple accepted the .ipa that expo built.

FYI: IMHO, Expo could do better by working with apple so that the error message would say ‘xxxxx.app’ where ‘xxxxx’ is my app name. Because the error message referred to expo, I initially began reviewing expo provided stuff. That was not the correct path. The error message comes from apple via email after an iOS build submission fails.

1 Like
#4

Awesome I’m glad things worked out, we’ll work on the things that you suggested!

1 Like
#5

@jimmylee Good day! Are there any progress on this? Would it be possible to analyze the image’s properties before it gets uploaded to TestFlight? Thank you!

1 Like
#6

@inlesco the image properties issue is narrow - just the embedded app launcher icon images. The ‘exp’ deployment tool doesn’t have a safety check yet for app launcher icons. I checked recently. At this time, it’s do-it-yourself safety checking for iOS app launcher images and the ‘exp’ tool. Check for no transparency. On, iOS transparency is not permitted with app launcher icons.

iOS app icon guidelines:
https://developer.apple.com/ios/human-interface-guidelines/icons-and-images/app-icon/

Because each app store has different guidelines, I recommend going with the lowest common denominator (lcd), iOS. Google Play’s app launcher icon requirements are different. Amazon’s are a little different too.

Google Play’s app launcher icon guidelines:
https://developer.android.com/guide/practices/ui_guidelines/icon_design.html

Amazon’s App launcher icon guidelines:
https://developer.amazon.com/docs/app-submission/asset-guidelines.html#images-for-app-submission

iOS, at this time, is the lcd because of the no transparency requirement on the app launcher icon. Adhering to the lcd increases the likelihood of a successful cross-platform app deployment with exp. Obviously, there is more freedom with the app icons displayed on the store listings. Those icons, the ones user sees prior to downloading the app, have different requirements so app stores ipa checkers, apk checkers, and ‘exp’ do not care about those images.

#7

@inlesco We haven’t made any changes to client-side image validation. It makes sense to do, it’s just that there are a ton of other things we’re working on. So just want to acknowledge that this is an issue and set expectations that it’s not going to change a lot.

#8

@ide thanks for the response! I completely understand there are more important things, however, it’d be great to improve the process itself here + the developer experience.

maybe it’s possible to just put a challenge for the open-source community to address this completely and improve the overall build failure feedback, among other things? I know OC community would gladly accept that and would provide some support for a project as promising as Expo.