Skip to content

xmartlabs/react-native-health-link

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

react-native-health-link

Warning

This module is currently in alpha. While it provides core functionality, it is still under active development and may contain bugs.

A simple way to work with HealthKit on iOS and Health Connect on Android in React Native. Access health data like steps, sleep, and more with one interface that unifies react-native-health and react-native-health-connect.

Installation

To install and setup this package, please refer to the installation guide.

Supported Health Data Types

This library supports reading and writing the following health data types:

Read & Write Support

  • Blood glucose - Blood glucose levels with support for mg/dL and mmol/L units
  • Weight - Body weight with support for kg, grams, and pounds
  • Height - Body height with support for cm, meters, feet, and inches
  • Heart rate - Heart rate measurements in beats per minute
  • Steps - Daily step count

Read Only Support

  • Resting heart rate - Resting heart rate measurements
  • Blood pressure - Systolic and diastolic blood pressure readings
  • Oxygen saturation - Blood oxygen saturation percentage
  • Active Energy Burned - The amount of energy expended during a specific activity.
  • Basal Energy Burned - The amount of energy expended at rest.

Usage

import { useState } from 'react';
import { Text } from 'react-native';
import {
  initializeHealth,
  HealthLinkDataType,
  HealthLinkPermissions,
  read,
  write,
  BloodGlucoseUnit,
  WeightUnit,
  HeighUnit
} from 'react-native-health-link';

initializeHealth({
  read: [HealthLinkPermissions.BloodGlucose],
  write: [HealthLinkPermissions.BloodGlucose],
});

export default function App() {
  const [bloodGlucose, setBloodGlucose] = useState<number | undefined>();
  const [weight, setWeight] = useState<number | undefined>();

  // Reading health data
  read(HealthLinkDataType.BloodGlucose, {
    unit: BloodGlucoseUnit.MmolPerL,
    startDate: new Date('2025-01-01').toISOString(),
  }).then((data) => {
    setBloodGlucose(data[0]?.value);
  });

  read(HealthLinkDataType.Weight, {
    unit: WeightUnit.Kg,
    startDate: new Date('2025-01-01').toISOString(),
  }).then((data) => {
    setWeight(data[0]?.value);
  });

  //Writing health data
  write(HealthLinkDataType.BloodGlucose, {
    value: 4.5,
    unit: BloodGlucoseUnit.MmolPerL,
  });

  write(HealthLinkDataType.Height, {
    value: 175,
    unit: HeighUnit.Cm,
  });

  return (
    <>
      <Text>Your blood glucose is {bloodGlucose} mmol/L</Text>
      <Text>Your weight is {weight} kg</Text>
    </>
  );
}

Documentation

SDK functions:

initializeHealth

isAvailable

Data functions:

read

write

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT

Acknowledgements

This library provides a common interface to simplify cross-platform use of health tools; most of the credit goes to react-native-health and react-native-health-connect.

Made with create-react-native-library


Xmartlabs Logo

Created with ❤️ by Xmartlabs