An open-source framework for building universal native apps with React that run on Android, iOS, and the web.
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
Install the package with Expo
npx expo install @appeeky/expo-healthkit - 2
Add the config plugin to app.json or app.config.ts
- 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
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
Official AI agent skills from the Expo team that teach coding agents how to build, deploy, upgrade and debug Expo apps.
Lottie and dotLottie splash screens for React Native that play natively from app launch, before the JavaScript bundle loads.
Cherry Studio's mobile app for iOS and Android, for chatting with multiple AI models, running agents, connecting MCP tools, and generating images.
An unofficial, mobile-first React Native client for the Bangumi anime, manga, and game tracking site, for Android and iOS.
A framework for building native Android and iOS apps using React, with JavaScript UI rendered by native platform components.