Does the SDK send any data to Neurofit's servers?
Does the SDK send any data to Neurofit's servers?
No. Every step of the measurement pipeline runs entirely on the user’s device. No camera frames, raw PPG signals, or computed results are transmitted to Neurofit or any third-party server. Your users’ biometric data belongs to you and never leaves the device.
Can the SDK be tested in a simulator?
Can the SDK be tested in a simulator?
No. The scan pipeline requires the physical rear-facing camera and the device flash to illuminate the fingertip. Simulators do not expose real camera hardware, so the scan cannot run. Always test on a physical iOS or Android device connected to your development machine.
What happens if a reading is withheld?
What happens if a reading is withheld?
When the SDK cannot produce a result that meets its internal quality threshold, it sets the
qualityTier field to .withheld (Swift) or QualityTier.WITHHELD (Kotlin). In this state, the heart rate, HRV, and respiration rate metric fields are not populated. Your app should detect this tier and present the user with a clear retry prompt explaining that the scan did not capture a clean signal.What causes a reading to be withheld?
What causes a reading to be withheld?
The most common causes are:
- Incomplete coverage — the finger is not fully covering both the camera lens and the flash
- Excessive movement — motion artefacts corrupt the PPG signal
- Incorrect pressure — pressing too hard blanches the capillaries; too little pressure lets in ambient light
- Dry skin — very dry fingertip skin reduces optical contact quality
- Ambient light interference — bright external light overwhelming the flash signal
What minimum OS versions are required?
What minimum OS versions are required?
- iOS: 15.0 or later
- Android: API level 24 (Android 7.0 Nougat) or later
How large is the SDK?
How large is the SDK?
The Neurofit Vitals SDK adds under 1 MB to your app’s download size. The binary is optimised for size and ships only the signal-processing logic needed for on-device measurement — no bundled model weights or large asset catalogs.
Is the SDK compatible with SwiftUI and Jetpack Compose?
Is the SDK compatible with SwiftUI and Jetpack Compose?
Yes, on both platforms:
- iOS: A
VitalsScanViewis provided for SwiftUI alongside the UIKitVitalsScanViewController. Both surfaces expose the same delegate/callback API. - Android: The SDK ships a
VitalsScanComposablewrapper for Jetpack Compose in addition to the traditionalVitalsScanActivityand Fragment API.
Is the SDK a medical device?
Is the SDK a medical device?
No. The Neurofit Vitals SDK is intended to help wellness app developers measure biometric signals for general wellbeing and self-monitoring purposes. It is not designed, cleared, or intended for the diagnosis, treatment, cure, or prevention of any medical condition. Do not position SDK-derived measurements as clinical or diagnostic outputs in your app’s marketing or UI copy.
How do I renew or upgrade my license?
How do I renew or upgrade my license?
Reach out to the Neurofit team directly to discuss renewal timelines or to explore upgrading from a Binary license to a Source license. You can book a conversation at the link below — no long forms required.Schedule a licensing call →
What does a nil or null breathing rate mean?
What does a nil or null breathing rate mean?
Respiration rate is confidence-gated: if the respiratory component of the PPG signal was not strong enough during the session to produce a reliable value, the SDK returns
nil (Swift) or null (Kotlin) rather than surfacing a potentially inaccurate number. This is expected behaviour and does not indicate a failed scan — the heart rate and HRV results are unaffected. Treat a nil/null breathing rate as “not measured this session” and omit it from your UI rather than showing a placeholder.Can I use the SDK on tablets?
Can I use the SDK on tablets?
Yes. The SDK works on any iOS or Android device that meets the OS version requirement and has a functional rear camera with flash, including iPads and Android tablets. The scan UI scales to larger screen sizes automatically.
Does the SDK support multiple concurrent scans?
Does the SDK support multiple concurrent scans?
No. Only one scan session should be active at any given time. If your app flow could trigger a second scan before the first has finished, ensure you explicitly complete or cancel the active session before initialising a new one. Running overlapping sessions produces undefined behaviour.
