Skip to content

Coalesce Live Activity refreshes so updates aren't postponed by frequent polling - #771

Merged
marionbarker merged 2 commits into
devfrom
fix/la-snapshot-debounce
Oct 18, 2026
Merged

marionbarker merged 2 commits into
devfrom
fix/la-snapshot-debounce

Conversation

@bjorkert

Copy link
Copy Markdown
Member

The Live Activity refresh was debounced by 20 s, and every new request restarted the timer. When a reading is late, BG is fetched every 5 s and device status every 10 s, so the timer never fired and the Live Activity and the saved snapshot stayed stale until polling slowed down. This also happens in a normal loop cycle while waiting for the loop to upload device status after a new BG.

Now the first request schedules the refresh and later requests join it, so the update runs within 20 s regardless of how often data is fetched. The existing check that skips unchanged snapshots is the same. Added unit tests for the new RefreshCoalescer.

The first refresh request schedules the update 20 s later, and requests
that arrive while it is pending join it without moving the deadline. When
BG or device status is polled every 5 or 10 s, the snapshot is still saved
and the Live Activity updated within 20 s.

@marionbarker marionbarker left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Trusting this code is appropriate.
The build works for iOS 27 and iOS 18 phones.
Both had LA running and LA continues to work after building with this branch.

@marionbarker
marionbarker merged commit e93ed44 into dev Oct 18, 2026
1 check passed
@marionbarker
marionbarker deleted the fix/la-snapshot-debounce branch October 18, 2026 00: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.

2 participants