Expo Alternate App Icons is a library that allows you to easily switch between different app icons in your Expo project.
| Android Device | Android Emulator | iOS Device | iOS Simulator | Web |
|---|---|---|---|---|
| ✅ | ✅ | ✅ | ✅ | ❌ |
Customizing app icons can be a valuable way to provide users with a personalized experience for your app. This library simplifies the process of implementing alternate app icons in your Expo project.
To get started, install the library using Expo CLI:
npx expo install expo-alternate-app-iconsEnsure your project is running Expo SDK 51+.
This package contains an Expo Plugin that copies your alternative icons to native projects.
- Add
expo-alternate-app-iconsto the plugins array inside your app.json. - The second item in the array accepts an array with details about your alternate icons.
- Prebuild a project using
npx expo prebuild --cleanto apply the plugin changes.
// app.json
{
// ...
plugins: [
// ...
[
'expo-alternate-app-icons',
[
{
name: 'IconA', // The name of the alternate icon, follow PascalCase convention
ios: {
light: './assets/icon-a.png',
dark: './assets/icon-a-dark.png',
tinted: './assets/icon-a-tinted.png',
}, // Path to the iOS app icons or if you do not want to use the variants enter directly the path
android: {
foregroundImage: './assets/icon-a-foreground.png', // Path to Android foreground image
backgroundColor: '#001413', // Background color for Android adaptive icon
},
},
{
name: 'IconB',
ios: './assets/icon-b.png', // Without variants,
android: {
foregroundImage: './assets/icon-b-foreground.png',
backgroundColor: '#001413',
},
},
{
name: 'IconC',
ios: './assets/icon-c.png',
android: {
foregroundImage: './assets/icon-c-foreground.png',
backgroundColor: '#001413',
},
},
],
],
],
}Note: Icon names are automatically converted to PascalCase. For example,
"icon-a"becomes"IconA".
Your icons should follow the same format as your default app icon.
- Use a .png file
- Square format with resolution 1024x1024 px
- iOS
- Without transparency layer
- Android - Adaptive icon
- Foreground image
- Background fill color
A boolean value indicating whether the current device supports alternate app icons.
const supportsAlternateIcons: boolean;To set app icon to IconA, use setAlternateAppIcon("IconA"). This function takes icon name as argument.
To reset the app icon to the default pass null like setAlternateAppIcon(null).
function setAlternateAppIcon(name: string | null): Promise<string | null>;Retrieves the name of the currently active app icon.
function getAppIconName(): string | null;Reset app icon to the default one.
This is just a shortcut for
setAlternateAppIcon(null).
function resetAppIcon(): Promise<void>;yarn run build plugin # Start build on save
cd example && yarn expo prebuild # Execute the config plugin