Skip to content

🎨 feat(icon): ship the Icon Composer source so iOS 26 gets the glass icon - #48

Merged
hub2rock merged 1 commit into
mainfrom
chore/app-icon-composer
Aug 18, 2026
Merged

🎨 feat(icon): ship the Icon Composer source so iOS 26 gets the glass icon#48
hub2rock merged 1 commit into
mainfrom
chore/app-icon-composer

Conversation

@hub2rock

Copy link
Copy Markdown
Contributor

The app icon was authored in Icon Composer, but only its exported PNGs ever made it into the project β€” so we shipped flat renderings and none of the layered Liquid Glass treatment iOS 26 draws from the source. The .icon file itself was sitting outside the repo, in a Downloads/Corbeille/ folder, one cleanup away from being lost.

Changes

AppIcon.icon added β€” foreground glyph plus light and dark backgrounds. It is deliberately named to match AppIcon.appiconset: that pairing is what lets the asset compiler serve the icon stack to iOS 26 and the catalog to our iOS 18.4 minimum.

Two build settings on the app target, both configurations:

  • ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES β€” embed both sets
  • ASSETCATALOG_OTHER_FLAGS = --enable-icon-stack-fallback-generation=disabled β€” stop Xcode from generating its own fallback from the stack, which would shadow the catalog

AppIcon.appiconset kept as the iOS 18 fallback, minus three PNGs it never referenced. Icon Composer exports six appearances and .appiconset has three slots; those orphans were what the AppIcon has 3 unassigned children warning pointed at. The tinted slot keeps its greyscale artwork β€” iOS applies the user's tint to it, so a pre-tinted export would be wrong there.

Verification

Clean build succeeds with no icon warning. Assets.car in the built bundle carries both paths:

AppIcon.iconstack                              ← iOS 26 Liquid Glass
AppIcon/Foreground, /Background-Light, /-Dark  ← the three layer groups
AppIcon1024x1024_UIAppearanceAny....png        ← iOS 18.4 fallback
AppIcon1024x1024_UIAppearanceDark....png
AppIcon1024x1024_ISAppearanceTintable....png

Worth knowing

Resource presence was verified in the binary; the glass rendering itself has not been eyeballed on an iOS 26 simulator. This approach also has a history of App Store validation rejections on earlier Xcode 26 betas β€” the method used here is the one reported as resolved and approved, but the next TestFlight upload is its real test. git revert restores the previous icon setup if it fails.

πŸ€– Generated with Claude Code

…icon

The icon was authored in Icon Composer, but only its exported PNGs made it
into the project β€” so the app shipped flat renderings and none of the layered
Liquid Glass treatment iOS 26 draws from the source.

Add `AppIcon.icon` (foreground glyph + light/dark backgrounds). It has to carry
the same name as `AppIcon.appiconset`, which is what lets the asset compiler pair
the two: the icon stack serves iOS 26, the catalog serves our iOS 18.4 minimum.
`--enable-icon-stack-fallback-generation=disabled` stops it from also
auto-generating a fallback from the stack and shadowing that catalog.

Also drop three PNGs the catalog never referenced β€” Icon Composer exports six
appearances and `.appiconset` only has three slots, which is what the "AppIcon
has 3 unassigned children" build warning was pointing at. The tinted slot keeps
the greyscale artwork it already had; iOS applies the user's tint to it.

Verified in the built bundle: Assets.car now carries AppIcon.iconstack with its
three layer groups alongside the Any/Dark/Tintable 1024 renditions, and the
build is warning-free.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@hub2rock
hub2rock merged commit 22d8d01 into main Aug 18, 2026
7 checks passed
@hub2rock
hub2rock deleted the chore/app-icon-composer branch August 18, 2026 06:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant