Skip to content

iOS: Cannot change app icon in the newest iOS 26 release #73

@Nick-io-03

Description

@Nick-io-03

Bug Report

Plugin Version

"version": "6.0.0"

Capacitor Version

Latest Dependencies:

  @capacitor/cli: 7.4.4
  @capacitor/core: 7.4.4
  @capacitor/android: 7.4.4
  @capacitor/ios: 7.4.4

Installed Dependencies:

  @capacitor/cli: 7.2.0
  @capacitor/ios: 7.2.0
  @capacitor/android: 7.2.0
  @capacitor/core: 7.4.4

Platform(s)

iOS 26 and higher

Current Behavior

For Android, switching app icons is fine.
For iOS however, nothing happens on the latest iOS versions (26 and higher).

We've implemented a few buttons inside our app, which allow the user to change app icon. Upon pressing any of the different options, the AppIcon.change() is called from the plugin's API.

Using both the iOS simulators and physical devices on any older OS (lower than 26), the app icon changes successfully.
The idea we have is that for both iOS and Android, we swap the standard app icon for a Premium icon. When going back to the standard icon, we use a replica of the standard icon. We call this replica the defaulticon. The reason why is so that we have an equal an easy implementation for both iOS and Android. Thanks to this, we do not need to perform a AppIcon.reset() for iOS specifically.

Expected Behavior

When pressing any of the app icon option buttons we have implemented. No notification should be shown, since we pass suppressNotification: true as a parameter. Also, the app icon should change.

Code Reproduction

I will try and provide a simple overview of what I have created. Since the code is inside a private repo for a client, we may sadly not provide too many details I'm afraid.
In xcode, we have set up the new App Icon for iOS and enabled "Include all app icon assets", as well as added all necessary names for the "alternate app icon sets" option.

The buttons have an onClick property which calls the AppIcon.change() when clicked:

const iconNames = ['defaulticon', 'premiumicon'];

const changeIcon = async (iconName: string) => {
const disableIcons = iconNames.filter(name => name !== iconName);
try {
await AppIcon.change({ name: iconName, suppressNotification: true, disable: disableIcons });
} catch (error) {
console.error('Icon change failed:', error);
}
};

<Button onClick={() => changeIcon('premiumicon')}>to PremiumAppIcon

Other Technical Details

I use the Webstorm IDE on version 2025.2.3. Xcode is currently running 26.1 (17B55). I have iOS simulators running for iOS 26.1 (which doesn't allow app icon changes) and one for iOS version 17 (which does allow app icon changes)

Additional Context

No error is thrown inside the debugger when trying to change app icon in the latest iOS versions 26 and higher.

Metadata

Metadata

Assignees

No one assigned

    Labels

    duplicateThis issue or pull request already exists

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions