App stores validate icon assets during binary review — a missing density bucket or broken path in app.json causes immediate rejection before a human reviewer ever sees your app. Android's adaptive icon system requires exact pixel dimensions at each mipmap density (mdpi through xxxhdpi); a missing xxxhdpi icon renders as a blurry, pixelated smear on flagship Pixel and Samsung devices. Apple's HIG requires discrete sizes for each display context (home screen, Spotlight, Settings). A single absent size silently fails submission. Beyond rejection, incorrectly sized icons degrade the visual identity of your app on every device class that uses the missing density, directly undermining user trust at the moment of first impression.
Critical because a missing or broken icon file causes automatic app store binary rejection, blocking all users from reaching the app.
Generate a complete platform icon set from a 1024x1024 master (no pre-rounded corners — the OS applies rounding). For Expo projects, reference the master in app.json and let EAS export platform sizes; for bare React Native, export directly into the platform directories.
// app.json (Expo)
{
"expo": {
"icon": "./assets/icon.png",
"android": {
"adaptiveIcon": {
"foregroundImage": "./assets/adaptive-icon.png",
"backgroundColor": "#ffffff"
}
}
}
}
For bare React Native Android, place PNGs at the correct pixel dimensions under android/app/src/main/res/mipmap-mdpi/ (48×48) through mipmap-xxxhdpi/ (192×192). For iOS, populate the Images.xcassets/AppIcon.appiconset/ catalog with 120×120, 152×152, 167×167, and 180×180 variants.
mobile-store-readiness.visual-assets.icon-sizes-correctcriticalapp.json for icon field pointing to the app icon file. For iOS, verify icon exists and app.json reference is valid. For Android, check android/app/src/main/res/mipmap-*/ic_launcher.png for densities: mdpi (48x48), hdpi (72x72), xhdpi (96x96), xxhdpi (144x144), xxxhdpi (192x192). For iOS via Xcode assets, icons should be 120x120, 152x152, 167x167, 180x180. Expo projects using app.json should have a 1024x1024 icon referenced.app.json resolves to a valid file. Report even on pass: "X of Y required icon sizes found across Z platform directories."mobile-navigation-linking) checks app.json configuration consistency that also affects icon path resolution."Missing xxhdpi (144x144) and xxxhdpi (192x192) Android icons. iOS icon 180x180 not found in expected path." or "Icon path in app.json points to non-existent file: assets/icon.png"{ "icon": "./assets/icon.png" }