Changelog (iOS) — 0.8.8

New Format 800x578

Time in zones

Milo now shows time spent in heart rate zones across all your running. You can see aggregated time in zones for 7 days, 1 month, year to date, or 1 year in the data list view, and for each activity in the activity detail view. Zones are calculated using extrapolated HealthKit samples, giving far more realistic results when HealthKit data is sparse. This upgrade includes sophisticated HealthKit de-duplication, prioritizing Milo data and reconciling heart rate gaps for consistent zone distributions.

HealthKit improvements

This update includes a deep HealthKit refactor. Heart rate samples are cleaned, corrected, extrapolated where needed, and workouts are fully de-duplicated across sources like Strava or Garmin. Elevation, weather, and additional metadata are now written to HealthKit workouts. Routes are now saved to HealthKit as well, allowing Milo workouts to display their actual route directly in the Health and Fitness apps. These improvements also increase accuracy of training load, weekly volume, and running style components.

Bug fixes and improvements

  • HealthKit refactor and full data cleanup

  • Extrapolated heart rate samples for more accurate time in zones

  • Advanced de-duplication prioritizing Milo and ranking others by HR sample quality

  • Added time in zones to activity detail views

  • Merged Z6 into Z5 to use five heart rate zones which is common practice

  • Added setting for week start day (Monday or Sunday) which is respected for weekly volume stats now

  • Fixed issue that moved some watch activities to trash and restored affected items

  • Added one-time housekeeping on watch app launch

  • Fixed biometrics race condition before activity start

  • Improved best race detection for running style

  • Improved de-duplication for running stats and weekly volume

  • Fixed running style component not showing race tab when no race found

  • Added weather and elevation to HealthKit workouts

  • Added route writing to HealthKit workouts (now visible in Health and Fitness apps)

  • Fixed offsets not applying to adaptive workout library items

  • Fixed workouts losing Milo Pace and using hard coded values

  • Saved average heart rate to laps in API and added max bpm

  • Removed match percentage label in running style

  • Fixed empty status in summary view

  • Cleaned up padding and sizing in data tab descriptions

  • ActivityFormatter fixes for distance and time

  • Switched training load component to default to HealthKit as the source

  • Improved weight fetching for activities

  • Improved running style race selection

  • Added live locations and route write access for workout routes

  • Ensured distance, elevation, and metadata are fully written to HK workouts

  • Time in zones formatting improvements, zone labels, fallback logic, and chart updates