One or more Apple Health connections are not syncing

Last updated: August 21, 2025

If only a few end users are affected:

Check if your end user has disabled Background App Refresh for your app or all apps in iOS Settings

Disabling Background App Refresh also disables HealthKit Background Delivery.

Your end user should turn on Background App Refresh, either for your app or system-wide.

Check if your end user has turned on Low Power Mode permanently

Low Power Mode turns off Background App Refresh while it is active. This means HealthKit Background Delivery would also be suppressed.

It is possible that some users would turn on Low Power Mode permanently.

Your end user should stop using Low Power Mode permanently.

Mobile SDK Sync Log in the Junction Dashboard would warn you about disabled Background App Refresh and Low Power Mode usage at best effort.

Junction Mobile SDK can only detect these scenarios when:

  • the end user is actively interacting with your app (in foreground); AND

  • the end user has already disabled Background App Refresh or have been using Low Power Mode coming into this interactive session.

We cannot detect cases where the end user disables Background App Refresh or enables Low Power Mode after they suspend your app — until the next time they interact with your app, that is.

Check if your end user is affected by a rare OS permission bug

Rationale

Please be aware that there has been a decade-long phantom issue where Health Data permission — managed by the operating system (Apple iOS) itself — have a rare but non-zero chance of being corrupted in the following scenarios:

  1. After iOS Restore — from iTunes Backup, from iCloud Backup or through Migration Assistant; OR

  2. After an app version upgrade.

Symptom

The tell-tale sign of this broken state is that:

  1. The user is fairly certain — or that as the Data Ingestion Log might have indicated — that they have recent data in Apple Health

  2. In the Mobile SDK Sync Log, all resources are showing "0 uploaded" in their recent attempts.

  3. The "0 uploaded" symptoms persist even if you try to reset the integration (SDK sign-out -> SDK sign-in).

Remediation

There is no known way to remediate this broken permission state within your app, since the issue resides in the operating system.

There are three known ways to remediation that requires the end user manual action — in the order of success chance:

  1. Turn off and on all permission in Settings -> Privacy -> Health -> <Your App>

  2. Turn off all permission, restart the iPhone, and then turn on all the permissions again.

  3. If neither (1) or (2) works, the end user has to re-install the app.

If a high volume of end users are affected:

Verify that your app target is properly configured for HealthKit Background Delivery

Refer to the Apple HealthKit integration guide, and make sure that your iOS App Target has been configured properly.

As a recap, there are three key pieces:

You may have this automatically configured in certain platforms (e.g., Expo). You should however still try to verify that the generated iOS project matches the stated expectations.

Ensure that your app does not have crashes during app launch or during background execution

Junction Mobile SDK runs inside your application process.

If your app crashes during background execution or when being launching non-interactively into background:

  1. Junction Mobile SDK would not be able to make progress on data synchronization.

  2. The operating system will un-register your app from HealthKit Background Delivery after a few non-response as a result of process crashes. Consequentially, it will require the user to open your app interactively (into the foreground) such that the SDK has an opportunity to transparently re-register for Background Delivery.

So please make sure:

  • You have crash monitoring in place; and that

  • You have resolved all process-terminating crashes, especially those noted as "In Background".

If you encounter a crash caused by the Junction Mobile SDK itself, let us know through any of our support channel.

Please do provide at least the error message and the symbolicated stack trace in your report, because otherwise Junction has no means to investigate or to attempt to reproduce the issue.