How Expo app icons work
Expo generates the native iOS asset catalog and Android mipmaps from app.json during prebuild. You provide a 1024px icon, the foreground image and background color for Android's adaptive icon and, optionally, a monochrome image for Android 13 themed icons and dark/tinted images for iOS 18.
Set it up
- Copy
expo/assets/imagesfrom the ZIP into your project'sassets/images. - Merge the icon fields into your
app.jsonorapp.config.js. Replace the wholeandroid.adaptiveIconobject: the default Expo template has abackgroundImagethat would hide the background color.
{
"expo": {
"icon": "./assets/images/icon.png",
"ios": {
"icon": {
"light": "./assets/images/icon.png",
"dark": "./assets/images/icon-dark.png",
"tinted": "./assets/images/icon-tinted.png"
}
},
"android": {
"adaptiveIcon": {
"foregroundImage": "./assets/images/adaptive-icon.png",
"monochromeImage": "./assets/images/monochrome-icon.png",
"backgroundColor": "#ffffff"
}
}
}
}- Rebuild the native app:
npx expo prebuild --clean
# or
eas build --profile development