Skip to content

Inconsistent HRV sync/calculation between OpenStrap Edge and Bevel (Apple HealthKit) #315

Description

@ramishroshan

What happened?

HRV values calculated in the OpenStrap Edge app differ significantly from the values reported in Bevel (which reads from Apple HealthKit synced data). The values written or parsed appear nearly doubled in Bevel.
Details & Metrics Observed
OpenStrap Edge App (Overnight HRV - RMSSD, asleep): ~96 ms
Bevel App (Resting HRV for the same date range): ~197.3 ms
Date Observed: August 28–29, 2026
Potential Root Causes

  1. Calculation Method / Unit Mismatch:
    OpenStrap Edge explicitly uses rMSSD (Root Mean Square of Successive Differences).
    Apple Health / Bevel natively uses SDNN (Standard Deviation of NN intervals) for default HRV samples unless explicit rMSSD timestamps are ingested and calculated across specific sleep windows.
  2. Aggregation Window Difference:
    OpenStrap Edge isolates HRV solely during detected deep/slow-wave sleep or entire overnight sleep.
    Bevel may be aggregating 24-hour background readings or misinterpreting individual raw inter-beat interval (IBI) sample batches written by the bridge.
  3. Data Doubling / Scaling Factor:
    The reading in Bevel (~197.3 ms) is roughly \bm{2\times} the OpenStrap value (96 ms), pointing to potential scale conversion errors during HealthKit export/write operations.

Steps to reproduce

  1. Complete a sleep tracking session recorded via the OpenStrap device.
  2. Sync data into the OpenStrap Edge app (records overnight HRV as ~96 ms).
  3. Open Bevel to fetch updated HealthKit metrics.
  4. Compare the Resting HRV value displayed in Bevel against the OpenStrap Edge overview metric.

App version

0.9.28

Platform

iOS (TestFlight)

Phone model and OS version

14 pro max ios 27 db 7

Which band?

WHOOP 4.0

Screenshots

Image Image

Quick checks

  • The official WHOOP app is not also connected to this band
  • I've searched existing issues for this

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions