1.0.0 (2026-09-30)
First release. Engine 1.3.0, the same engine and defaults as the NEUROFIT app’s Vitals feature. Platforms- iOS 15+: Swift package
NeurofitVitals, delivered as an xcframework (binary license) or Swift package sources (source license; building the sources needs Xcode 16 or newer). No dependencies beyond Apple frameworks. - Android 9+ (API 28): Kotlin AAR
com.neurofit:vitals-sdk:1.0.0, CameraX 1.5.0, JVM 17, explicit API. Events and state are emitted on the SDK’s engine thread;start()runs on the main thread. - Wrappers:
@neurofit/vitals-react-native,neurofit_vitals(Flutter),@neurofit/vitals-capacitor(Capacitor 6). - Sample apps: SwiftUI (
com.neurofit.vitals.sample) and Android Views (com.neurofit.vitals.sample).
- Heart rate, HRV (RMSSD), SDNN, Baevsky stress index, Poincaré SD2:SD1, breathing rate with confidence,
quality tier (
clean,usable,withheld), flags and diagnostics. - Accelerometer-assisted breathing rate (
motionBreathing, on by default). VitalsChange.comparewith provisional per-metric thresholds.
- One state machine on both platforms:
idle,positioning,measuring,finalizing,completed,failed, with automatic re-arm after a cancel. - Guidance values
noContact,lowQuality,weakSignal,compliant,frameDrop; live preview about once per second with a provisional HRV (RMSSD) from about 20 s and a provisional breathing rate from about 30 s; heartbeat events;abortRiskahead of the 35 s discard-deadline cancel. - iOS reconfigures the camera in place across the 60/30/20 fps tiers; both platforms recover from one
recoverable camera error (
VitalsRecoverableError) per session before failing. - Backgrounding (iOS) or the lifecycle owner’s
ON_STOP(Android) during a reading fails the session withinterrupted; a cancel withautoRestartAfterCanceloff leaves the session idle and restartable. - Camera permission helpers on both platforms (
cameraAuthorization/requestCameraAccess()on iOS;hasCameraPermission/requestCameraPermissionon Android).
- Offline license keys (
NFV1.format, ECDSA P-256), verified against a public key compiled into the SDK. Perpetual license withupdatesUntilmaintenance semantics. The app-identifier check is relaxed to a warning for debuggable Android apps (runtime) and for Debug builds of the iOS SDK sources (compile time).
- No network calls, no persistence, no telemetry.
PrivacyInfo.xcprivacydeclares no tracking and no collected data types. Camera frames are analysed in memory and discarded.
- 30 participants, 265 accepted readings against a Polar H10 chest strap: heart rate 0.47 bpm mean absolute error; HRV (RMSSD) 3.39 ms, r 0.979, 94.7% within 10 ms. See Metrics.