Skip to content

29ki/react-native-health-connect

 
 

Repository files navigation

React Native Health Connect


This library is a wrapper around Health Connect for react native. Health Connect is an Android API and platform. It unifies data from multiple devices and apps into an ecosystem. For Android developers, it provides a single interface for reading and writing a user’s health and fitness data. For Android users, it offers a place for control over which apps have read and/or write access to different types of data. Health Connect also provides on-device storage. Read more here.

Requirements

  • Health Connect needs to be installed on the user's device, However the goal is to have this app preinstalled on Android devices in the future.
  • Health Connect API requires minSdkVersion=26 (Android Oreo / 8.0).

Installation

Install react-native-health-connect by running:

yarn add react-native-health-connect@latest

Since this module is Android-only, you do not need to run pod install.

Expo installation

This package cannot be used in the Expo Go app, but it can be used with custom managed apps. Just add the config plugin to the plugins array of your app.json or app.config.js:

First install the package with yarn, npm, or expo install.

expo install react-native-health-connect

Then add the prebuild config plugin to the plugins array of your app.json or app.config.js:

{
  "expo": {
    "plugins": ["react-native-health-connect"]
  }
}
  • Edit your app.json again and add this
{
  "expo": {
    ...
    "plugins": [
      [
        "expo-build-properties",
        {
          "android": {
            "compileSdkVersion": 34,
            "targetSdkVersion": 34,
            "minSdkVersion": 26
          },
        }
      ]
    ]
   ...
  }
}

Then rebuild the native app:

  • Run expo prebuild
  • Rebuild the app
    • yarn android -- Build on Android.

If the project doesn't build correctly with yarn android, please file an issue and try setting the project up manually.

Finally create a new EAS development build

eas build --profile development --platform android

Example

A quick example at a glance:

import {
  initialize,
  requestPermission,
  readRecords,
} from 'react-native-health-connect';

const readSampleData = async () => {
  // initialize the client
  const isInitialized = await initialize();

  // request permissions
  const grantedPermissions = await requestPermission([
    { accessType: 'read', recordType: 'ActiveCaloriesBurned' },
  ]);

  // check if granted

  const result = await readRecords('ActiveCaloriesBurned', {
    timeRangeFilter: {
      operator: 'between',
      startTime: '2023-01-09T12:00:00.405Z',
      endTime: '2023-01-09T23:53:15.405Z',
    },
  });
  // {
  //   result: [
  //     {
  //       startTime: '2023-01-09T12:00:00.405Z',
  //       endTime: '2023-01-09T23:53:15.405Z',
  //       energy: {
  //         inCalories: 15000000,
  //         inJoules: 62760000.00989097,
  //         inKilojoules: 62760.00000989097,
  //         inKilocalories: 15000,
  //       },
  //       metadata: {
  //         id: '239a8cfd-990d-42fc-bffc-c494b829e8e1',
  //         lastModifiedTime: '2023-01-17T21:06:23.335Z',
  //         clientRecordId: null,
  //         dataOrigin: 'com.healthconnectexample',
  //         clientRecordVersion: 0,
  //         device: 0,
  //       },
  //     },
  //   ],
  // }
};

Alternatives

For iOS there are two alteranatives you can use which is very similar to Health Connect on Android. First one is @kingstinct/react-native-healhkit and the other one is react-native-health. These options are similar in functionality and can help you manage your health data on iOS.

Documentation

More examples and full documentation can be found here

Features

  • Typescript ✅
  • Supports both old and new architecture ✅

License

MIT

Releases

No releases published

Packages

No packages published

Languages

  • Kotlin 64.3%
  • TypeScript 26.1%
  • Java 3.7%
  • Shell 1.9%
  • JavaScript 1.2%
  • Objective-C 1.2%
  • Other 1.6%