Skip to content
Document DB v12 - Improved Interceptors with Soft Delete Integration, AI protections, & Admin UI with Aspire Integration!How!?

Getting Started

GitHub GitHub stars for shinyorg/health
Downloads NuGet downloads for Shiny.Health
Microsoft.Extensions.AI NuGet downloads for Shiny.Health.Extensions.AI
Frameworks
.NET MAUI
Operating Systems
Android
iOS

Shiny Health provides a unified API for reading and writing health data from Apple HealthKit (iOS) and Android Health Connect. It supports permission management, time-bucketed aggregate queries, data writing, and 30+ cross-platform health metrics spanning activity, body, vitals, nutrition, reproductive/cycle tracking, and workouts.

  • Single IHealthService interface that works on both iOS and Android
  • Read and write support for 30+ cross-platform health metrics
  • Real-time observation of health data changes via IAsyncEnumerable<HealthResult>
  • Time-bucketed aggregate queries at minute, hour, or day intervals
  • Permission management with per-metric read/write granularity via PermissionType
  • AOT-compatible implementation (no .NET reflection)
  • Blood pressure returns a dedicated BloodPressureResult with separate systolic/diastolic values
  • Reproductive & cycle tracking (menstruation flow, sexual activity, ovulation tests, cervical mucus, intermenstrual bleeding), plus workouts and nutrition via dedicated result records
  • Optional Microsoft.Extensions.AI tools via Shiny.Health.Extensions.AI to expose health data to LLM agents
Metric Unit iOS (HealthKit) Android (Health Connect)
Step Count count HKQuantityType.StepCount StepsRecord
Heart Rate bpm HKQuantityType.HeartRate HeartRateRecord
Calories kcal HKQuantityType.ActiveEnergyBurned TotalCaloriesBurnedRecord
Distance meters HKQuantityType.DistanceWalkingRunning DistanceRecord
Weight kg HKQuantityType.BodyMass WeightRecord
Height meters HKQuantityType.Height HeightRecord
Body Fat % % HKQuantityType.BodyFatPercentage BodyFatRecord
Resting Heart Rate bpm HKQuantityType.RestingHeartRate RestingHeartRateRecord
Blood Pressure mmHg HKQuantityType.BloodPressureSystolic/Diastolic BloodPressureRecord
Oxygen Saturation % HKQuantityType.OxygenSaturation OxygenSaturationRecord
Sleep Duration hours HKCategoryType.SleepAnalysis SleepSessionRecord
Hydration liters HKQuantityType.DietaryWater HydrationRecord
Blood Glucose mg/dL HKQuantityType.BloodGlucose BloodGlucoseRecord
Body Temperature °C HKQuantityType.BodyTemperature BodyTemperatureRecord
Basal Body Temperature °C HKQuantityType.BasalBodyTemperature BasalBodyTemperatureRecord
Respiratory Rate breaths/min HKQuantityType.RespiratoryRate RespiratoryRateRecord
VO2 Max mL/kg/min HKQuantityType.VO2Max Vo2MaxRecord
Heart Rate Variability ms HKQuantityType.HeartRateVariabilitySDNN HeartRateVariabilityRmssdRecord
Lean Body Mass kg HKQuantityType.LeanBodyMass LeanBodyMassRecord
Basal Energy Burned kcal HKQuantityType.BasalEnergyBurned BasalMetabolicRateRecord
Active Energy Burned kcal HKQuantityType.ActiveEnergyBurned ActiveCaloriesBurnedRecord
Floors Climbed count HKQuantityType.FlightsClimbed FloorsClimbedRecord
Wheelchair Pushes count HKQuantityType.PushCount WheelchairPushesRecord
Speed m/s HKQuantityType.WalkingSpeed SpeedRecord
Power watts HKQuantityType.CyclingPower PowerRecord
Menstruation Flow flow level HKCategoryType.MenstrualFlow MenstruationFlowRecord
Sexual Activity protection enum HKCategoryType.SexualActivity SexualActivityRecord
Ovulation Test result enum HKCategoryType.OvulationTestResult OvulationTestRecord
Cervical Mucus appearance enum HKCategoryType.CervicalMucusQuality CervicalMucusRecord
Intermenstrual Bleeding event HKCategoryType.IntermenstrualBleeding IntermenstrualBleedingRecord
Workout session HKWorkout ExerciseSessionRecord
Nutrition food/macros Food correlation NutritionRecord
Changed files
  • MyApp/
Platforms/Android/AndroidManifest.xml
AndroidManifest.xml
1<?xml version="1.0" encoding="utf-8"?>2<manifest xmlns:android="http://schemas.android.com/apk/res/android">3	<application android:allowBackup="true" android:icon="@mipmap/appicon" android:roundIcon="@mipmap/appicon_round" android:supportsRtl="true">4	</application>5	<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>6	<uses-permission android:name="android.permission.BATTERY_STATS" />7	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />8	<uses-permission android:name="android.permission.INTERNET" />9	<uses-permission android:name="android.permission.health.READ_STEPS" />10	<uses-permission android:name="android.permission.health.READ_HEART_RATE" />11	<uses-permission android:name="android.permission.health.READ_TOTAL_ENERGY_BURNED" />12	<uses-permission android:name="android.permission.health.READ_DISTANCE" />13	<uses-permission android:name="android.permission.health.READ_WEIGHT" />14	<uses-permission android:name="android.permission.health.READ_HEIGHT" />15	<uses-permission android:name="android.permission.health.READ_BODY_FAT" />16	<uses-permission android:name="android.permission.health.READ_RESTING_HEART_RATE" />17	<uses-permission android:name="android.permission.health.READ_BLOOD_PRESSURE" />18	<uses-permission android:name="android.permission.health.READ_OXYGEN_SATURATION" />19	<uses-permission android:name="android.permission.health.READ_SLEEP" />20	<uses-permission android:name="android.permission.health.READ_HYDRATION" />21	<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />22	<queries>23		<package android:name="com.google.android.apps.healthdata" />24	</queries>25</manifest>
claude plugin marketplace add shinyorg/skills
claude plugin install shiny-client@shiny
copilot plugin marketplace add https://github.com/shinyorg/skills
copilot plugin install shiny-client@shiny
View shiny-client Plugin