Open-source health and fitness libraries
20 packages (9 npm, 4 pub.dev, 7 PyPI) · 5 comparisons · registries read 2026-10-03
React Native
HealthKit and Health Connect are separate stores with separate bridges: a React Native app that ships on both platforms usually installs one package per platform.
React Native health data libraries: how to choose, and the platform rules they inherit →
| Package | Wraps | Latest | Published | Licence | Registry status |
|---|---|---|---|---|---|
| react-native-healthnpm | Apple HealthKit | 1.19.0 | 2024-10-15no release in the 718 days to our read | MIT | — |
| @kingstinct/react-native-healthkitnpm | Apple HealthKit | 16.0.0 | 2026-09-18no release in the 15 days to our read | MIT | — |
| react-native-health-connectnpm | Health Connect | 4.1.3 | 2026-08-06no release in the 58 days to our read | MIT | — |
| expo-health-connectnpm | — | 0.1.1 | 2024-07-31no release in the 794 days to our read | MIT | Deprecated (registry) |
| react-native-google-fitnpm | Google Fit | 0.22.1 | 2025-10-08no release in the 360 days to our read | MIT | — |
Capacitor and Cordova
Three of these four plugins cover both stores behind one API. The Cordova plugin also documents a manual setup for Capacitor projects.
Capacitor and Cordova health plugins: how to choose, and the platform rules they inherit →
| Package | Wraps | Latest | Published | Licence | Registry status |
|---|---|---|---|---|---|
| capacitor-healthnpm | Apple HealthKit, Health Connect | 8.4.0 | 2026-09-23no release in the 10 days to our read | MIT | — |
| @capgo/capacitor-healthnpm | Apple HealthKit, Health Connect | 8.11.4 | 2026-09-22no release in the 11 days to our read | MPL-2.0 | — |
| @perfood/capacitor-healthkitnpm | Apple HealthKit | 1.3.2 | 2025-02-13no release in the 597 days to our read | MIT | — |
| cordova-plugin-healthnpm | Apple HealthKit, Health Connect | 3.3.0 | 2026-09-26no release in the 7 days to our read | MIT | — |
Flutter
Two cross-platform plugins and two single-store ones (one iOS-only, one Android-only); compare the release dates before choosing.
Flutter health data packages: how to choose, and the platform rules they inherit →
| Package | Wraps | Latest | Published | Licence | Registry status |
|---|---|---|---|---|---|
| healthpub.dev | Apple HealthKit, Health Connect | 13.3.2 | 2026-08-14no release in the 50 days to our read | MIT | — |
| health_connectorpub.dev | Apple HealthKit, Health Connect | 3.11.1 | 2026-09-16no release in the 17 days to our read | MIT | — |
| health_kit_reporterpub.dev | Apple HealthKit | 2.3.1 | 2024-12-12no release in the 660 days to our read | MIT | — |
| flutter_health_connectpub.dev | Health Connect | 1.2.3 | 2023-03-08no release in the 1,305 days to our read | MIT | — |
Python
Clients for vendor web APIs rather than on-device stores — for scripts, back ends and personal data exports. Each page says how the client signs in, according to its README.
Python libraries for fitness APIs: how to choose, and the platform rules they inherit →
| Package | Wraps | Latest | Published | Licence | Registry status |
|---|---|---|---|---|---|
| garminconnectPyPI | Garmin Connect | 0.3.17 | 2026-09-29no release in the 4 days to our read | MIT | — |
| garthPyPI | Garmin Connect | 0.8.0 | 2026-03-28no release in the 189 days to our read | MIT | Inactive (PyPI classifier) |
| stravalibPyPI | Strava API | 2.6.0 | 2026-08-27no release in the 37 days to our read | Apache-2.0 | — |
| oura-ringPyPI | Oura API | 1.0.1 | 2026-06-22no release in the 103 days to our read | MIT | — |
| ouraPyPI | Oura API | 1.3.0 | 2024-04-23no release in the 893 days to our read | MIT License | — |
| fitbitPyPI | Fitbit Web API | 0.3.1 | 2019-05-24no release in the 2,689 days to our read | Apache 2.0 | — |
| withings-apiPyPI | Withings API | 2.4.0 | 2022-02-08no release in the 1,698 days to our read | MIT | — |
Side-by-side comparisons
Only for packages that answer the same need on the same platform. Facts from the registries, points from each README, and no winner row.
- react-native-health vs @kingstinct/react-native-healthkit →react-native-health vs @kingstinct/react-native-healthkit for HealthKit in React Native: release dates, peer dependencies, API style and README caveats.
- capacitor-health vs @capgo/capacitor-health →capacitor-health vs @capgo/capacitor-health: two Capacitor plugins for HealthKit and Health Connect. Licences, release dates and README-documented limits.
- Flutter health vs health_connector →Flutter's health package vs health_connector for HealthKit and Health Connect: release history, SDK floors, licences and what each README documents.
- garminconnect vs garth →garminconnect vs garth for Garmin Connect in Python: garth is deprecated and garminconnect dropped it in 0.3.0. Registry dates, status and migration.
- oura-ring vs oura (python-ouraring) →oura-ring vs oura (python-ouraring) for the Oura API in Python: OAuth2 support, the personal-access-token change, maintenance notes, release dates.
The native layer and the release record
- HealthKit integration guide →What every iOS wrapper here calls into, and the behaviour no wrapper can hide.
- Health Connect integration guide →The Android API the Health Connect wrappers sit on: permissions, records, history.
- SDK release tracker →Tagged GitHub releases for the main bridges, refreshed daily from the GitHub API.
Questions
- Which React Native library should I use for HealthKit and Health Connect?
- There is no single React Native package for both stores on this list: the HealthKit bridges (react-native-health, @kingstinct/react-native-healthkit) are iOS only and react-native-health-connect is Android only, so a cross-platform React Native app installs one of each. Capacitor and Flutter, by contrast, each have plugins that cover both stores behind one API.
- How are the libraries on this page chosen and kept current?
- Each package was confirmed to exist in its registry and to wrap a health store or a fitness vendor API before it was added; placeholders and empty packages were left out. A script reads npm, pub.dev, PyPI and GitHub weekly and refuses to publish if any package fails to resolve, so a version or a deprecation reaches these pages within about a week of the registry stating it.
- Why does this page show release dates instead of saying whether a library is maintained?
- Because a date is a fact and a verdict is an opinion. A HealthKit bridge over a stable API can go a long time between releases and still work; a fast release cadence can mean the API underneath is churning. Where a project says something about its own status — deprecated, inactive, feature-frozen, looking for a maintainer — the package page quotes it.
Read by scripts/fetch-libraries.mjs from the npm registry, pub.dev, PyPI and the packages’ repositories, and refreshed weekly. The list is curated, not exhaustive: packages that were placeholders, empty, or had no repository were left out. README notes on each page were checked on 2026-10-03. Compiled by AIFitnessAPI, which publishes none of these packages.