Introduction
The Open Wearables Flutter SDK (open_wearables_health_sdk) enables secure background synchronization of health data from Apple HealthKit (iOS), Samsung Health, and Health Connect (Android) to the Open Wearables platform.
On iOS, the Flutter SDK is a wrapper around the native iOS SDK (OpenWearablesHealthSDK). On Android, it wraps the native Android SDK (open-wearables-android-sdk). This means all the core sync logic — background execution, streaming uploads, secure storage, and retry mechanisms — is handled by the native implementations under the hood. The Flutter layer provides a convenient Dart API for cross-platform apps.
Flutter SDK Repository
View source code, report issues, and contribute to the Flutter SDK.
Native iOS SDK
See the native iOS SDK documentation for the underlying iOS implementation.
Native Android SDK
See the native Android SDK documentation for the underlying Android implementation.
Features
- Cross-Platform - Single Dart API for iOS (HealthKit) and Android (Samsung Health, Health Connect)
- Background Sync - Health data syncs even when your app is in the background
- Incremental Updates - Only syncs new data using anchored queries
- Secure Storage - Credentials stored in iOS Keychain / Android EncryptedSharedPreferences
- Dual Authentication - Token-based auth with auto-refresh or API key authentication
- Resumable Sessions - Sync sessions survive app restarts
- Wide Data Support - Steps, heart rate, workouts, sleep, and 40+ data types
- Provider Selection - Choose between Samsung Health and Health Connect on Android
Requirements
- iOS
- Android
- Flutter
| Requirement | Details |
|---|---|
| iOS Version | iOS 15.0+ |
| Xcode | Xcode 14+ |
| Apple Developer Account | Required for HealthKit entitlement |
| HealthKit Capability | Must be enabled in Xcode |
| Physical Device | HealthKit doesn’t work in iOS Simulator |
Installation
iOS Configuration
Add the following to your Then enable HealthKit capability in Xcode:
ios/Runner/Info.plist:- Open
ios/Runner.xcworkspacein Xcode - Select your target → Signing & Capabilities
- Click + Capability → Add HealthKit
- Check Background Delivery if you want updates while app is closed
Quick Start
Here’s the minimal code to get health sync working:Android Provider Selection
On Android, you need to select a health data provider before requesting permissions:AndroidHealthProvider.samsungHealth maps to Samsung Health, and AndroidHealthProvider.healthConnect maps to Google Health Connect. Use getAvailableProviders() to check which are installed on the device.Log Level
Control SDK log output withsetLogLevel. The default is OWLogLevel.debug (logs only in debug builds):
| Level | Description |
|---|---|
OWLogLevel.none | No logs at all |
OWLogLevel.always | Logs are always printed regardless of build mode |
OWLogLevel.debug | Logs are printed only in debug builds (default) |
Listening to Events
The SDK exposes streams for logging and auth errors:Documentation
Integration Guide
Complete guide to integrating the SDK including authentication flow, backend setup, and best practices.
Troubleshooting
Common issues and their solutions for iOS and Android.
Supported Health Data Types
The SDK supports 40+ health data types across multiple categories:Activity & Fitness
Activity & Fitness
| Type | Description |
|---|---|
steps | Step count |
distanceWalkingRunning | Walking/running distance |
distanceCycling | Cycling distance |
flightsClimbed | Floors climbed |
walkingSpeed | Average walking speed |
walkingStepLength | Step length |
walkingAsymmetryPercentage | Walking asymmetry percentage |
walkingDoubleSupportPercentage | Walking double support percentage |
sixMinuteWalkTestDistance | 6-minute walk test |
activeEnergy | Active energy burned |
basalEnergy | Basal (resting) energy burned |
Heart & Vitals
Heart & Vitals
| Type | Description |
|---|---|
heartRate | Heart rate measurements |
restingHeartRate | Resting heart rate |
heartRateVariabilitySDNN | HRV (SDNN) |
vo2Max | VO2 max |
oxygenSaturation | Blood oxygen |
respiratoryRate | Breathing rate |
Body Measurements
Body Measurements
| Type | Description |
|---|---|
bodyMass | Weight |
height | Height |
bmi | Body Mass Index |
bodyFatPercentage | Body fat % |
leanBodyMass | Lean body mass |
waistCircumference | Waist circumference |
bodyTemperature | Body temperature |
Blood & Metabolic
Blood & Metabolic
| Type | Description |
|---|---|
bloodGlucose | Blood glucose level |
insulinDelivery | Insulin delivery |
bloodPressureSystolic | Systolic blood pressure |
bloodPressureDiastolic | Diastolic blood pressure |
bloodPressure | Blood pressure (correlation type) |
Sleep & Mindfulness
Sleep & Mindfulness
| Type | Description |
|---|---|
sleep | Sleep sessions and stages |
mindfulSession | Meditation/mindfulness sessions |
Reproductive Health
Reproductive Health
| Type | Description |
|---|---|
menstrualFlow | Menstrual flow |
cervicalMucusQuality | Cervical mucus quality |
ovulationTestResult | Ovulation test result |
sexualActivity | Sexual activity |
Nutrition
Nutrition
| Type | Description |
|---|---|
dietaryEnergyConsumed | Calories consumed |
dietaryCarbohydrates | Carbs |
dietaryProtein | Protein |
dietaryFatTotal | Total fat |
dietaryWater | Water intake |
Workouts
Workouts
| Type | Description |
|---|---|
workout | All workout types with metadata |
Not all data types are available on all providers. Samsung Health supports a subset of types compared to Health Connect and HealthKit. See the Android SDK docs for provider-specific availability.
Next Steps
Integration Guide
Complete step-by-step integration guide.
API Reference
Full API documentation on GitHub.

