Privacy Policy
Last updated: September 17, 2026
01What data does Stressi access?
Stressi reads health data from Apple Health on iPhone and Health Connect on Android to calculate your daily Stressi Score:
- Heart rate — to detect changes in resting and daily cardiovascular load
- Heart rate variability (HRV) — to estimate recovery and nervous-system strain
- Sleep sessions — sleep duration and quality affect recovery and readiness
- Workouts and activity — recent exertion helps explain recovery and load
- Breathing rate — overnight breathing rate above your own average indicates extra strain
- Blood oxygen — overnight blood oxygen adds context to how restorative your sleep was
- Body temperature — a rise above your personal average is an early sign of added load
- Cardio fitness (VO₂ max) — sets what a normal resting heart rate looks like for you
Stressi also stores locally on your device:
- Daily Stressi Score summaries and health metric averages
- Personal baseline calibration data, which adapts to your own physiology
- Journal entries (mood, activities, notes) if you choose to use this feature
- App preferences and settings
02How is your data processed?
All data processing happens entirely on your device. Your health data never leaves your phone. There is no cloud server storing your health records. Stressi Score calculations, baselines, and daily explanations are generated locally on-device.
03What data do we not collect?
- We do not collect any personal health data
- We do not use product analytics SDKs, and nothing you do inside the app is reported to us
- We do not collect advertising IDs, and we do not track you across other apps or websites
- We do not use your health data for advertising purposes
- We do not share any data with third parties for marketing
- We do not require an account or login
04Crash reports (Firebase Crashlytics)
When the app crashes, a diagnostic report is sent to Firebase Crashlytics, a service run by Google, so the crash can be found and fixed. This is the only thing Stressi sends off your device apart from subscription status.
A crash report contains:
- Where in the code the crash happened, and the state of the app at that moment
- Device model, operating system version and app version
- General device state such as free memory and storage, and whether the device is jailbroken
- A random installation identifier that lets us tell one crash from a repeat of the same one. It is not your name, email or Apple ID, it is not shared with other apps, and it is regenerated if you reinstall Stressi.
Crash reports never contain your health data — no heart rate, HRV, sleep, activity, journal entries, Stressi Scores or baselines. Crash data is not used for advertising and is not used to track you across other apps or websites.
Reports are only sent when the app actually crashes. For Google's handling of this data, see firebase.google.com/support/privacy.
05Subscriptions (RevenueCat)
If you subscribe to Stressi Pro, payment processing is handled by the App Store on iOS or Google Play on Android. Subscription management is facilitated by RevenueCat, a third-party service that:
- Processes your subscription status (active, expired, trial)
- Uses an anonymous identifier to track your subscription — not your name, email, or health data
- Does not have access to any of your health data
For RevenueCat's privacy practices, see revenuecat.com/privacy.
06Data storage and retention
All data is stored locally on your device. You can configure data retention in Settings (30 days, 90 days, 1 year, or forever). You can delete all your data at any time by:
- Using the "Reset Baseline" option in Settings
- Clearing the app's data in Android Settings
- Uninstalling the app
07Health permissions
Stressi requests access only to the health data needed to build your daily Stressi Score and explanations. Depending on platform and available device data, that can include:
- Read heart rate — to analyse cardiovascular load
- Read heart rate variability — to estimate recovery and strain
- Read sleep — to assess sleep quality and its effect on readiness
- Read workouts and activity — to estimate recent exertion and load
- Read breathing rate, blood oxygen, body temperature and cardio fitness (VO₂ max) — optional signals compared only against your own rolling averages. Each is independent: decline any one and the rest keep working. Stressi applies no clinical thresholds and does not diagnose, screen for, or monitor any medical condition.
- Write heart rate and HRV (iOS only) — only when you take an optional on-device camera pulse reading (Settings → Camera HRV). Samples are saved to Apple Health and never leave your device. On Android, Stressi does not write to Health Connect: camera readings are stored only in the app's own on-device database.
You can revoke these permissions at any time through the health permission settings on your device.
08Children's privacy
Stressi is not directed at children under 13. We do not knowingly collect data from children.
09Your rights (GDPR / CCPA)
Since all data is stored locally on your device and we have no access to it:
- Right to access: your data is always available to you in the app
- Right to deletion: clear app data or uninstall to delete everything
- Right to portability: use the Export feature to download your data as CSV
- Right to opt out: you can revoke Health Connect permissions at any time
10Changes to this policy
We may update this privacy policy from time to time. Changes will be posted on this page with an updated date. Continued use of the app after changes constitutes acceptance.
11Contact
If you have questions about this privacy policy, contact manulorenzop+stressi@gmail.com.
For bug reports, you can also open an issue at github.com/noloman/stressi/issues.
Stressi is developed by Manuel Lorenzo. This privacy policy applies to the Stressi applications distributed on the App Store and Google Play.