Repository navigation
Fix the swap Live Activity card drawing grey or empty on iOS 18+ - #737
Merged
Merged
Conversation
The lock screen card is drawn by a system process that can only rebuild SwiftUI and Foundation types. The iOS 18 countdown used our own format style, so the card fell back to grey placeholders. With that fixed, iOS 26 still drew an empty card: a timer under .fixedSize leaves nothing to draw. The countdown is now the system timer on every iOS version. Both timers take their width from hidden template text instead of .fixedSize, and the "ago" timer aligns its digits next to its label. The countdown labels the iOS card no longer reads are dropped from its content state; Android still uses them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
n13
approved these changes
Nov 11, 2026
n13
left a comment
Collaborator
There was a problem hiding this comment.
Verdict: Approve
Reviewer: GPT-6.1 Sol
Reviewed head 4b8688868529d14c664e23cc623909cbb2e2ee17 against base 20746cd23c87455702c43f902ab1ae3ea06211a8.
No blocking findings. The countdown now uses the system timer throughout the supported iOS range, and the shared template slot covers both countdown and stale timers in the lock-screen and expanded Dynamic Island views. The removed optional content-state labels have no remaining iOS consumers; Android retains its labels and behavior.
Validation:
git diff --checkpassed for the full PR diff.- Compiled and ran
SwapCountdownClockTests.swiftwithSwapCountdownClock.swiftundertimeout 60: passed (ok), including ticking across a minute and countdown template boundaries. - Type-checked and compiled/linked the shared attributes and complete widget sources for
arm64-apple-ios16.2-simulator, including Swift 5 mode and application-extension restrictions, undertimeout 60: passed.
Limitations: the countdown test ran with macOS SwiftUI; actual lock-screen rendering on iOS 18/26 and the full app build were not exercised. GitHub's Analyze check remains in progress; dependency cooldown passed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The lock screen card is drawn by a system process that can only rebuild SwiftUI and Foundation types. The iOS 18 countdown used our own format style, so the card fell back to grey placeholders. With that fixed, iOS 26 still drew an empty card: a timer under .fixedSize leaves nothing to draw.
The countdown is now the system timer on every iOS version. Both timers take their width from hidden template text instead of .fixedSize, and the "ago" timer aligns its digits next to its label. The countdown labels the iOS card no longer reads are dropped from its content state; Android still uses them.