HealthKit backgroundDelivery is only triggering in the background while charging

HealthKit background delivery only triggers when charging. I have set step monitoring to hourly frequency. Despite step changes, callbacks fail to arrive after 3-4 hours on battery, but trigger immediately upon connecting power. Observed for 2 days: background updates are only received when charging. The device is not in Low Power Mode, and Background App Refresh is enabled for the app in Settings.

What you described doesn't seem to happen to me when I try with my iPhone + iOS 26.1 (23B85). Would you mind to share the device configuration, relevant code snippets, and detailed steps you used to observe the behavior?

To observe the baseline behavior, I'd suggest that you start with an iPhone that has a high battery level (over 80%, for example), because the system may decide to not deliver an update if the battery level is low, even the device isn't in the low battery mode. This is especially true on watchOS.

Best,
——
Ziqiao Chen
 Worldwide Developer Relations.

Sorry for the delayed response. Here is the code repository I used for testing:

https://github.com/zhuscat/backgrounddelivery

I log an event whenever a background delivery is received. The logs include details such as the timestamp and whether the app was running in the background.

Here is my testing workflow:

First, I restarted the phone and ensured the battery was fully charged.

I checked the logs periodically and observed that background delivery was received normally throughout the day. This consistent behavior lasted for two or three days.

I continued using the phone normally. On one specific day, I let the battery drop below 10%. The next day, I noticed that I was no longer receiving any background delivery updates (even though I had recharged the battery to 100% and Low Power Mode was disabled). The only difference between this failure state and the previous successful days is that the battery had been drained to a very low level the day before.

Another day passed, and I found that I was still not receiving any background delivery updates.

The only things I know for sure right now are:

Background delivery is not received when Low Power Mode is on.

It is not received if Background App Refresh is disabled in Settings.

However, everything else seems like a black box. At least based on what you said, I should be receiving updates since my battery has remained above 80%, yet I am receiving nothing. I am not sure if this is related to the battery dropping below 10% on the previous day.

Test Device: iPhone 17 (26.2)

I checked the logs periodically and observed that background delivery was received normally throughout the day. This consistent behavior lasted for two or three days.

Yeah, this is what I have seen as well.

On one specific day, I let the battery drop below 10%. The next day, I noticed that I was no longer receiving any background delivery updates (even though I had recharged the battery to 100% and Low Power Mode was disabled). The only difference between this failure state and the previous successful days is that the battery had been drained to a very low level the day before.

That background delivery was ever disabled by the system due to the low battery level is likely the culprit.

I am not quite sure if that is as-designed though. Do you have a feedback report yet? If not, would you mind to file one and share your report ID here? Thanks.

Best,
——
Ziqiao Chen
 Worldwide Developer Relations.

Hi, I just filed a report.

FB21635120 (HealthKit Background Delivery stops working on battery after dropping below 10% and does not recover after recharging)

HealthKit backgroundDelivery is only triggering in the background while charging
 
 
Q