Skip to content

ios: fix blank Live Activity icon by shrinking it from 1024px to 256px - #79

Merged
willchan merged 1 commit into
mainfrom
claude/workout-widget-logo-blank-k9budd
Aug 13, 2026
Merged

ios: fix blank Live Activity icon by shrinking it from 1024px to 256px#79
willchan merged 1 commit into
mainfrom
claude/workout-widget-logo-blank-k9budd

Conversation

@willchan

Copy link
Copy Markdown
Owner

Problem

The workout tracker's Live Activity was showing a blank box where the app icon should be — in the lock-screen banner and in both the compact-leading and minimal Dynamic Island presentations.

Root cause

LiveActivityIcon.imageset/AppIcon-512@2x.png was a byte-for-byte copy of the App target's App Store icon (1024×1024, ~530KB), added in 622e1eb and never resized. It's only ever displayed at ~36pt (108px @3x).

Live Activities render in a memory-constrained system process. Decoding a 1024×1024 image costs ~4MB per reference, and this asset is referenced three times (lock screen, Dynamic Island compact leading, minimal) — enough to blow the budget. The failure is silent: no crash, no build warning, just the icon rendering as a blank box in every presentation while the rest of the layout (text, the rest-state ring — plain SwiftUI shapes, no image decode) renders fine.

Confirmed this wasn't a wiring bug first: asset name, Contents.json, and Xcode target membership were all correct, and the PNG itself decodes fine (rendered it directly — intact panda artwork).

Fix

  • Resize the icon to 256×256 (91KB, down from 530KB) — ~2.4x headroom over the 108px it's actually drawn at.
  • Rename the file from the misleading AppIcon-512@2x.png to LiveActivityIcon.png, since that filename is exactly what invited copy-pasting the App Store icon in the first place.
  • Document the gotcha in ios/MANUAL_SETUP.md so a future icon swap doesn't reintroduce it.

Testing

Per ios/MANUAL_SETUP.md, ActivityKit Live Activities don't render in the iOS Simulator at all, so this can only be verified by eye on a real device via TestFlight — neither ios.yml's Simulator smoke test nor the AppUITests XCUITest target can render one. Ran an adversarial code review pass on the diff (clean, no findings). The Simulator build (ios.yml) and TestFlight archive (ios-testflight.yml) workflows will validate the project still compiles/archives correctly.


🤖 Generated with Claude Code

https://claude.ai/code/session_01QcMBK25upFqN14g4zw7QL7


Generated by Claude Code

LiveActivityIcon.imageset was a byte-for-byte copy of the App target's
1024x1024 App Store icon (added in 622e1eb), never resized for its
actual ~36pt/108px @3x on-screen size. Live Activities render in a
memory-constrained system process, and decoding a 1024x1024 image costs
~4MB per reference — across the three places this asset is drawn (lock
screen, Dynamic Island compact leading, minimal), that's enough to blow
the budget. The failure is silent: no crash, no build warning, just the
icon rendering as a blank box in every presentation while the rest of
the layout (text, the rest-state ring drawn from plain SwiftUI shapes)
renders fine — exactly what was reported.
Resize to 256x256 (~2.4x headroom over 108px) and rename away from the
misleading AppIcon-512@2x.png filename that invited the copy-paste in
the first place. Also documents the gotcha in MANUAL_SETUP.md so a
future icon swap doesn't reintroduce it.
@willchan
willchan merged commit f7fb2ff into mainAug 13, 2026
8 checks passed
Sign up for freeto 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.

2 participants

@willchan@claude