Forma - Recovery Score for Lifting (free widget, deterministic readiness for strength training)

Hi all,

Just published my first Connect IQ widget. Forma shows a "Training Dose" (1-5) and "Training Window" (Open/Closing/Closed) on the watch face, aimed specifically at strength training. The idea: Garmin's recovery metrics are great, but there's no native readout for "how hard should I lift today." This fills that gap.

How it works:
- Proxy mode (default, no account): reads Body Battery and stress on-device, estimates a 1-5 dose. Shown with a tilde (~4/5) to indicate it's a 2-signal estimate.
- Connected mode (free account): pairs via a 6-digit code and pulls an authoritative dose from a 5-signal engine (HRV status, Body Battery, sleep, training load, HRV trend). Clean number, no tilde.

A few implementation notes for anyone building glance-based widgets:
- Glance view uses a storage relay pattern since the glance process can't access SensorHistory on System 5. The full view writes dose/label/window to Application.Storage, the glance reads it back.
- Went with a horizontal dose bar layout rather than a ring. Rings were crashing/overlapping text on the 260x260 MIP displays during testing.
- Supports 37 devices, API 4.1.0+. Instinct 2 excluded (monochrome).

It's free on the store: apps.garmin.com/.../3fc9f086-3d26-4ed4-818a-98b156a93224

Feedback welcome, especially on device-specific rendering if you're on something I haven't been able to test directly.

  • Quick update for anyone who subscribed. Shipped v1.10.0. The main change is where the dose comes from: connected mode now reads the engine's decision directly instead of recomputing on device, so a paired watch matches the web app exactly rather than approximating it.

    The glance relay picked up a freshness gate too. Each write to Application.Storage is stamped with the UTC day, and the glance refuses to show a value from a previous day, falling back to a marked estimate instead. Stops a stale dose reading as if it were today's.

    Still keen on device-specific rendering reports, especially AMOLED Venu vs the MIP Fenix and FR line. And a genuine question for the room: anyone gating glance staleness on day boundary like this, or on a timestamp delta? Curious what others landed on.