Sitemap

Integrating Health Connect in Android + React Native Apps

3 min readDec 1, 2025

--

Health Connect is Google’s unified API for managing health and fitness data on Android.
Instead of working with multiple SDKs, you can now use one standard interface to read and write health metrics such as steps, heart rate, workouts, calories, sleep, and much more.

Why Health Connect?

  • One central location for all health data.
  • Compatible with major apps and devices.
  • User-controlled permissions to ensure privacy.
  • Secure storage protected by device lock.

Note: Health Connect is available only on Android. iOS uses HealthKit, which is not related.

Prerequisites

  • A React Native project set up (0.71+ is recommended).
  • Android Studio is installed.
  • A device or emulator running Android 13 or higher (the Health Connect app is needed on Android 13).
  • Screen lock is enabled on the device.

1. Installing Health Connect

  • For Android 13 (API 33) and lower: Download the Health Connect app from the Play Store.
  • For Android 14 and above: Health Connect is already included.
  • Tip: Check availability with:
import { isAvailable } from "react-native-health-connect";
const available = await isAvailable();

2. Add SDK Dependency

Add the following in app/build.gradle:
dependencies {
implementation "androidx.health.connect:connect-client:1.1.0-alpha11"
}

3. Configure Permissions

  • Include necessary permissions in AndroidManifest.xml.
  • Example for heart rate and steps:
<!-- TODO: Required to specify which Health Connect permissions the app can request -->
<uses-permission android:name="android.permission.health.READ_HEART_RATE"/>
<uses-permission android:name="android.permission.health.WRITE_HEART_RATE"/>
<uses-permission android:name="android.permission.health.READ_STEPS"/>
<uses-permission android:name="android.permission.health.WRITE_STEPS"/>
<uses-permission android:name="android.permission.health.READ_EXERCISE"/>
<uses-permission android:name="android.permission.health.WRITE_EXERCISE"/>
<uses-permission android:name="android.permission.health.READ_TOTAL_CALORIES_BURNED"/>
<uses-permission android:name="android.permission.health.WRITE_TOTAL_CALORIES_BURNED"/>
<uses-permission android:name="android.permission.health.READ_WEIGHT"/>
<uses-permission android:name="android.permission.health.WRITE_WEIGHT"/>
<!-- TODO: declare Health Connect visibility -->
<queries>
<package android:name="com.google.android.apps.healthdata" />
</queries>
<!-- TODO: Add intent filter to handle permission rationale intent -->
<!-- Permission handling for Android 13 and before -->
<intent-filter>
<action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE" />
</intent-filter>
<!-- Permission handling for Android 14 and later -->
<intent-filter>
<action android:name="android.intent.action.VIEW_PERMISSION_USAGE"/>
<category android:name="android.intent.category.HEALTH_PERMISSIONS"/>
</intent-filter>
  • Tip: Each data type requires explicit read and write permissions.
  • Android 14 and above require an activity-alias for the permission rationale.

4. Update MainActivity.kt

  • React Native requires a permission delegate:
HealthConnectPermissionDelegate.setPermissionDelegate(this)
  • Place it inside the onCreate() of MainActivity.

5. Build Configurations

  • Minimum SDK version: 26
  • Compile SDK version: 35+
minSdkVersion 26
compileSdkVersion 35

6. Using Health Connect in React Native

Get Tapan kumar Swain’s stories in your inbox

Join Medium for free to get updates from this writer.

Request Permissions

import { requestPermission } from "react-native-health-connect";
await requestPermission([
{ accessType: "read", recordType: "Steps" },
{ accessType: "write", recordType: "HeartRate" }
]);

Read Records

import { readRecords } from "react-native-health-connect";
const steps = await readRecords("Steps");

Write Records

import { writeRecords } from "react-native-health-connect";
await writeRecords("HeartRate", [{ value: 72, startTime: new Date() }]);

Tip: Always check if you have permission before reading or writing.

7. Common Issues & Fixes

Press enter or click to view image in full size

8. Tips & Best Practices

  • Test on actual devices; emulators have limited support.
  • Encourage users to enable a screen lock.
  • Always handle denied permissions in a user-friendly way.
  • Consider batching reads and writes to minimize unnecessary API calls.
  • Respect user privacy; never send raw health data to outside servers without consent.

9. References

--

--