Skip to content
Client v5: BLE, BLE Hosting, HTTP, Jobs - Linux, MacOS, & Blazor Support! Full AOT, RX on BLE only & MANY other features! Power up!

Getting Started

GitHubGitHub stars for shinyorg/health
DownloadsNuGet downloads for Shiny.Health
Microsoft.Extensions.AINuGet 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
MetricUnitiOS (HealthKit)Android (Health Connect)
Step CountcountHKQuantityType.StepCountStepsRecord
Heart RatebpmHKQuantityType.HeartRateHeartRateRecord
CalorieskcalHKQuantityType.ActiveEnergyBurnedTotalCaloriesBurnedRecord
DistancemetersHKQuantityType.DistanceWalkingRunningDistanceRecord
WeightkgHKQuantityType.BodyMassWeightRecord
HeightmetersHKQuantityType.HeightHeightRecord
Body Fat %%HKQuantityType.BodyFatPercentageBodyFatRecord
Resting Heart RatebpmHKQuantityType.RestingHeartRateRestingHeartRateRecord
Blood PressuremmHgHKQuantityType.BloodPressureSystolic/DiastolicBloodPressureRecord
Oxygen Saturation%HKQuantityType.OxygenSaturationOxygenSaturationRecord
Sleep DurationhoursHKCategoryType.SleepAnalysisSleepSessionRecord
HydrationlitersHKQuantityType.DietaryWaterHydrationRecord
Blood Glucosemg/dLHKQuantityType.BloodGlucoseBloodGlucoseRecord
Body Temperature°CHKQuantityType.BodyTemperatureBodyTemperatureRecord
Basal Body Temperature°CHKQuantityType.BasalBodyTemperatureBasalBodyTemperatureRecord
Respiratory Ratebreaths/minHKQuantityType.RespiratoryRateRespiratoryRateRecord
VO2 MaxmL/kg/minHKQuantityType.VO2MaxVo2MaxRecord
Heart Rate VariabilitymsHKQuantityType.HeartRateVariabilitySDNNHeartRateVariabilityRmssdRecord
Lean Body MasskgHKQuantityType.LeanBodyMassLeanBodyMassRecord
Basal Energy BurnedkcalHKQuantityType.BasalEnergyBurnedBasalMetabolicRateRecord
Active Energy BurnedkcalHKQuantityType.ActiveEnergyBurnedActiveCaloriesBurnedRecord
Floors ClimbedcountHKQuantityType.FlightsClimbedFloorsClimbedRecord
Wheelchair PushescountHKQuantityType.PushCountWheelchairPushesRecord
Speedm/sHKQuantityType.WalkingSpeedSpeedRecord
PowerwattsHKQuantityType.CyclingPowerPowerRecord
Menstruation Flowflow levelHKCategoryType.MenstrualFlowMenstruationFlowRecord
Sexual Activityprotection enumHKCategoryType.SexualActivitySexualActivityRecord
Ovulation Testresult enumHKCategoryType.OvulationTestResultOvulationTestRecord
Cervical Mucusappearance enumHKCategoryType.CervicalMucusQualityCervicalMucusRecord
Intermenstrual BleedingeventHKCategoryType.IntermenstrualBleedingIntermenstrualBleedingRecord
WorkoutsessionHKWorkoutExerciseSessionRecord
Nutritionfood/macrosFood correlationNutritionRecord
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