Skip to content

Stop AlarmKit alarms after a relaunch - #2590

Merged
ps2 merged 1 commit into
next-devfrom
alarmkit-stable-ids
Oct 17, 2026
Merged

ps2 merged 1 commit into
next-devfrom
alarmkit-stable-ids

Conversation

@ps2

@ps2 ps2 commented Oct 17, 2026

Copy link
Copy Markdown
Collaborator

The AlarmKit alarm scheduled for an urgent low was tracked only in memory, so once Loop was relaunched, acknowledging or retracting the alert could no longer find the alarm, and it kept alerting. This matches a report on #2481 of the alarm still showing after the alert was acknowledged. Stop and cancel errors were also discarded.

The alarm ID is now a UUID derived from the alert identifier (SHA-256, version 5 layout), so any process can find it. Cancelling looks the alarm up in AlarmManager.shared.alarms, stops it if it is alerting or cancels it if it is only scheduled, and logs failures.

Built and installed on an iPhone with the other alert changes; the relaunch case hasn't been reproduced on purpose.

The alarm scheduled for an urgent low was tracked only in memory, so
once Loop was relaunched, acknowledging or retracting the alert could
no longer find the alarm to stop it, and AlarmKit kept it alerting.
Stop and cancel errors were also discarded.

The alarm ID is now derived from the alert identifier, so any process
can find it. Cancelling looks the alarm up in AlarmManager, stops it if
it is alerting or cancels it if it is only scheduled, and logs failures.
@ps2
ps2 merged commit 68c6d8a into next-dev Oct 17, 2026
ps2 added a commit to LoopKit/LoopWorkspace that referenced this pull request Oct 19, 2026
Loop: issue reports to the LoopKit developers (LoopKit/Loop#2585), even
alarm loudness (LoopKit/Loop#2589), stop AlarmKit alarms after a relaunch
(LoopKit/Loop#2590), alarms play through silent mode (LoopKit/Loop#2591),
carb entry sync identifier (LoopKit/Loop#2587).

LoopKit: watch glucose duplicate crash (LoopKit/LoopKit#655), chart
back-gesture (LoopKit/LoopKit#656, LoopKit/LoopKit#658), iOS 17.6 and
watchOS 10.6 (LoopKit/LoopKit#659), previous pump's reservoir values
(LoopKit/LoopKit#657), carb entry sync identifier (LoopKit/LoopKit#654).

LibreLoop: not-an-Abbott-product notice (LoopKit/LibreLoop#25), iOS 17.6
(LoopKit/LibreLoop#26), backfilled readings in Recent Readings
(LoopKit/LibreLoop#27).

LibreTransmitter: forward the newest trend reading (LoopKit/LibreTransmitter#58).

EversenseKit and MixpanelService: iOS 17.6 (LoopKit/EversenseKit#7,
LoopKit/MixpanelService#9).
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