Mobile App
Using the TrainStack mobile app.
How to install the iOS app, grant HealthKit permissions, and understand how background sync keeps your data up to date.
Installation
Get the app
The TrainStack iOS app is available through TestFlight during the beta period. Once released, it will be available on the App Store. Requires iOS 16 or later (iPhone 8 and newer).
Sign in
Open the app and sign in with the same account you use on the web. Your athlete profile, connected integrations, and equipment all sync across devices.
Grant HealthKit permissions
The app will prompt you to grant access to Apple HealthKit. This is how TrainStack reads workout data, heart rate, sleep, HRV, and other health metrics from your Apple Watch and iPhone.
Read-only access
TrainStack requests read-only access to HealthKit. We never write to or modify your Apple Health data.
Initial sync
After granting permissions, the app performs an initial sync of your recent HealthKit data. This includes workouts, heart rate samples, sleep analysis, and daily metrics. The first sync may take a few minutes depending on how much data is available.
HealthKit Permissions
The app requests read access to the following HealthKit data types:
| Data Type | What TrainStack Uses It For |
|---|---|
| Workouts | Activity tracking -- every workout type Apple Health records |
| Heart Rate | Time-series HR data for activities and resting HR trends |
| Heart Rate Variability | HRV tracking for recovery and readiness |
| Sleep Analysis | Sleep sessions with stage data (deep, REM, light, awake) |
| Steps | Daily step counts |
| Active Energy | Calorie tracking for activities |
| Distance | Walking, running, and cycling distance |
| Resting Heart Rate | Daily resting HR trends |
| VO2 Max | Cardio fitness estimates |
| Respiratory Rate | Breathing rate during sleep |
| Blood Oxygen | SpO2 readings |
You can review and modify these permissions at any time in iOS Settings > Health > TrainStack.
Background Sync
TrainStack uses HealthKit observer queries to stay up to date without you having to open the app.
How it works
When new data appears in HealthKit (e.g., you finish a run on your Apple Watch), iOS notifies TrainStack in the background. The app wakes up briefly, reads the new data, and sends it to the TrainStack backend.
Battery impact
Background sync is designed to be battery-efficient. Observer queries are managed by iOS and only fire when relevant data changes. The app itself does minimal work -- it reads the new samples and uploads them in a single batch. Typical battery impact is negligible.
Sync frequency
- After workouts: New activities sync within minutes of completion
- Health samples: Heart rate, HRV, and other continuous data syncs periodically throughout the day
- Sleep: Sleep sessions sync after you wake up, once Apple Health has finalized the session
Manual sync
You can trigger a manual sync at any time by opening the app and pulling down on the activity feed. This is useful if you want to verify that a recent workout has been uploaded.