Clarification on HealthKit Observer Behavior in Flutter App vs Native iOS App

Hello Apple Developer Support / Community,

I would like clarification regarding HealthKit observer behavior when comparing a Flutter-based iOS app with a fully native iOS app.

We are using HealthKit background delivery with:

  • HKObserverQuery
  • enableBackgroundDelivery
  • HKAnchoredObjectQuery

We have observed that in a Flutter-based app, HKObserverQuery callbacks appear to execute multiple times or more frequently than expected for a single data update. In comparison, a native iOS implementation using similar HealthKit logic appears more stable and predictable.

We would like to understand the expected platform behavior and whether there are any known considerations from Apple’s perspective.

Specific questions:

  1. Does iOS treat HealthKit observer delivery differently for apps built with Flutter versus fully native UIKit / Swift apps?
  2. Are there known issues where app lifecycle handling, Flutter engine initialization, method channels, isolates, or plugin architecture could cause repeated observer callbacks?
  3. Can repeated HKObserverQuery executions occur if queries are registered multiple times during app launches or engine restarts?
  4. Does Apple recommend any specific observer management pattern for cross-platform frameworks such as Flutter?
  5. From the HealthKit system side, should observer callback frequency be identical regardless of whether the app is Flutter or native, assuming the same iOS code is used?

We are trying to determine whether this behavior is due to HealthKit delivery semantics, duplicate observer registration, Flutter lifecycle integration, or framework-related limitations.

Any guidance from Apple or developers who have implemented HealthKit successfully in Flutter would be appreciated.

Thank you.

Clarification on HealthKit Observer Behavior in Flutter App vs Native iOS App
 
 
Q