Skip to content

Comparison with package Plugin.Maui.Health #35

@Kebechet

Description

@Kebechet

Investigation: Features from Plugin.Maui.Health worth adopting

Context

Reviewed Plugin.Maui.Health (by 0xc3u) to identify features they offer that Maui.Health currently lacks.

Features they have that we don't

Cross-platform (both iOS + Android)

# Feature Description Effort
1 Workout GPS routes RoutePoint[] with lat/lng/altitude/accuracy. iOS: HKWorkoutRoute. Android: ExerciseRoute. Medium
2 ReadLatest Most recent sample for a metric (sorted by timestamp, limit 1). Low
3 ReadLatestAvailable Most recent record ever (no date range filter). Low
4 ReadMin / ReadMax Min/max in a range. iOS: HKStatisticsOptions.DiscreteMin/Max. Android: WEIGHT_MIN, BPM_MIN metrics. Low-Medium
5 Semaphore-guarded API calls SemaphoreSlim(1,1) serializing Health Connect IPC to prevent race conditions. Low

Partially cross-platform

# Feature Description Notes
6 97 health parameters 29 nutrition types, walking metrics, swimming, audio exposure, etc. ~40-50 overlap cross-platform, rest are iOS-only or Android-specific
7 80 workout types Pickleball, Disc Sports, Fitness Gaming, etc. Most common map 1:1, some platform-specific
8 Structured unit system Units.Length.Kilometers, Units.Energy.Kilocalories Code organization - we use flat strings

What WE have that they don't

  • Delete records (DeleteHealthData<T>(id))
  • Differential sync (GetChangesToken + GetChanges)
  • Aggregate by interval (GetAggregatedHealthDataByInterval)
  • Read single record by ID (GetHealthRecord<T>(id))
  • Workout session tracking (Start/Pause/Resume/End)
  • Duplicate workout detection (FindDuplicates())
  • Feature availability check (IHealthConnectClientExtensions)

Priority

  1. Semaphore guard (5) - low effort, prevents real bugs
  2. ReadLatest / ReadLatestAvailable (2, 3) - low effort, nice ergonomics
  3. ReadMin / ReadMax (4) - complements existing aggregate API
  4. Workout GPS routes (1) - medium effort, high value
  5. Expanded health parameters (6) - incremental, cross-platform ones first

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions