Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/kingstinct/react-native-healthkit/llms.txt

Use this file to discover all available pages before exploring further.

Overview

Electrocardiogram (ECG) data is captured by Apple Watch and stored in HealthKit. ECG samples include classification, symptoms status, average heart rate, voltage measurements, and sampling frequency.

Functions

queryElectrocardiogramSamples

Query electrocardiogram samples with optional voltage data.
import { queryElectrocardiogramSamples } from '@kingstinct/react-native-healthkit';

const ecgs = await queryElectrocardiogramSamples({
  includeVoltages: true,
  limit: 20,
  ascending: false,
});

Parameters

options
ECGQueryOptionsWithSortOrder
Query options for ECG samples

Response

Returns a Promise resolving to an array of ElectrocardiogramSample objects.
interface ElectrocardiogramSample {
  readonly uuid: string;
  readonly startDate: Date;
  readonly endDate: Date;
  readonly classification: ElectrocardiogramClassification;
  readonly symptomsStatus: ElectrocardiogramSymptomsStatus;
  readonly averageHeartRateBpm?: number;
  readonly samplingFrequencyHz?: number;
  readonly numberOfVoltageMeasurements: number;
  readonly voltages?: ElectrocardiogramVoltage[];
}
Classification types:
  • notSet - No classification
  • sinusRhythm - Normal sinus rhythm
  • atrialFibrillation - AFib detected
  • inconclusiveLowHeartRate - Inconclusive due to low heart rate
  • inconclusiveHighHeartRate - Inconclusive due to high heart rate
  • inconclusivePoorReading - Inconclusive due to poor reading
  • inconclusiveOther - Inconclusive for other reasons
Symptoms status:
  • notSet - Not specified
  • none - No symptoms
  • present - Symptoms present

queryElectrocardiogramSamplesWithAnchor

Query ECG samples with anchor-based pagination for syncing data efficiently.
import { queryElectrocardiogramSamplesWithAnchor } from '@kingstinct/react-native-healthkit';

// Initial query
const { samples, deletedSamples, newAnchor } = await queryElectrocardiogramSamplesWithAnchor({
  includeVoltages: false,
  limit: 20,
});

// Subsequent query to get only changes
const nextResult = await queryElectrocardiogramSamplesWithAnchor({
  includeVoltages: false,
  limit: 20,
  anchor: newAnchor,
});

Parameters

options
ECGQueryOptionsWithAnchor
Query options with anchor support

Response

interface ElectrocardiogramSamplesWithAnchorResponse {
  readonly samples: readonly ElectrocardiogramSample[];
  readonly deletedSamples: readonly DeletedSample[];
  readonly newAnchor: string;
}
samples
ElectrocardiogramSample[]
New or modified ECG samples since the last anchor
deletedSamples
DeletedSample[]
Samples that were deleted since the last anchor
newAnchor
string
Base64-encoded anchor to use for the next query

Usage Example

import { 
  queryElectrocardiogramSamples,
  requestAuthorization 
} from '@kingstinct/react-native-healthkit';

// Request authorization first
await requestAuthorization({ 
  toRead: ['HKCategoryTypeIdentifierElectrocardiogram'] 
});

// Query ECG samples with voltage data
const ecgs = await queryElectrocardiogramSamples({
  includeVoltages: true,
  limit: 20,
});

ecgs.forEach((ecg) => {
  console.log(`Classification: ${ecg.classification}`);
  console.log(`Average HR: ${ecg.averageHeartRateBpm} BPM`);
  console.log(`Voltage measurements: ${ecg.numberOfVoltageMeasurements}`);
  
  if (ecg.voltages) {
    ecg.voltages.forEach((v) => {
      console.log(`Time: ${v.timeSinceSampleStart}s, Voltage: ${v.voltage}V`);
    });
  }
});

See Also

Build docs developers (and LLMs) love