Two app icons for Big Sur

I’m trying to reverse engineer something I could use some extra eyes.

If you have Big Sur installed, dig into the package. Its file has both the new Big Sur style icon and the older version in the same file. If you take that app to a machine running Catalina, you will see the older icon. The app is disabled of course, but the older icon works. In the assets catalog, the old icon is named ‘Contacts’ and the new icon is named ‘Contacts-1016’. I’ve tried doing that, but haven’t had luck yet. I also noticed some apps have both the the CFBundleIconFile (that Xojo uses) and the CFBundleIconName Info.plist keys. I tried adding CFBundleIconName to my Info.plist, but it didn’t help.

My asset catalog has an App and App-1016 icon, since Xojo generates its app icons named App. Both my CFBundleIconName and CFBundleIconFile are set to App.

Any other ideas? This works somehow, I just haven’t found the right piece of the puzzle.

checked the version.plist file ?

it says “BuildAliasOf” “AddressBook”
Since you also see “CFBundleAlternateNames” to be “AddressBook” it could be what you mean.

Is for iOS and suggests that these apps are Catalyst.

In the first few Big Sur betas you could replicate this using two separate ICNS files. However it stopped working in later betas.

I’m thinking there is some way these apps are blessed to be able to do it. Maybe it only works if signed by Apple or something. That seems very unusual for Apple, but I haven’t been able to figure it out. I suppose the good news is users seem to really like the new Big Sur style icon, so I might just use it everywhere like every other app is doing. Still, it’s frustrating to see it working without being able to replicate it.

Don’t know why sorry. Seems weird for it to be Apple only, when the Big Sur versions won’t work on older OSes. But if this is just for Apple only apps now, it doesn’t seem weird to me any more.

The other thing I wonder, is perhaps having the older style icon as a ICNS file and the newer style icon in the asset catalog?

All I know is that I couldn’t get it to work and others who were able to make it work early on, complained when it stopped working.

In the end I tried to do a sort hybrid icon, where the basic shape fits the Apple supplied templates, but it’s still got depth and detail and doesn’t look bad on previous OS versions. At least that was the aim and my opinion, I’d like to know what you think of the icon (

I did however spend way too much time on it and other prototype designs.

Just looking at Apple’s HIG it states:

IMPORTANT When you update your app for macOS 11, use your new app icon design to replace the icon you designed for earlier versions. You can’t include two different app icons for one app, and the macOS 11 app icon style looks fine on a Mac running Catalina or earlier.

1 Like

And yet, Thom’s research shows that Apple does use two icons, it appears that we (3rd Party developers) are not supposed to do so.

Thom said he looked at the Contacts app, but looking at it, I’d bet it’s a Catalyst app now and those have both iOS and macOS icons in them.

The plist strings Thom mentioned earlier would suggest that it is a Catalyst app… Interesting…

FWIW, I just created a generic app using Xcode 12.2 and while the HIG says not to use icns files, that’s exactly what Xcode did. :frowning:

1 Like

I really like that one.

It’s weird that Apple has really gone out of the way to make it this way. Like they are somehow offended that we might want to retain the older icon for use with older system versions.

1 Like

When 90% of their users upgrade immediately, they probably aren’t thinking about backward compatibility.

The thing that drives me nuts is that these icons are actually smaller than standard icons in 10.15 and below, so they definitely look out of place.


Ah, that’s so you can have elements hanging off the edges of the super-ellipse with a drop shadow. But I know what you mean. After all that’s the only defining thing now between a macOS app icon and iOS.

Does iOS still auto clip to super-ellipse or does this have to be rasterized (again)?

Done some exploration because people are asking for this in AW4.

The has no icns file, and exploring the .car shows that it contains both icons. Done some digging on the format and from what I can see, it allows you specify resources not only via localization, but also per OS version. Which is what I assume Apple are doing.

1 Like

Could it be that they are using this:

Availble on macos catalyst 13.0+

On iOS, using that method will display a warning saying the app icon changed.
I suppose it is the same on Catalyst

Apple might be able to work around such using their private api’s

Considering the older style icon shows up without launching the application, I do not believe that this is it.

As I mentioned out earlier, the assets catalogue has the provision for providing not just localized resources, but also resources that are governed by the minimum OS version.

Which is how I believe that Apple are able to provide two different application icons. What makes it most odd, is 1. Apple says don’t do this. 2. The app won’t launch on an older version, so why did they take the time to do this?

There is very little documentation on creating a asset catalogue (outside of Xcode) and next to none on reading the “compiled” asset catalogue. What documentation I have been able to dig up, shows nothing more that the internal name of the asset catalogue.

I will continue to investigate as I have a number of App Wrapper customers who want to be able to provide two application icons.

Based on the fact that I can’t find any other apps that have done this, I think it’s a leftover.

This makes a lot of sense. Spelunking through the system, I can find lots of “junk” that shouldn’t be there. Especially all the ARM executables that I cannot run on my Intel Mac. Even in some places, duplicate icons, ICNS files and Asset Catalogues. At least with ICNS files they can be compressed, by the Asset Catalogues, not that I am aware off.

I really wish Apple would care about this stuff again.