Repolode
appeeky

appeeky/expo-healthkit

Expo/React Native module that exposes one JavaScript API over Apple HealthKit and Android Health Connect.

Open-source alternative to:react-native-healthkit

Stars
108
Forks
8
Open issues
1
Last commit
11 days ago

What is it?

@appeeky/expo-healthkit is a native module built on the Expo Modules API that gives Expo and React Native apps one JavaScript API for health data on both platforms: HealthKit on iOS, Health Connect on Android. App code always passes Apple type identifiers; the native layer maps them, so mapped types such as steps, heart rate, sleep, body mass and blood pressure need no per-platform branching.

Queries cover quantity and category samples, workouts, statistics aggregates and interval statistics, plus iOS-only data such as electrocardiograms, activity rings, FHIR clinical records and workout GPS routes. Writes cover quantity/category samples, workouts and correlations like blood pressure, plus deletion. Incremental sync uses an opaque anchor token, with a paged first read on Android followed by Health Connect change tokens.

A config plugin writes HealthKit entitlements and Health Connect permission declarations and raises minSdk to 26. It requires Expo SDK 53+ with a development build (Expo Go is not supported), iOS 16.4+ and Android 8+.

Key features

  • 01One API on both platforms: the same methods and Apple type identifiers work on iOS and Android, with mapping handled natively.
  • 02Queries for quantity samples, category samples, workouts and statistics, including interval buckets via queryStatisticsCollection.
  • 03iOS-only queries for electrocardiograms, activity rings, FHIR clinical records, audiograms, workout GPS routes, heartbeat series and correlations.
  • 04Incremental sync through queryAnchored, returning added, deleted, anchor and hasMore for paged catch-up.
  • 05Writes and deletion: saveQuantitySample, saveCategorySample, saveWorkout, saveCorrelation and deleteObjects.
  • 06Background delivery with observe, addUpdateListener and enableBackgroundDelivery; saved observer types are re-registered on a killed-app relaunch.
  • 07Config plugin declares HealthKit usage strings and Health Connect uses-permission entries, and raises minSdk to 26.
  • 08Distinct error codes (ERR_HEALTHKIT_UNSUPPORTED, ERR_HEALTH_CONNECT_UNSUPPORTED, ERR_HEALTH_CONNECT_ANCHOR_EXPIRED) let you hide unsupported UI without Platform.OS checks.

Use cases

  • Reading daily step counts, heart rate or sleep from a fitness app.
  • Building health dashboards for weight, blood pressure or body composition trends.
  • Writing workouts and samples recorded inside the app back to HealthKit or Health Connect.
  • Syncing a user's health history to your own backend with anchored incremental queries.
  • Showing Apple-only data such as ECGs or activity rings on iOS and hiding it on Android.

Quick start

  1. 1

    Install the package with Expo

    npx expo install @appeeky/expo-healthkit
  2. 2

    Add the config plugin to app.json or app.config.ts

  3. 3

    Rebuild native code and run on a development build

    npx expo prebuild --clean

Things to know

  • Health data APIs cannot run in Expo Go; a development build is required.
  • Requires iOS 16.4+ with the HealthKit capability enabled, or Android 8+ with Health Connect.
  • The package has no license declared in its metadata (NOASSERTION), so check the license before use.
  • Read authorization on iOS is opaque, so apps cannot tell whether reads were denied.

In collections

Topics

#react-native#expo#healthkit#health-connect#ios#android#mobile#typescript#health-data#apple-healthkit

FAQ

What is expo-healthkit?
Expo/React Native module that exposes one JavaScript API over Apple HealthKit and Android Health Connect. @appeeky/expo-healthkit is a native module built on the Expo Modules API that gives Expo and React Native apps one JavaScript API for health data on both platforms: HealthKit on iOS, Health Connect on Android. App code always passes Apple type identifiers; the native layer maps them, so mapped types such as steps, heart rate, sleep, body mass and blood pressure need no per-platform branching.
Is expo-healthkit free to use? What license does it have?
expo-healthkit is open source under the Other license. Check the license terms before using it in commercial products.
Is expo-healthkit still maintained?
Actively maintained. The last commit to expo-healthkit was on Oct 26, 2026.
What can I use expo-healthkit for?
Reading daily step counts, heart rate or sleep from a fitness app. Building health dashboards for weight, blood pressure or body composition trends. Writing workouts and samples recorded inside the app back to HealthKit or Health Connect. Syncing a user's health history to your own backend with anchored incremental queries. Showing Apple-only data such as ECGs or activity rings on iOS and hiding it on Android.
How do I install expo-healthkit?
Install the package with Expo: npx expo install @appeeky/expo-healthkit Add the config plugin to app.json or app.config.ts Rebuild native code and run on a development build: npx expo prebuild --clean
Where can I get expo-healthkit?
The source code and installation instructions are on GitHub: https://github.com/appeeky/expo-healthkit

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects