Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.spikeapi.com/llms.txt

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

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.7.13

  • Removed the deprecated v1/v2 connection API
  • Updated Android SDK to 4.7.12
  • Updated iOS SDK to 4.7.11

4.6.13

  • Updated Android SDK to 4.6.12
  • Updated iOS SDK to 4.6.11
  • Added nutrition support across HealthKit (iOS), Health Connect (Android), and Samsung Health Data (Android). You can now request nutrition permissions, backfill historical nutrition data, and include nutrition fields in background delivery by passing nutritionalFields to requestHealthPermissions, backfill, enableBackgroundDelivery, and requestPermissionsFromHealthKitAndBackfill.
    await connection.requestHealthPermissions({
      nutritionalFields: [
        NutritionalField.energyKcal,
        NutritionalField.proteinG,
        NutritionalField.carbohydrateG,
        NutritionalField.fatTotalG,
      ],
    });
    
    await connection.backfill({
      nutritionalFields: [
        NutritionalField.energyKcal,
        NutritionalField.proteinG,
        NutritionalField.carbohydrateG,
        NutritionalField.fatTotalG,
      ],
      days: 7,
    });
    
    await connection.enableBackgroundDelivery({
      nutritionalFields: [
        NutritionalField.energyKcal,
        NutritionalField.proteinG,
        NutritionalField.carbohydrateG,
        NutritionalField.fatTotalG,
      ],
    });
    
  • getNutritionRecords({ from, to }) now reads the latest local HealthKit / Health Connect / Samsung Health Data nutrition data before returning records when the corresponding integration is enabled.
  • BackgroundDeliveryConfig now exposes the nutritionalFields currently registered for background delivery.
  • Added close() on the v3 connection to disconnect from the SDK, release the native connection, and stop background delivery when it is enabled.
    await connection.close();
    
  • IMPORTANT! If after updating you get errors while building iOS app please do following:
    1. rm -rf ios/Pods/ ios/Podfile.lock - delete old pods
    2. cd ios; pod install --repo-update - install updated pods
    3. Open project in XCode 26 and do a full clean: Product -> Clean build folder or Shift + Command + K

4.5.23

  • Updated Android SDK to 4.5.22
  • Updated iOS SDK to 4.5.21
  • Added backfill on the v3 connection to upload historical health data for a chosen number of days. Call it after you have granted the relevant permissions (HealthKit on iOS; Health Connect and/or Samsung Health Data on Android).
    await connection.backfill({
      statisticTypes,
      metricTypes,
      activityConfigs: [activityConfig],
      sleepConfigs: [sleepConfig],
    });
    
  • iOS (HealthKit): added requestPermissionsFromHealthKitAndBackfill — requests read permissions for the given categories, then starts a backfill. Data for today and yesterday is pushed before the call resolves; older days continue in the background.
    await connection.requestPermissionsFromHealthKitAndBackfill({
      statisticTypes,
      metricTypes,
      activityConfigs: [activityConfig],
      sleepConfigs: [sleepConfig],
    });
    
  • Android (Samsung Health Data): added requestPermissionsFromSamsungHealthDataAndBackfill — enables Samsung Health Data integration, requests permissions for the given categories, then starts a backfill.
  • Android (Health Connect): added requestPermissionsFromHealthConnectAndBackfill — enables Health Connect integration, requests permissions for the given categories, then starts a backfill.
  • iOS: If the app fails to build after upgrading, remove ios/Pods and ios/Podfile.lock, then run pod install --repo-update in ios, and run clean from Xcode.

4.5.13

  • Updated Android SDK to 4.5.12
  • Updated iOS SDK to 4.5.11
  • Added RecordConfig for configuring records queries:
    • includeSamples - whether to include samples (raw data points) in the response
  • Updated getRecords to accept an optional RecordConfig parameter:
    connection.getRecords({
        ofTypes: metricTypes,
        from: startDate,
        to: endDate,
        filter: new StatisticsFilter({ excludeManual: true }),
        config: new RecordConfig({ includeSamples: true })
    })
    
    • IMPORTANT! If after updating you get errors while building iOS app please do following:
      1. rm -rf ios/Pods/ ios/Podfile.lock - delete old pods
      2. cd ios; pod install --repo-update - install updated pods
      3. Open project in XCode 26 and do a full clean: Product -> Clean build folder or Shift + Command + K

4.4.13

  • Updated Android SDK to 4.4.12
  • Updated iOS SDK to 4.4.11
  • Updated Unit enum with new values:
    • Added: miles, mPerSec, fahrenheit, ms, seconds, degrees, sleepStage, secPerM, rpm, spm, breathsPerMin, g, lbs, st, mmHg, mLPerKgPerMin, uV, mgPerDl, w
    • Removed: kmh, kmPerMin
  • Improved data communication with API
  • Enhanced the getSleep endpoint. Important:
    • Dates provided are now interpreted as dates only; the time component is ignored when querying the API.
    • The primary night sleep period is associated with the calendar date on which it ends.

4.3.233

  • Fixed nutrition record data so that nutritionalFields keys in ingredients and records match the NutritionalField enum values. You can now look up values using ingredient.nutritionalFields[NutritionalField.energyKcal] and similar expressions as intended.
  • Updated Android SDK to 4.3.142
    • Internal improvements
  • Updated iOS SDK to 4.3.161
    • Better Nutrition Facts Label Recognition response parsing

4.3.223

  • Nutrition record and ingredient helpers are now methods on utils objects instead of standalone exports.
    • Use NutritionRecordUtils.withIngredient(record, ingredient) instead of withIngredient(record, ingredient)
    • Use NutritionRecordUtils.withoutIngredient(record, ingredient) instead of withoutIngredient(record, ingredient)
    • Use NutritionRecordUtils.withServingSize(record, servingSize, unit) instead of withServingSize(record, servingSize, unit)
    • Use NutritionRecordIngredientUtils.withNutritionalField(ingredient, field, value) instead of withNutritionalField(ingredient, field, value)
    • Use NutritionRecordIngredientUtils.withoutNutritionalField(ingredient, field) instead of withoutNutritionalField(ingredient, field)
    • Use NutritionRecordIngredientUtils.withScaledServingSize(ingredient, newServingSize) instead of withScaledServingSize(ingredient, newServingSize)

4.3.213

  • MetricType: added namespace with metric allowlists for API requests:
    • MetricType.availableForRecordsRequest – metrics accepted by records API request
    • MetricType.availableForActivitiesRequest – metrics accepted by activities API request
    • MetricType.availableForSleepRequest – metrics accepted by sleep API request
    • MetricType.availableForPersonRequest – metrics accepted by person API request
  • Update iOS SDK to 4.3.151:
    • Improved data push to API
    • Fixed workout digest generation for caching
    • Improved client cache configuration

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:
      1. rm -rf ios/Pods/ ios/Podfile.lock - delete old pods
      2. cd ios; pod install --repo-update - install updated pods
      3. 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:
    • luna
  • Added new ProviderSource types:
    • fitbitSkinTemperatureSummary
    • garminWellnessSkinTemperatureSummary
    • lunaSleep
  • Removed ProviderSource types:
    • fitbitUserActivitiesList
    • fitbitUserActivitiesDate
    • fitbitUserActivitiesHeartDate
    • fitbitUserActivitiesHeartDateInterday
    • withingsMeasureGetWorkouts
    • withingsMeasureGetActivity
    • withingsMeasureGetMeas
  • Removed ActivityTag:
    • onBicycle
  • Removed Provider:
    • wahoo
  • 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:
    • mindfulness
  • 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:
    • mindfulness
  • 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

  • Added documentation

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:
    • glucose
  • 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

  • Updated readme file

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
    • Pin iOS SDK version

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
    • iOS: Add ECG data type.

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.