React Native HealthKit initialization error.
I installed it following the official docs.
But the moment I ran the official demo, it threw an error.
_reactNativeHealth.default.initHealthKit is not a function (it is undefined)
I’m genuinely speechless. How does even running an official example throw an error?
I found someone mentioning they hit the same error here: https://github.com/agencyenterprise/react-native-health/issues/404
Some recent version of rn changed the mechanism, lazyload modules, so require('react-native').NativeModules gives you a {} object, which means the AppleHealthKit exported from the react-native-health library is incomplete at runtime.
Open node_modules/react-native-health/index.js and you can see that’s exactly the case.
Following the code someone else posted in the thread, I still couldn’t get it working. Based on the underlying principle, I temporarily just fetched all the functions I needed manually, and then they were defined.
A temporary fix — I just cue them all, and it works. Whatever, this will do for now. Wait for the official fix.
The revised temporary approach looks like this:

import { Activities, Observers, Permissions, Units } from './src/constants'
const { AppleHealthKit } = require('react-native').NativeModules
const Kit = {
initHealthKit: AppleHealthKit["initHealthKit"],
isAvailable: AppleHealthKit["isAvailable"],
getBiologicalSex: AppleHealthKit["getBiologicalSex"],
getBloodType: AppleHealthKit["getBloodType"],
getDateOfBirth: AppleHealthKit["getDateOfBirth"],
getLatestWeight: AppleHealthKit["getLatestWeight"],
getWeightSamples: AppleHealthKit["getWeightSamples"],
saveWeight: AppleHealthKit["saveWeight"],
getLatestHeight: AppleHealthKit["getLatestHeight"],
getHeightSamples: AppleHealthKit["getHeightSamples"],
saveHeight: AppleHealthKit["saveHeight"],
getLatestWaistCircumference: AppleHealthKit["getLatestWaistCircumference"],
getWaistCircumferenceSamples: AppleHealthKit["getWaistCircumferenceSamples"],
saveWaistCircumference: AppleHealthKit["saveWaistCircumference"],
getLatestPeakFlow: AppleHealthKit["getLatestPeakFlow"],
getPeakFlowSamples: AppleHealthKit["getPeakFlowSamples"],
savePeakFlow: AppleHealthKit["savePeakFlow"],
saveLeanBodyMass: AppleHealthKit["saveLeanBodyMass"],
getLatestBmi: AppleHealthKit["getLatestBmi"],
getBmiSamples: AppleHealthKit["getBmiSamples"],
saveBmi: AppleHealthKit["saveBmi"],
getLatestBodyFatPercentage: AppleHealthKit["getLatestBodyFatPercentage"],
getBodyFatPercentageSamples: AppleHealthKit["getBodyFatPercentageSamples"],
getLatestLeanBodyMass: AppleHealthKit["getLatestLeanBodyMass"],
getLeanBodyMassSamples: AppleHealthKit["getLeanBodyMassSamples"],
getStepCount: AppleHealthKit["getStepCount"],
getSamples: AppleHealthKit["getSamples"],
getAnchoredWorkouts: AppleHealthKit["getAnchoredWorkouts"],
getDailyStepCountSamples: AppleHealthKit["getDailyStepCountSamples"],
saveSteps: AppleHealthKit["saveSteps"],
saveWalkingRunningDistance: AppleHealthKit["saveWalkingRunningDistance"],
getDistanceWalkingRunning: AppleHealthKit["getDistanceWalkingRunning"],
getDailyDistanceWalkingRunningSamples: AppleHealthKit["getDailyDistanceWalkingRunningSamples"],
getDistanceCycling: AppleHealthKit["getDistanceCycling"],
getDailyDistanceCyclingSamples: AppleHealthKit["getDailyDistanceCyclingSamples"],
getFlightsClimbed: AppleHealthKit["getFlightsClimbed"],
getDailyFlightsClimbedSamples: AppleHealthKit["getDailyFlightsClimbedSamples"],
getEnergyConsumedSamples: AppleHealthKit["getEnergyConsumedSamples"],
getProteinSamples: AppleHealthKit["getProteinSamples"],
getFiberSamples: AppleHealthKit["getFiberSamples"],
getTotalFatSamples: AppleHealthKit["getTotalFatSamples"],
saveFood: AppleHealthKit["saveFood"],
saveWater: AppleHealthKit["saveWater"],
getWater: AppleHealthKit["getWater"],
saveHeartRateSample: AppleHealthKit["saveHeartRateSample"],
getWaterSamples: AppleHealthKit["getWaterSamples"],
getHeartRateSamples: AppleHealthKit["getHeartRateSamples"],
getRestingHeartRate: AppleHealthKit["getRestingHeartRate"],
getWalkingHeartRateAverage: AppleHealthKit["getWalkingHeartRateAverage"],
getActiveEnergyBurned: AppleHealthKit["getActiveEnergyBurned"],
getBasalEnergyBurned: AppleHealthKit["getBasalEnergyBurned"],
getAppleExerciseTime: AppleHealthKit["getAppleExerciseTime"],
getAppleStandTime: AppleHealthKit["getAppleStandTime"],
getVo2MaxSamples: AppleHealthKit["getVo2MaxSamples"],
getBodyTemperatureSamples: AppleHealthKit["getBodyTemperatureSamples"],
getBloodPressureSamples: AppleHealthKit["getBloodPressureSamples"],
getRespiratoryRateSamples: AppleHealthKit["getRespiratoryRateSamples"],
getHeartRateVariabilitySamples: AppleHealthKit["getHeartRateVariabilitySamples"],
getHeartbeatSeriesSamples: AppleHealthKit["getHeartbeatSeriesSamples"],
getRestingHeartRateSamples: AppleHealthKit["getRestingHeartRateSamples"],
getBloodGlucoseSamples: AppleHealthKit["getBloodGlucoseSamples"],
getCarbohydratesSamples: AppleHealthKit["getCarbohydratesSamples"],
saveBloodGlucoseSample: AppleHealthKit["saveBloodGlucoseSample"],
saveCarbohydratesSample: AppleHealthKit["saveCarbohydratesSample"],
deleteBloodGlucoseSample: AppleHealthKit["deleteBloodGlucoseSample"],
deleteCarbohydratesSample: AppleHealthKit["deleteCarbohydratesSample"],
getSleepSamples: AppleHealthKit["getSleepSamples"],
getInfo: AppleHealthKit["getInfo"],
getMindfulSession: AppleHealthKit["getMindfulSession"],
saveMindfulSession: AppleHealthKit["saveMindfulSession"],
getWorkoutRouteSamples: AppleHealthKit["getWorkoutRouteSamples"],
saveWorkout: AppleHealthKit["saveWorkout"],
getAuthStatus: AppleHealthKit["getAuthStatus"],
getLatestBloodAlcoholContent: AppleHealthKit["getLatestBloodAlcoholContent"],
getBloodAlcoholContentSamples: AppleHealthKit["getBloodAlcoholContentSamples"],
saveBloodAlcoholContent: AppleHealthKit["saveBloodAlcoholContent"],
getDistanceSwimming: AppleHealthKit["getDistanceSwimming"],
getDailyDistanceSwimmingSamples: AppleHealthKit["getDailyDistanceSwimmingSamples"],
getOxygenSaturationSamples: AppleHealthKit["getOxygenSaturationSamples"],
getElectrocardiogramSamples: AppleHealthKit["getElectrocardiogramSamples"],
saveBodyFatPercentage: AppleHealthKit["saveBodyFatPercentage"],
saveBodyTemperature: AppleHealthKit["saveBodyTemperature"],
getEnvironmentalAudioExposure: AppleHealthKit["getEnvironmentalAudioExposure"],
getHeadphoneAudioExposure: AppleHealthKit["getHeadphoneAudioExposure"],
getClinicalRecords: AppleHealthKit["getClinicalRecords"],
getActivitySummary: AppleHealthKit["getActivitySummary"],
getInsulinDeliverySamples: AppleHealthKit["getInsulinDeliverySamples"],
saveInsulinDeliverySample: AppleHealthKit["saveInsulinDeliverySample"],
deleteInsulinDeliverySample: AppleHealthKit["deleteInsulinDeliverySample"],
}
// console.log("AppleHealthKit: ",AppleHealthKit, "Kit=", Kit);
export const HealthKit = Object.assign({}, AppleHealthKit, {
Constants: {
Activities,
Observers,
Permissions,
Units,
},
})
module.exports = HealthKit