HKStatisticsCollectionQueryDescriptor intermittently returns no data for certain date ranges on iOS 27

We are seeing inconsistent results from HKStatisticsCollectionQueryDescriptor on iOS 27.

Using the same quantity type, statistics options, anchor date, interval components, and predicate configuration, some date ranges return the expected statistics, while other ranges unexpectedly return empty results or buckets with no quantity.

The affected ranges do contain HealthKit samples:

  • HKSampleQueryDescriptor finds samples in the same date range.
  • HKStatisticsQueryDescriptor returns the expected value when run separately for an affected bucket.
  • HKStatisticsCollectionQueryDescriptor returns no quantity for that same bucket.
  • Slightly expanding or shifting the date range may cause the collection query to return data again.

A simplified version of the query looks like this:

let datePredicate = HKQuery.predicateForSamples(
    withStart: startDate,
    end: endDate,
    options: .strictStartDate
)

let descriptor = HKStatisticsCollectionQueryDescriptor(
    predicate: .quantitySample(
        type: quantityType,
        predicate: datePredicate
    ),
    options: .cumulativeSum,
    anchorDate: anchorDate,
    intervalComponents: DateComponents(day: 1)
)

let collection = try await descriptor.result(for: healthStore)

collection.enumerateStatistics(from: startDate, to: endDate) {
    statistics,
    _ in

    let quantity = statistics.sumQuantity()
    print(statistics.startDate, quantity as Any)
}

Expected behavior

Every interval containing matching samples should return the corresponding statistics, regardless of the overall requested date range.

Actual behavior

Some date ranges produce missing or empty buckets even though matching samples exist and an individual HKStatisticsQueryDescriptor can calculate the expected value. Changing only the date range can make the data appear or disappear.

The samples are visible to the app in the affected range, so this does not appear to be explained solely by iOS 27’s Limited History authorization.

This behavior was not observed with the same query flow on earlier iOS versions.

Is this a known regression in HKStatisticsCollectionQueryDescriptor on iOS 27, or has the expected date-range or predicate behavior changed?

HKStatisticsCollectionQueryDescriptor intermittently returns no data for certain date ranges on iOS 27
 
 
Q