SportVitals: transparent training load and HRV for Apple Watch

SportVitals training load dashboard shown on an Apple Watch and iPhone

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.

SportVitals iOS dashboard showing training readiness and load SportVitals iOS dashboard showing recovery and sleep metrics SportVitals iOS dashboard showing endurance and hill scores

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

42-day SportVitals training load chart showing ATL, CTL, TSB and ACWR zones

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.

SportVitals Training Readiness breakdown showing sleep quality, TRIMP recovery, HRV baseline and load tolerance contributions SportVitals comparison of an athlete's training level against elite athletes SportVitals workout detail screen with a structured session breakdown

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.

SportVitals workout suggestions based on sport and current training metrics

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

Last Updated on 16 September 2026 by the5krunner


My favourite kit and nutrition

  • Garmin Fenix 9 Pro — I’ve just bought one.
  • Injinji – Runners protect your toes. Avoid discomfort and minor injury. Run more. Run faster. I use them.
  • Garmin 90-degree charging adapter — A small keyring adapter you can use anywhere. Essential when away. I use one.
  • Garmin charging puck — the fastest and most reliable way to top up your Garmin before a session. I use one.
  • Ravemen FR300 — Front light that mounts directly under your Garmin or Wahoo head unit. Keeps your bars clean and your beam pointed where it matters. I use one.
  • Body Glide – The blue anti-chafe stick that all swimmers and many runners use. I use it.
  • Maurten — The race nutrition trusted by elite athletes. Gels and drink mixes engineered to be easy on the stomach. I use them.
  • Garmin Varia RTL515 — A radar rear light that alerts you to vehicles approaching from behind. Pairs with your Edge or Wahoo. I use this model.
  • Favero Assioma Pro RS2 — The power-meter pedals most serious cyclists choose. Accurate, easy to move between bikes. I use this model.
  • Garmin Forerunner 970 — A serious choice for a pro-grade triathlon watch. I use this.
  • Polar H10 — My daily driver for accurate, waking HRV readings.
  • Wahoo ELEMNT Roam 3 — The bike computer that has the feature Garmin lacks: usability. I use mine on most rides.


Reader-Powered Content

Buy me a coffee

This content is not sponsored. It’s mostly me behind the labour of love, which is this site, and I appreciate everyone who supports it.

Support the site: Follow (free, fewer ads) · Subscribe (paid, ad-free) · Buy Me A Coffee ❤️

All articles are written by real people, fact-checked, and verified for originality. See the Editorial Policy. FTC: Affiliate Disclosure — some links pay commission. As an Amazon Associate, I earn from qualifying purchases.

Leave a Reply

Your email address will not be published. Required fields are marked *