Apple HealthKit gives your fitness or wellness app access to over 100 health data types that users already track. Steps, heart rate, sleep patterns, workouts, nutrition - data your users collect daily, available through a single API. The catch: integrating HealthKit in React Native requires navigating native modules, Expo limitations, and Apple's strict privacy requirements.
We build mobile health apps with Expo, and HealthKit integration is one of the most common requests from healthtech founders. This guide covers library selection, permission handling, data fetching patterns, and compliance considerations.
The Two Library Options Worth Considering
react-native-health: Maintained by AE Studio, mature and battle-tested, supports background observers for real-time updates. Uses older callback patterns.
@kingstinct/react-native-healthkit: TypeScript-first with Promise-based APIs, Swift-based using react-native-nitro-modules for better performance. Newer but actively maintained.
Our Recommendation: For new projects, we lean toward @kingstinct/react-native-healthkit for its TypeScript-first approach. Both require Expo development builds - Expo Go won't work.
Expo Development Builds Are Required
Neither HealthKit library works with Expo Go. HealthKit requires native code that Expo Go doesn't include. You need a development build - your own custom version of Expo Go that includes the native modules your app needs.
Understanding HealthKit Data Types
Quantity Types: Steps, heart rate, active energy, distance walking/running, height/weight. Category Types: Sleep analysis, mindful minutes, menstrual cycle. Workout Types: Running, cycling, swimming with duration and energy burned. Characteristic Types: Date of birth, biological sex, blood type.
Requesting Permissions Correctly
HealthKit permissions are granular. Users grant read and write access separately. Critical: You Cannot Check Read Permissions. Apple treats read permission status as sensitive information. You must attempt the read and handle empty results gracefully.
Request permissions contextually, not at app launch. Users are more likely to grant access when they understand why you need it.
Privacy and App Store Compliance
App Store Guideline 5.1.3: Health data cannot be used for advertising, marketing, or data mining. Apps must provide a privacy policy. Data cannot be sold to third parties.
Required Info.plist entries with clear descriptions are mandatory. Generic descriptions like "to improve your experience" will get rejected in App Store review.
Common Integration Mistakes
- Requesting all permissions at launch - users reject broad requests they don't understand
- Assuming permissions persist - iOS can revoke permissions anytime
- Not handling empty results - users may grant permission but have no data
- Ignoring data source attribution - HealthKit data comes from multiple sources
- Not testing background delivery delays - some data types only update hourly
Key Takeaways
Choose your library based on needs. Development builds are mandatory - Expo Go won't work. Request permissions contextually. You cannot check read permissions - handle missing data gracefully. Test on real devices. Plan for Android separately (HealthKit is iOS-only).
At NextBuild, we build mobile health and fitness apps with Expo and React Native. If you're planning a project that needs HealthKit integration, let's discuss your technical approach.



