How to monitor heart rate in background without affecting Activity Rings?

I'm developing a watchOS nap app that detects when the user falls asleep by monitoring heart rate changes.

== Technical Implementation ==

  • HKWorkoutSession (.mindAndBody) for background execution
  • HKAnchoredObjectQuery for real-time heart rate data
  • CoreMotion for movement detection

== Battery Considerations ==

  • Heart rate monitoring ONLY active when user explicitly starts a session
  • Monitoring continues until user is awakened OR 60-minute limit is reached
  • If no sleep detected within 60 minutes, session auto-ends (user may have abandoned or forgotten to stop)
  • App displays clear UI indicating monitoring is active
  • Typical session: 15-30 minutes, keeping battery usage minimal

== The Problem ==

HKWorkoutSession affects Activity Rings during the session. Users receive "Exercise goal reached" notifications while resting — confusing.

== What I've Tried ==

  1. Not using HKLiveWorkoutBuilder → Activity Rings still affected

  2. Using builder but not calling finishWorkout() (per https://developer.apple.com/forums/thread/780220) → Activity Rings still affected

  3. WKExtendedRuntimeSession (self-care type) (per https://developer.apple.com/forums/thread/721077) → Only ~10 min runtime, need up to 60 min

  4. HKObserverQuery + enableBackgroundDelivery (per https://developer.apple.com/forums/thread/779101) → ~4 updates/hour, too slow for real-time detection

  5. Audio background session for continuous processing (suggested in https://developer.apple.com/forums/thread/130287) → Concerned about App Store rejection for non-audio app; if official approves this technical route, I can implement in this direction

  6. Some online resources mention "Health Monitoring Entitlement" from WWDC 2019 Session 251, but I could not find any official documentation for this entitlement. Apple Developer Support also confirmed they cannot locate it?

== My Question ==

Is there any supported way to:

  • Monitor heart rate in background for up to 60 minutes
  • WITHOUT affecting Activity Rings or creating workout records?

If this requires a special entitlement or API access, please advise on the application process. Or allow me to submit a code-level support request.

Any guidance would be greatly appreciated. Thank you!

Just seen this post. I feel given the detailed write up it's a shame no one's otherwise picked it up with at least some response.

Ultimately I think there's no solution here with the current APIs.

There are background observer HealthKit APIs for HR data but they don't work to your requirements and potentially with WatchOS 26 they don't work well at all! (see here)

I wasn't aware of the entitlement you mention for Health Monitoring, it caused me to write this post.

One other "solution" I'm aware of if your app includes a complication on the watch face -> If you use the legacy ClockKit APIs rather than the newer WidgetKit ones to create this complication, you'll get app waking calls to update this. If you've migrated to WidgetKit this only wakes up the Widget extension which is not so useful. This will still likely not give you the frequency you require.

Beyond that I think it's still a waiting game for better APIs.

How to monitor heart rate in background without affecting Activity Rings?
 
 
Q