Apple HealthKit vs Google Health Connect (2026)
Last verified October 2, 2026 · 7 min read
Sources checked (19) · October 2, 2026
- developer.apple.com/documentation/healthkit — HealthKit as the central repository on iPhone and Apple Watch; framework platforms
- developer.apple.com/documentation/healthkit/about-the-healthkit-framework — a store per device (iPadOS 17+), sync between devices, no store on macOS or older iPadOS, characteristic data
- developer.apple.com/documentation/healthkit/authorizing-access-to-health-data — per-type read and share permission, asking when needed, denied reads, the limited-history screen
- developer.apple.com/documentation/healthkit/hkhealthstore/authorizationstatus(for:) — "simply appears as if there is no data" quote; own data stays visible
- developer.apple.com/documentation/healthkit/hkhealthstore/earliestauthorizedsampledate(for:) — limited history window detectable from iOS 27; full and denied access look the same
- developer.apple.com/documentation/xcode/configuring-healthkit-access — purpose strings as an App Store requirement; Clinical Health Records capability and FHIR
- developer.apple.com/documentation/healthkit/hkquantitytypeidentifier — quantity types named in the HealthKit section; heartRateVariabilityRMSSD is iOS 27+
- developer.apple.com/documentation/healthkit/hkcategoryvaluesleepanalysis — core, deep and REM sleep stages
- developer.apple.com/help/account/reference/supported-capabilities-ios — HealthKit capability available to free and paid developer accounts; App Store distribution is paid-program only
- developer.apple.com/app-store/review/guidelines/ — guideline 5.1.1 purpose strings and data minimization (last updated June 8, 2026)
- developer.android.com/health-and-fitness/health-connect/availability — exclusive to Android and Google Play; Android 9+ with Play services; framework module on Android 14
- developer.android.com/health-and-fitness/health-connect/get-started — declare permissions in the manifest before requesting; app vs framework by Android version
- developer.android.com/health-and-fitness/health-connect/data-types — 42 record types and their categories; history and background-read permissions
- developer.android.com/health-and-fitness/health-connect/read-data — 30-day default window; no limit on an app's own data on Android 14+
- developer.android.com/reference/kotlin/androidx/health/connect/client/permission/HealthPermission — what reads do without PERMISSION_READ_HEALTH_DATA_HISTORY
- developer.android.com/health-and-fitness/health-connect/publish — Health apps declaration, refiled when data types change
- developer.android.com/health-and-fitness/health-connect/migration/fit — Fit end-of-support quote (revision of September 10, 2026); device-centric storage; registration; server-to-server path
- developer.android.com/health-and-fitness/health-connect/migration/fit/faq — "a growing ecosystem of apps with just one connection"
- developer.android.com/health-and-fitness/guides/health-connect — Jetpack library 1.1.0 stable; medical records in FHIR
Covered here:HealthKitHealth Connect
How these two compare#
These are platform SDKs, not cross-platform APIs, so the criteria are different from picking a wearable or aggregator service. Four things decide how each one behaves in your app:
- Platform lock. HealthKit data exists only on Apple devices, and Google describes Health Connect as "exclusive to Android and Google Play." Both are read on the device: Apple gives iPhone, Apple Watch, Vision Pro and iPadOS 17+ iPads their own HealthKit store and syncs between them, while Google's Fit migration guide calls Health Connect's storage device-centric and points server-to-server integrations at the separate Google Health API. This is why they are complementary, not competing.
- Permission model. Both use on-device, per-data-type user permission, granted (or denied) per type and per direction — read and write are separate. Health Connect needs every permission declared in the manifest before you request it; HealthKit lets you ask for a type when you first need it rather than all at once. Neither uses an OAuth consent screen. That changes your onboarding UX: the user is toggling individual data types, not approving a single scope.
- History and approval friction. Health Connect returns data from up to 30 days before the first permission grant unless you hold the history permission, and the Play Console requires a Health apps declaration before you publish. HealthKit now lets a person grant only a recent window of history instead of everything — Apple's authorization flow asks on a second screen — and Apple calls the HealthKit purpose strings "an App Store requirement for any app that integrates with HealthKit."
- The "denied reads as empty" gotcha. A HealthKit app cannot tell whether the user denied read permission for a type — Apple says it "simply appears as if there is no data of the requested type in the HealthKit store," apart from samples your own app saved. Full access and denied access also look identical; only a limited history window is detectable, through
earliestAuthorizedSampleDate(for:)on iOS 27 and later. That directly complicates data-completeness logic.
HealthKit vs Health Connect at a glance#
| Apple HealthKit | Google Health Connect | |
|---|---|---|
| Platform | iPhone, Apple Watch, Vision Pro, iPad on iPadOS 17+ (the framework compiles for macOS and older iPadOS, but those have no store) | Android 9+ with Google Play services: built into Android 14+, a Google Play app on Android 13 and lower |
| Where data lives | A store on each of the user's Apple devices, synced between them | On-device ("device-centric" in Google's words) |
| Access model | Per-data-type OS permission (not OAuth) | Per-data-type OS permission (not OAuth) |
| Developer setup | HealthKit capability in Xcode, available to free Apple Developer accounts; App Store distribution needs the paid Apple Developer Program | A Play Store project plus the Health apps declaration — no Google Cloud project, unlike Fit |
| History default | Full history, unless the person grants only a recent window | 30 days before the first grant, unless the history permission is granted |
| Approval step | App Review; purpose strings are an App Store requirement | Play Console Health apps declaration, filed again when your data types change |
| Best for | Apple Watch and iPhone health data on Apple platforms | One on-device store fed by other Android apps |
| Watch out | Cannot detect a denied read | Older reads capped by default; declaration gate |
Apple HealthKit#
HealthKit is best for iOS-native apps that want the health data iPhone and Apple Watch already collect, with the tightest OS-level privacy integration. Apple describes it as "a central repository for health and fitness data on iPhone and Apple Watch" that your app reads from and writes to with the user's permission. Its type catalogue covers steps, distance, active and basal energy, heart rate, HRV (SDNN, plus RMSSD from iOS 27), respiratory rate, blood oxygen, VO2 max, sleep stages (core, deep and REM), workouts, body measurements and characteristics such as date of birth — plus clinical records in FHIR format behind a separate Clinical Health Records capability. Access is on-device and per-data-type: you add the HealthKit capability, set the NSHealthShareUsageDescription and NSHealthUpdateUsageDescription purpose strings, and call requestAuthorization(toShare:read:) — Apple notes it can make more sense to wait until you need a type before asking for it. The trade-off to know is a deliberate privacy design decision: an app cannot tell whether read permission was denied, because denied data reads as empty rather than raising an error, and a person can also limit you to a recent window of their history. Plan your data-completeness and empty-state handling around both. The HealthKit capability itself is available even to free Apple Developer accounts, per Apple's capability table; shipping on the App Store needs the paid Apple Developer Program.
Google Health Connect#
Health Connect is best for Android-native apps that want one on-device store fed by the other health apps on the phone, rather than a per-provider integration for each — Google pitches it as access to "a growing ecosystem of apps with just one connection." It needs Android 9 or later with Google Play services; it is part of the Android framework from Android 14 and a Google Play app on Android 13 and lower. Google's data-types table lists 42 record types (as of its September 23, 2026 revision) across activity, body measurement, cycle tracking, nutrition, sleep with stages, vitals such as heart rate and HRV (stored as RMSSD) and wellness, plus a separate medical-records feature in FHIR format, all through the androidx.health.connect:connect-client Jetpack library, whose 1.1.0 release Google announces as stable. Permissions are declared in the manifest and granted by the user per type, with dedicated background-read and history-read permissions — again, no OAuth consent screen. Two constraints shape your build: by default an app sees data from up to 30 days before its first permission grant unless it holds PERMISSION_READ_HEALTH_DATA_HISTORY, and the Play Console requires a Health apps declaration listing every data type you use before you publish. Do not start new work on Google Fit. Google's Fit migration guide, updated September 10, 2026, cautions that "The Google Fit API (including the REST API) will only be supported until the end of 2026." Google recommends Health Connect for step tracking and mobile-first apps and the Google Health API for cloud-based integrations, and the guide maps Fit History and Session API integrations to the Google Health API, not to Health Connect.
Which should you pick?#
Frame this by platform, not by picking a winner — for most builders the honest answer is "both":
- If your app is iOS-only → implement HealthKit, and design your empty-state and data-completeness logic around the fact that you cannot detect a denied read.
- If your app is Android-only → implement Health Connect, request the history permission if you need data from more than 30 days before the first grant, and budget time for the Play Console Health apps declaration.
- If your app is cross-platform → you implement both, one per OS. Apple's HealthKit runs only on Apple platforms and Google calls Health Connect exclusive to Android, so each is the native surface for its own OS. In React Native, the comparison of react-native-health and @kingstinct/react-native-healthkit covers the two bridges to the HealthKit half.
- If you don't want to build and maintain two native integrations → compare the third-party aggregator APIs instead. What each one covers and costs is a vendor claim, sourced and dated on that page; this page checks only Apple's and Google's documentation.
The key takeaway: HealthKit vs Health Connect is not a competition you have to resolve. They cover different operating systems, so a real cross-platform product uses each on its own OS, or offloads both to an aggregator. See our wearable data APIs guide if your real need is pulling from specific devices rather than the OS store. To look up the Health Connect record for a given HealthKit identifier, or the reverse, use the identifier translator.
Watch the fine print#
Platform details in this category move — SDK versions, permission names, history defaults and review policies all change; HealthKit's limited-history authorization is a recent example. Every fact above was checked on October 2, 2026 against the Apple and Google pages listed in this page's sources. Confirm current behavior in Apple's HealthKit documentation and Android's Health Connect documentation before you build, especially the permission and review requirements that gate your launch.
Frequently asked questions
- Is HealthKit or Health Connect better for a cross-platform app?
- Neither on its own. They cover different operating systems, so a cross-platform app implements both — HealthKit on Apple platforms and Health Connect on Android — or hands the work to a third-party aggregator, whose coverage you should check against that vendor's own documentation.
- What review or declaration steps do HealthKit and Health Connect require before launch?
- Both gate your release on a declaration, not just on code. On Apple platforms you add the HealthKit capability and the purpose strings that explain why you read and write health data — Apple calls them an App Store requirement for any HealthKit app — and App Review Guideline 5.1.1 asks that purpose strings clearly and completely describe your use of the data and that you request only data relevant to your core functionality. On Android you declare Health Connect permissions in the manifest, and the Play Console requires a Health apps declaration that justifies each data type before you can publish; you file it again whenever your data types change. Budget calendar time for both, request only the types you can justify, and confirm current review policy before you submit.
- Can a HealthKit app tell if the user denied read access?
- No. By design, denied read permission in HealthKit returns empty data rather than an error, so the app cannot distinguish a denial from a user who simply has no recorded data — which complicates data-completeness logic. The one exception is data your own app saved, which stays readable either way.
- How much history can Health Connect read by default?
- Data from up to 30 days before the app's first permission grant, unless it holds PERMISSION_READ_HEALTH_DATA_HISTORY. Without it, Google's Jetpack reference says reading a single older record by ID errors, while other reads simply leave the older data points out. On Android 14 and later an app can always read the data it wrote itself, whatever its age.
- Are HealthKit and Health Connect free?
- Neither setup involves an API key or a billing account. HealthKit is a capability you switch on in Xcode, and Apple's capability table lists it for free Apple Developer accounts as well as paid ones — although distributing on the App Store requires the paid Apple Developer Program. Health Connect's registration is a Play Store project plus the Health apps declaration, which Google contrasts with the Google Cloud project Fit required. The real cost is platform lock: HealthKit is Apple-only and Health Connect is Android-only.
Keep reading
Elsewhere on the site
Pages that share this one’s concepts and sources, from other sections.
Next steps
Was this page useful?
Independent comparison, last reviewed October 2, 2026. Pricing, rate limits, and feature availability change often — confirm current details in each provider’s official documentation before you commit. Product and company names are trademarks of their respective owners; AIFitnessAPI is not affiliated with, endorsed by, or sponsored by any product listed here.
← All fitness apis · by AIFitnessAPI