
Apple Watch hardware carries some of the most capable optical heart rate sensors and motion coprocessors on the market, and watchOS 11’s Vitals app and Training Load moved Apple further into recovery tracking. For runners, cyclists and triathletes used to Garmin Firstbeat or TrainingPeaks, real gaps remain.
Native watchOS metrics often rely on proprietary, opaque ratings, a subjective 0 to 10 effort score, for instance, rather than transparent physiological modelling. Established endurance benchmarks such as Banister TRIMP, Acute and Chronic Training Load, Training Stress Balance and cycling-specific VO2 max derived from power data are largely absent. Third-party alternatives frequently lock raw Apple Health data behind mandatory monthly subscriptions and route biometric data through external cloud servers.
SportVitals, built by developer Luca Pasut, fills that gap: a fully on-device, transparent endurance analytics suite for iOS 18 and watchOS 11, built on established exercise physiology.

How it works: a fully on-device architecture
TL;DR: SportVitals reads raw Apple Health data, R-R heartbeat series, power samples, workouts, sleep stages, and processes all algorithms locally in Swift 6 using SwiftData. It calculates Banister TRIMP, 7-day ATL, 42-day CTL, TSB, ACWR, and rolling 21-day log-transformed RMSSD baselines without third-party trackers, subscriptions, or remote cloud servers.
Unlike traditional health platforms that upload health exports to remote databases, SportVitals processes all calculations locally on the athlete’s device. The architecture relies on an authoritative iOS compute engine that synchronises lightweight, versioned snapshots to Apple Watch and Home Screen widgets.
The app ingests raw beat-to-beat intervals via HKHeartbeatSeries, cycling power, sleep stages and cardiovascular vitals, and turns them into training guidance.
Training load and HRV baselines in practice
Training load, form and ACWR during a build week
An athlete preparing for a half marathon completes a 75-minute tempo run averaging 84% heart rate reserve. Banister’s exponential formula puts the workout TRIMP at 85. Before the session, this athlete’s Acute Training Load sat at 34 and Chronic Training Load at 44, a Training Stress Balance of +10, marked Fresh. Adding the 85-TRIMP session pushes ATL to 52 and CTL to 45, moving TSB to -7, marked Productive Fatigue, and the Acute-to-Chronic Workload Ratio to 1.16, inside the 0.8 to 1.3 sweet spot associated with productive adaptation rather than the injury risk that begins above 1.5.
| Metric | Before the run | After the run |
|---|---|---|
| ATL (7-day) | 34 | 52 |
| CTL (42-day) | 44 | 45 |
| TSB (Form) | +10 (Fresh) | -7 (Productive Fatigue) |
| ACWR | — | 1.16 |

Nightly RMSSD against a 21-day baseline
Rather than judging a single instantaneous HRV reading or a daytime spot check, SportVitals calculates true RMSSD across an athlete’s main sleep window from raw heartbeat data. Over the previous 21 days, one athlete’s log-normal RMSSD baseline sits between 48 ms and 64 ms. A recorded nightly RMSSD of 54 ms matches that baseline, giving a Balanced HRV status and preserving a high morning readiness score. After heavy travel and disrupted sleep, nightly RMSSD drops to 31 ms, more than two standard deviations below baseline. SportVitals then marks HRV status Low, or Unbalanced, reduces morning readiness, and warns against high-intensity intervals.
The complete metric suite
SportVitals covers a broad set of physiological and endurance metrics directly on iOS and watchOS:
- Nightly RMSSD and 21-day HRV baseline: evaluates nocturnal autonomic balance from raw beat-to-beat data, categorised into Balanced, Unbalanced or Low.
- Banister TRIMP: an exponentially weighted cardiovascular workload calculated per workout from heart rate reserve and duration.
- ATL, CTL and TSB (Form): exponentially weighted moving averages tracking 7-day acute fatigue, 42-day chronic fitness, and the balance between the two.
- ACWR: monitors workload progression against an explicit 0.8 to 1.3 optimal zone and a 1.5-plus injury-risk threshold.
- Training focus breakdown: splits accumulated training impulse into Low Aerobic, High Aerobic and Anaerobic categories.
- Cycling VO2 max and FTP integration: estimates cycling-specific VO2 max from a 20-minute sustained power window or a manual FTP entry, using MAP = FTP / 0.78 and VO2 max = 10.8 × MAP / weight + 7.
- Running VO2 max and lactate threshold: incorporates Apple Health VO2 max trends and estimates running lactate threshold pace and heart rate ranges.
- Training readiness (0 to 100): a weighted morning score combining sleep quality (15%), TRIMP recovery (30%), HRV status (20%) and ATL/CTL load tolerance (25%), reduced through the day as same-day training strain accumulates.
- Energy reserve and stress: a continuous 0 to 100 intraday battery that charges during restful sleep and low stress and discharges with physical strain and elevated heart rate.
- Endurance score (1,000 to 10,000) and Hill score (0 to 100): multi-factor modelling of long-term aerobic capacity, consistency, elevation gain and grade endurance.
- Sleep bank and circadian rhythm: tracks 7-night cumulative sleep debt or surplus and models alertness peaks and dips through the day.
- Biological age: an 11-factor estimate benchmarking cardiovascular fitness, sleep, recovery, body composition and four weeks of activity against chronological age.
- Towards new heights: compares an athlete’s training level against best-in-class metrics, showing how it stacks up against elite performance.
- Complete workout analysis: a structured, detailed breakdown of each individual workout.

Privacy first: why fully on-device processing matters
Many modern fitness trackers require a permanent account, mandatory cloud synchronisation, and external servers that aggregate private biometric records. SportVitals takes a different approach:
- Zero third-party SDKs: no third-party analytics, ad frameworks, or crash-reporting libraries are included.
- Local processing: every calculation, from TRIMP integration to 42-day CTL convolutions, runs entirely on the athlete’s iPhone and Apple Watch via SportVitalsCore.
- Private storage: records are stored locally using Apple’s SwiftData framework, syncing across an athlete’s own devices exclusively through their private Apple iCloud container (CloudKit).
- No forced accounts: nobody creates an external account, enters a personal email, or shares biometric data with a third-party server.
Quick answers
How does SportVitals calculate HRV differently from Apple's native Vitals app?
Apple Health natively reports occasional HRV samples using SDNN, often sampled sparsely through the day. SportVitals queries raw beat-to-beat data recorded during an athlete’s main sleep window, calculates the Root Mean Square of Successive Differences on uninterrupted segments, log-transforms the values, and benchmarks the 7-day average against a rolling 21-day individual baseline.
How does SportVitals determine cycling VO2 max from Apple Watch workouts?
When a cycling workout carries power data from a paired Bluetooth power meter or smart trainer, SportVitals scans the previous 90 days for the best sustained 20-minute power window to estimate Functional Threshold Power, or uses a manually configured FTP value. It converts FTP into Maximum Aerobic Power (MAP = FTP / 0.78) and calculates cycling VO2 max normalised by body weight (10.8 x MAP / kg + 7), giving cyclists and triathletes a discipline-specific aerobic metric distinct from running.
Is any biometric or HealthKit data sent to external cloud servers?
No, SportVitals contains zero external analytics, tracking scripts, or cloud processing pipelines. All calculations, historical models and sleep analyses run locally on-device. If an athlete enables the optional Apple Intelligence or on-device LLM insight features, queries run through Apple’s on-device Foundation Models, or through a personal, bring-your-own API key stored securely in the device Keychain, without any intermediate server.

Availability and links
SportVitals is available on the App Store for iPhone (iOS 18.0+) and Apple Watch (watchOS 11.0+).
Download: at the iOS App Store, https://apps.apple.com/app/sportvitals/id6781699989.
Related reading
- Somvia: Threshold, Critical Power and Race Times From the Apple Watch You Already Wear
- My Running Dashboard: Analytics Built From One Runner’s DNF
- athletedata: AI Coach Built On Wearable Data
Last Updated on 16 September 2026 by the5krunner

tfk is the founder and author of the5krunner, an independent endurance sports technology publication. With 20 years of hands-on testing of GPS watches and wearables, and competing in triathlons at an international age-group level, tfk provides in-depth expert analysis of fitness technology for serious athletes and endurance sport competitors. ID
