If after updating you get errors while building the iOS app, please do the following:
1.
2. - delete old pods
3. - install updated pods
4. Open project in XCode and do a full clean: or
Spike ReactNative SDK Changelog
4.3.203
- Updated Android SDK to
4.3.132:
- Samsung Health Data Integration - Major Expansion:
- Added support for reading and pushing the following data types from Samsung Health:
- Workouts (exercises)
- Sleep data
- Body composition data (weight, height, BMI, body fat)
- User profile data (weight, height, birth date, gender)
- Blood pressure measurements
- Skin temperature measurements
- Heart rate measurements
- Blood oxygen saturation (SpO2) measurements
- Body temperature measurements
- More efficient Samsung Health Data pushes
- Large Samsung Health Data pushes are now automatically split into smaller chunks for reliable delivery
- Large Health Connect pushes are now automatically split into smaller chunks for reliable delivery
4.3.193
- Added Nutrition Facts Label Recognition for extracting nutritional information from label photos.
For more information please visit our documentation.
recognizeNutritionFactsLabel({ imageBase64, config? }) - Analyze a nutrition facts label image and extract nutritional data
- Added methods for manual nutrition record management:
createNutritionRecord({ nutritionRecord }) - Insert a new nutrition record with custom data
replaceNutritionRecord({ nutritionRecord }) - Replace an existing nutrition record completely
- Added
NutritionRecordUtils for creating and manipulating nutrition records:
NutritionRecordUtils.create(options) - Create a new nutrition record with specified properties
withIngredient(record, ingredient) - Add an ingredient to a record
withoutIngredient(record, ingredient) - Remove an ingredient from a record
withServingSize(record, servingSize, unit) - Update serving size and unit
- Added
NutritionRecordIngredientUtils for creating and manipulating ingredients:
NutritionRecordIngredientUtils.create(options) - Create a new nutrition record ingredient
withNutritionalField(ingredient, nutritionalField, value) - Set a nutritional field value
withoutNutritionalField(ingredient, nutritionalField) - Remove a nutritional field
withScaledServingSize(ingredient, newServingSize) - Scale serving size and nutritional values proportionally
- Moved metadata out of
NutritionRecord into NutritionRecordAnalysisResult
NutritionRecord no longer contains status and failureReason fields
- These fields are now part of
NutritionRecordAnalysisResult
NutritionRecordAnalysisResult now has a nutritionRecord field containing the nutrition data
- Nutrition API methods now return
NutritionRecordAnalysisResult:
analyzeNutrition() - returns NutritionRecordAnalysisResult
getNutritionRecords() - returns NutritionRecordAnalysisResult[]
getNutritionRecord() - returns NutritionRecordAnalysisResult | null
updateNutritionRecordServingSize() - returns NutritionRecordAnalysisResult
createNutritionRecord() - returns NutritionRecordAnalysisResult
replaceNutritionRecord() - returns NutritionRecordAnalysisResult
- Update Android SDK to
4.3.122
- Update iOS SDK to
4.3.141
- IMPORTANT! If after updating you get errors while building iOS app please do following:
rm -rf ios/Pods/ ios/Podfile.lock - delete old pods
cd ios; pod install --repo-update - install updated pods
- Open project in XCode 26 and do a full clean:
Product -> Clean build folder or Shift + Command + K
4.3.183
- Added Nutrition AI features for analyzing food images. For more information please visit our documentation.
analyzeNutrition({ imageBase64, consumedAt?, config? }) - Analyze food image synchronously and wait for results
submitNutritionForAnalysis({ imageBase64, consumedAt?, config? }) - Analyze food image asynchronously, returns record ID
getNutritionRecords({ from, to }) - Retrieve nutrition records for a date range
getNutritionRecord({ id }) - Get a specific nutrition record by ID
deleteNutritionRecord({ id }) - Delete a nutrition record
updateNutritionRecordServingSize({ id, servingSize }) - Update serving size for a nutrition record
- Added new
Provider:
- Added new
ProviderSource types:
- fitbitSkinTemperatureSummary
- garminWellnessSkinTemperatureSummary
- lunaSleep
- Removed
ProviderSource types:
- fitbitUserActivitiesList
- fitbitUserActivitiesDate
- fitbitUserActivitiesHeartDate
- fitbitUserActivitiesHeartDateInterday
- withingsMeasureGetWorkouts
- withingsMeasureGetActivity
- withingsMeasureGetMeas
- Removed
ActivityTag:
- Removed
Provider:
- Update Android SDK to
4.3.112
- Update iOS SDK to
4.3.131
4.3.173
- Update Android SDK to
4.3.102
- Enable Health Connect integration in the admin console right after enabling integration
- Enable Samsung Health Data integration in the admin console right after enabling integration
- Update iOS SDK to
4.3.121
- Enable HealthKit integration in the admin console right after requesting permissions
4.3.163
- Added ability to read mindfulness activities:
spikeConnection.getActivities(
config: ActivityConfig(activityCategories: [ActivityCategory.mindfulness])
from: dateFrom,
to: dateTo
)
- Added ability to check Android Health Connect features availability:
const isMindfulessAvailable = spikeConnection.isHealthConnectFeatureAvailable(HealthConnectFeature.FEATURE_MINDFULNESS_SESSION)
- Added new ActivityTag types:
- Added new ActivityType types:
- ecgMeasurement
- triathlon
- biathlon
- duathlon
- rollerblading
- skateboarding
- skating
- calisthenics
- weightLifting
- canoeing
- floorball
- jiuJitsu
- diving
- orienteering
- bootcamp
- motorsports
- horseriding
- paragliding
- multisport
- bloodTest
- mindfulnessSession
- Added new ProviderSource types:
- appleHealthkitMindfulness
- healthConnectMindfulnessSession
- Added a new ActivityCategory type:
- Update Android SDK to
4.3.92
- Updated Health connect to
1.1.0-rc03
- Updated compileSdk to
36
- Updated gradle to
8.13
- Update iOS SDK to
4.3.111
4.3.153
4.3.143
- Fixed building iOS on Expo 54+ with New Architecture
- Updated Expo android manifest script
- Update Android SDK to
4.3.82:
- Workaround for the Android 15 bug to make background delivery more resilient
- More efficient pushes to Spike API
4.3.133
- New
Spike.setLogCallback() method to receive logs from the native SDK:
await Spike.setLogCallback((level, message) => {
if (level === LogLevel.verbose) {
return
}
console.log(`[SpikeSDK.${level.toUpperCase()}] ${message}`);
});
- Fixed
getBackgroundDeliveryConfig() method to be async getBackgroundDeliveryConfig(): Promise<BackgroundDeliveryConfig | null>
- Update Android SDK to
4.3.72:
- Allow reading
SPO2 and SWIMMING_LENGTHS in getActivities
- Allow reading
SPO2 and SKIN_TEMPERATURE in getSleeps
- Update iOS SDK to
4.3.101:
- Improved how sleep data is read for sleep score
4.3.123
- Update Android SDK to
4.3.62:
- Optimized background delivery
4.3.113
- Added
.coros Provider
- Updated
ProviderSource enum
- Update Android SDK to
4.3.52:
- Added
Provider.COROS
- Updated
ProviderSource enum
- Added new Statistic types:
- STRESS_SCORE
- RECOVERY_SCORE
- ACTIVITY_SCORE
- Added new Metric types for
getSleep request:
- SLEEP_DURATION
- SLEEP_DURATION_AWAKE
- SLEEP_DURATION_DEEP
- SLEEP_DURATION_LIGHT
- SLEEP_DURATION_NAP
- SLEEP_DURATION_REM
- SLEEP_EFFICIENCY
- SLEEP_INTERRUPTIONS
- SLEEP_LATENCY
- SLEEP_SCORE
- Update iOS SDK to
4.3.91:
- Added
.coros Provider
- Updated
ProviderSource enum
- Improved the way data is sent to API to reduce the size and speed of calls to Spike
- Added new Statistic types:
- stressScore
- recoveryScore
- activityScore
- Added new Metric types for
getSleep request:
- sleepDuration
- sleepDurationAwake
- sleepDurationDeep
- sleepDurationLight
- sleepDurationNap
- sleepDurationRem
- sleepEfficiency
- sleepInterruptions
- sleepLatency
- sleepScore
- Better keychain compatibility
NOTE: If you use the keychain in your app with a service name equal to your bundle
identifier, please check if it contains key named
spikeApiToken and delete it.
4.3.103
- New metric type:
- Update Android SDK to
4.3.42:
- New
MetricType.GLUCOSE available in both Health Connect and Samsung Health
- Update Samsung Health Data SDK to version 1.0.0 (available only on Android 29+)
- Update iOS SDK to
4.3.81:
- Added
MetricType: .glucose
4.3.93
- The old
SpikeSDK API has been deprecated
- Added
disableHealthKitIntegration and isHealthKitIntegrationEnabled functions for iOS HealthKit
- Update Android SDK to
4.3.32:
- Switch to protobuf java-lite 3.25.5 for better compatibility with firebase
- The old
SpikeSDK API has been deprecated
- Update iOS SDK to
4.3.71:
- The old
SpikeSDK API has been deprecated
- Added
disableHealthKitIntegration and isHealthKitIntegrationEnabled functions in spike connection
4.3.83
- New providers added: dexcom, freestyleLibre, huawei, strava
- Added .distanceSwimming into the list of metrics available in activities
- Updated native iOS SDK Version to
4.3.61
- Updated native Android SDK Version to
4.3.22
- Fixed prop names in SpikeRecord and Statistic data models
4.3.73
- Updated React native to 0.79
- Enhanced Expo support:
- Added a plugin to automatically configure the Android app by updating the necessary fields in
build.gradle files and AndroidManifest.xml, including handling specified permissions.
- Enabled configuration of iOS HealthKit permission texts directly from the plugin settings.
- Added support for enabling background delivery via plugin configuration.
Config entry example for app.json:
[
"react-native-spike-sdk",
{
"ios": {
"healthSharePermission": "$(PRODUCT_NAME) needs access to read your health data",
"healthUpdatePermission": "$(PRODUCT_NAME) needs permission to save health data",
"isBackgroundDeliveryEnabled": true
},
"android": {
"healthConnectPermissions": [
"android.permission.health.READ_BASAL_METABOLIC_RATE",
"android.permission.health.READ_WEIGHT"
],
"isBackgroundDeliveryEnabled": true
}
}
]
4.3.63
- Added Samsung Health Integration on Android
- Updated native Android SDK Version to
4.3.12:
- New statistics for Health Connect:
- HEARTRATE
- HEARTRATE_MAX
- HEARTRATE_MIN
- New metrics for Health Connect:
- HEARTRATE
- HEARTRATE_MAX
- HEARTRATE_MIN
- Improved transport protocol for even faster requests to Spike API
- Added Samsung Health Integration for:
StatisticTypes:
- STEPS
- DISTANCE_TOTAL
- CALORIES_BURNED_ACTIVE
- CALORIES_BURNED_TOTAL
- CALORIES_BURNED_BASAL
- Added new
Provider:
- SAMSUNG_HEALTH_DATA
- Added new
ProviderSource:
- SAMSUNG_HEALTH_DATA_AGGREGATION
- Renamed
MetricTypes:
- SLEEP_BREATHING_RATE to BREATHING_RATE
- SLEEP_BREATHING_RATE_MIN to BREATHING_RATE_MIN
- SLEEP_BREATHING_RATE_MAX to BREATHING_RATE_MAX
- Updated native iOS SDK Version to
4.3.51:
- Added new
Provider:
- samsungHealthData
- Added new
ProviderSource:
- samsungHealthDataAggregation
- Renamed
MetricTypes:
sleepBreathingRate to breathingRate
sleepBreathingRateMin to breathingRateMin
sleepBreathingRateMax to breathingRateMax
4.3.53
- Catch all exception types in the Android module
4.3.43
- Added missing parameter in
getHealthConnectPermissions
4.3.33
- Updated native iOS SDK Version to
4.3.31
- Improve how statistics are read from HealthKit
- New metric types:
- bodyFat
- bodyFatMax
- bodyFatMin
- bodyBoneMass
- bodyMassIndex
- bloodPressureSystolic
- bloodPressureSystolicMax
- bloodPressureSystolicMin
- bloodPressureDiastolic
- bloodPressureDiastolicMax
- bloodPressureDiastolicMin
- New fields in
UserProperties:
- bodyBoneMass
- bodyFat
- bodyMassIndex
- Updated
getIntegrationInitUrl. Now it accepts IntegrationInitConfig config object where you can pass:
redirectUri: will override the one set in admin console
state: when the authorization server redirects back to the client, it includes the state value originally sent
providerUserIdentifier: at the moment used (and required) only when integrating with ultrahuman
- New provider:
ultrahuman
When integrating with Ultrahuman, you have to provide ultrahuman user email in IntegrationInitConfig.providerUserIdentifier. Example:
spikeConnection.getIntegrationInitUrl(provider: .ultrahuman, config: IntegrationInitConfig(providerUserIdentifier: "user@mail.com"))
- Improved transport protocol for background delivery
- Updated native Android SDK Version to
4.2.72
- New
MetricTypes added:
- BODY_FAT
- BODY_FAT_MAX
- BODY_FAT_MIN
- BODY_BONE_MASS
- BODY_MASS_INDEX
- BLOOD_PRESSURE_SYSTOLIC
- BLOOD_PRESSURE_SYSTOLIC_MIN
- BLOOD_PRESSURE_SYSTOLIC_MAX
- BLOOD_PRESSURE_DIASTOLIC
- BLOOD_PRESSURE_DIASTOLIC_MIN
- BLOOD_PRESSURE_DIASTOLIC_MAX
- New fields in
UserProperties:
- BODY_FAT
- BODY_BONE_MASS
- BODY_MASS_INDEX
- Updated
getIntegrationInitUrl. Now it accepts IntegrationInitConfig config object where you can pass:
redirectUri: will override the one set in admin console
state: when the authorization server redirects back to the client, it includes the state value originally sent
providerUserIdentifier: at the moment used (and required) only when integrating with ultrahuman
- New provider:
ultrahuman
When integrating with Ultrahuman, you have to provide Ultrahuman user email in IntegrationInitConfig.providerUserIdentifier. Example:
spikeConnection.getIntegrationInitUrl(provider = Provider.ULTRAHUMAN, config = IntegrationInitConfig(providerUserIdentifier = "user@mail.com"))
- Updated native iOS SDK Version to
4.3.41
- IntegrationInitConfig is now codable
- Additional check in
getIntegrationInitUrl for email in ultrahuman integration
- Updated native Android SDK Version to
4.2.82
- Added
IntegrationInitConfigUtils for usage in Flutter and React Native libraries
- Additional check in
getIntegrationInitUrl for email in ultrahuman integration
- New provider:
ultrahuman
When integrating with Ultrahuman, you have to provide ultrahuman user email in IntegrationInitConfig.providerUserIdentifier. Example:
spikeConnection.getIntegrationInitUrl(provider: .ultrahuman, config: {providerUserIdentifier: "user@mail.com"})
4.3.23
- Updated native iOS SDK Version to
4.3.21
- Improve how statistics are read from HealthKit
- Updated native Android SDK Version to
4.2.62
- Added consumer proguard rules
4.3.13
- Updated native iOS SDK Version to
4.3.11
- Improved transport protocol for even faster requests to Spike API
- New statistics: heartrate, heartrateMax, heartrateMin, heartrateResting
- Updated native Android SDK Version to
4.2.52
- New statistics:
- HEARTRATE_RESTING
- SLEEP_DURATION_TOTAL
- New statistics (only from non-HealthConnect providers):
- HEARTRATE
- HEARTRATE_MIN
- HEARTRATE_MAX
- Metric types updates
- Better proguard settings for uniqueness of generated class names
- Fix for statistics in different time zones
4.2.73
4.2.63
- Updated native iOS SDK Version to iOS 4.2.41
- Fix date format in JSON push
4.2.53
- Fixed typo in method name:
getGrantedHealthKitPermissions in now properly called getGrantedHealthConnectPermissions
4.2.43
- Add support for React Native New Architecture (interop)
4.2.33
- New metrics:
- spo2
- bodyTemperature
- skinTemperature (available only on getSleep())
- sleepBreathingRate (available only on getSleep())
- sleepBreathingRateMin (available only on getSleep())
- sleepBreathingRateMax (available only on getSleep())
- sleepBreathingRateAvg (available only on getSleep())
- Updated native iOS SDK Version to iOS 4.2.31
- Updated native Android SDK Version to 4.2.42
- Added sleepScore property in the Record type
4.2.23
- New metric:
vo2Max available in getRecords and getActivities
- Changed hrv metric names:
hrvRmssd, hrvSdnn
- New statistic:
sleepScore
- Updated native iOS SDK Version to iOS 4.2.21
- New
getUserProperties method for reading: weight, height, timezone, birthdate, gender
- Updated native Android SDK Version to 4.2.32
- New
getUserProperties method for reading: weight, height, timezone from Health Connect
- New
getUserProperties method for reading: birthdate, gender from other providers
4.2.13
-
Android Spike SDK: 4.2.12
-
iOS Spike SDK: 4.2.11
-
🔴 Breaking Change: Update to
Spike.createConnectionAPIv3. The method
Spike.createConnectionAPIv3({appId:, authToken:, customerEndUserId:}) has been updated to:
Spike.createConnectionAPIv3({applicationId:, signature:, endUserId:})
-
The
applicationId parameter must now be provided as an number.
-
The
signature parameter now requires an HMAC-SHA256 signed user ID.
-
⚠️ Security Notice:
- Do not store your HMAC signing key within the application itself, as this poses a security risk.
- Instead, generate and provide the signature from your backend.
-
Legacy Support: For development purposes only, the previous connection flow remains available under the renamed method:
Spike.createConnectionAPIv3Legacy({appId:, authToken:, customerEndUserId:})
4.1.23
Fixed TypeScript definitions
4.1.13
-
Background delivery
-
Android Spike SDK: 4.1.12
- Add background delivery (see documentation for more information)
- Health Connect library updated to 1.1.0-alpha11
- Compile SDK and target SDK updated to 35
- Updated kotlin version to 1.9.25
- Updated other dependencies
- Add log callback
- Update gradle to 8.8.0
-
iOS Spike SDK: 4.1.11
- Add background delivery
- Add log callback
- Send more sleep data
4.0.23
- Android Spike SDK: 4.0.22
- iOS Spike SDK: 4.0.11
4.0.13
- Android Spike SDK: 4.0.12
- iOS Spike SDK: 4.0.11
- Completely new SDK! Please see our official documentation for more details and usage instructions
2.5.8
- iOS Spike SDK: 2.4.5
- Android Spike SDK: 3.1.6
- Android: Update steps intraday to better check for manual entries
- Android: Add permissions specific to steps_intraday
2.5.7
- iOS Spike SDK: 2.4.5
- Android Spike SDK: 3.1.5
- Android: check for permissions before reading additional sleep data
2.5.6
- iOS Spike SDK: 2.4.5
- Android Spike SDK: 3.1.4
- Android: update to the newest SDK version
2.5.5
- Android Spike SDK: 3.1.1
- iOS Spike SDK: 2.4.5
- iOS: update to the newest SDK version
2.5.4
- Android Spike SDK: 3.1.1
- iOS Spike SDK: 2.4.4
- iOS: Read more distance fields in a workout object from HealthKit
2.5.3
- Android Spike SDK: 3.1.1
- iOS Spike SDK: 2.4.2
2.5.2
- iOS Spike SDK: 2.4.2
- iOS: Add customer user id validation
- Android Spike SDK: 3.1.1
- Android: Better way to authenticate with API
- Android: Add saved session validation before connection is established
- Android: Add customer user id validation.
2.5.1
- Android Spike SDK: 3.0.19
- iOS Spike SDK: 2.4.1
- iOS: Fix an issue when the timezone changes while the app is running.
2.5.0
- Android Spike SDK: 3.0.19
- iOS Spike SDK: 2.4.0
2.4.5
- iOS Spike SDK: 2.3.2
- Android Spike SDK: 3.0.19
- Android: Fix an issue caused by calling
SpikeSDK methods from different threads at the same time.
2.4.4
- Android Spike SDK: 3.0.19
- iOS Spike SDK: 2.3.2
- iOS: Fix an issue caused by calling
SpikeSDK methods from different threads at the same time.
2.4.3
- iOS Spike SDK: 2.3.2
- Android Spike SDK: 3.0.19
- Add Background deliveries support for Expo-managed projects.
2.4.2
- Android Spike SDK: 3.0.19
- iOS Spike SDK: 2.3.2
- iOS: Add trigger extractAndPostData request done from the background.
2.4.1
- Android Spike SDK: 3.0.19
- iOS Spike SDK: 2.3.1
- iOS: Send cycling parameters with Activities stream data
- PROD & DEV environments are no longer supported.
2.3.7
- iOS Spike SDK: 2.2.3
- Android Spike SDK: 3.0.19
- Android: Add new logic for detecting changes in intraday_steps metadata.
- Android: Add safeguard for to handle multiple sources of sleep data and avoid illogical values.
2.3.6
- Android Spike SDK: 3.0.17
- iOS Spike SDK: 2.2.3
- Add providerTimestamp to Activities Summary data model.
2.3.5
- Android Spike SDK: 3.0.17
- Android: Remove the limitation that prevented values from being sent when the requested period is more than a day.
- Android: Now calculating stage time by stages in sleep data.
- iOS Spike SDK: 2.2.2
- iOS: Include intraday entries of a Steps intraday data type for range requests.
2.3.3
- Android Spike SDK: 3.0.15
- iOS Spike SDK: 2.2.1
- Add a metadata object for Spike intraday entries.
2.3.2
- iOS Spike SDK: 2.2.0
- Android Spike SDK: 3.0.11
- Android: add safeguards for edge cases when a function could be called without necessary data.
2.3.1
- iOS Spike SDK: 2.2.0
- Android Spike SDK: 3.0.11
- Android: improve Android wrapper.
2.3.0
- Android Spike SDK: 3.0.11
- iOS Spike SDK: 2.2.0
- iOS: SpikeData wrapper model aligned with server.
2.2.11
- Android Spike SDK: 3.0.10
- iOS Spike SDK: 2.1.14
- iOS: Fix date range parsing.
2.2.10
- iOS Spike SDK: 2.1.13
- Android Spike SDK: 3.0.10
- Android: Step intraday data improvements.
2.2.9
- Android Spike SDK: 3.0.8
- iOS Spike SDK: 2.1.13
- Step intraday data improvements.
2.2.8
- Android Spike SDK: 3.0.8
- iOS Spike SDK: 2.1.12
- iOS: Step intraday data improvements.
2.2.7
- iOS Spike SDK: 2.1.11
- Android Spike SDK: 3.0.8
- Allow requesting multiple permission for Android using
requestHealthPermissions method. Provide a single Spike data type or array of Spike data types.
2.2.6
- Android Spike SDK: 3.0.8
- iOS Spike SDK: 2.1.11
- iOS: Add a method to check Health Store data availability (isHealthDataAvailable).
2.2.5
- iOS Spike SDK: 2.1.10
- Android Spike SDK: 3.0.8
- Android: Can get permission contract before SpikeConnection is created.
- Android: Update package checker function to avoid unnecessary check for Android 14 and up versions.
2.2.4
- iOS Spike SDK: 2.1.10
- Android Spike SDK: 3.0.6
- Android: Move permission checking before data extraction to the SDK connection layer
2.2.3
- iOS Spike SDK: 2.1.10
- Android Spike SDK: 3.0.5
- Android: Extracting heart data fixed
2.2.2
- iOS Spike SDK: 2.1.10
- Android Spike SDK: 3.0.4
- Android: Added support for Android 14.
- Android: Fixed some issues with data requesting for a specified date range.
2.2.1
- Android Spike SDK: 3.0.2
- iOS Spike SDK: 2.1.10
- iOS: Spike SDK now uses ISO8601 standardized Calendar.
2.2.0
- iOS Spike SDK: 2.1.9
- Android Spike SDK: 3.0.2
-
Android: Activity summary and activity stream can be called without granting all their permissions. Returned data depends on which permissions were provided.
-
Android: Android Permission requests are divided by data types.
- SpikeConnection method
checkPermissionsGranted now requires Spike data type.
- SpikeConnection method
requestHealthPermissions now requires Spike data type.
See more: Permissions section
-
Android: Works up to Android 13.