Client v5: BLE, BLE Hosting, HTTP, Jobs - Linux, MacOS, & Blazor Support! Full AOT, RX on BLE only & MANY other features! Power up!
Getting Started
| GitHub | |
| Downloads | |
| Microsoft.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.
Features
Section titled “Features”- Single
IHealthServiceinterface 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
BloodPressureResultwith 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.AItools viaShiny.Health.Extensions.AIto expose health data to LLM agents
Supported Metrics
Section titled “Supported Metrics”| 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>Samples
Section titled “Samples”AI Coding Assistant
Section titled “AI Coding Assistant”Step 1 — Add the marketplace:
claude plugin marketplace add shinyorg/skills Step 2 — Install the plugin:
claude plugin install shiny-client@shiny Step 1 — Add the marketplace:
copilot plugin marketplace add https://github.com/shinyorg/skills Step 2 — Install the plugin:
copilot plugin install shiny-client@shiny