BSX Insight
Hardware-paired app for endurance athletes. Guides a lactate-threshold field test using a wearable muscle-oxygenation sensor and turns the result into personalized training zones.
Overview
BSX Insight was the consumer app for the BSX Insight wearable, a calf-worn muscle oxygenation sensor that let cyclists and runners run a lab-grade lactate threshold test from anywhere: a track, a road, an indoor trainer. The app drove the entire test protocol: it onboarded the athlete, calibrated the sensor over Bluetooth LE, walked them through staged power or pace targets, captured live SmO2 and heart-rate data, and computed the resulting training zones once the test completed.
I worked on this app at Mutual Mobile, the agency that built and maintained it for BSX Athletics. The app shipped on iOS and Android and was a core part of the BSX hardware experience for a multi-year stretch.
At a glance
Key features
- Real-time assessment flow. Multi-stage endurance test with live target power (cycling) or pace (running), per-stage countdown, and a full-screen dial UI showing the active target and elapsed time.
- Live biometric overlay. Heart rate and SmO2 streamed from the sensor, displayed during the test and persisted as part of the result.
- Training zone computation. The app calculated anaerobic capacity (LT power or LT speed) and derived five personalized training zones, Active Recovery through VO2 Max, for both power and heart rate.
- Test history. Athletes could browse prior assessments scoped by sport and revisit the resulting zones.
- Sport-aware UI. Cycling tests in watts; running tests in m/s, displayed as min/mile or min/km depending on locale.
- Smart trainer integration. The app could pair with a Wahoo KICKR over Bluetooth and automatically set resistance to match each stage's target wattage, so the athlete just rode while the trainer held the load.
Technical highlights
- Dual wireless protocol support. The app spoke both BLE (for the BSX sensor) and ANT+ (for accessory devices: heart rate straps, cycling power meters). ANT+ is the dominant protocol in competitive cycling and triathlon gear, so supporting it alongside BLE meant athletes could use their existing equipment ecosystem rather than buy new hardware.
- BLE protocol work. Parsing the BSX device's status characteristic, which encoded test state, sensor health, battery, and live readings into a packed binary buffer. Built defensively around the realities of consumer BLE: dropouts, partial reads, reconnects.
- Wahoo KICKR ERG control. When a KICKR smart trainer was detected via ANT+, the assessment view polled it on a 10-second interval and called
setLoad()to push the target wattage for each stage. The trainer held the load automatically. That's a meaningfully better experience than asking an athlete to manually hold a power target for several minutes mid-test. - Hybrid architecture. Worked inside a JS app that had to behave like a native one: Hammer.js touch events, custom navigation, fixed scroll regions, careful memory hygiene because Cordova's UIWebView didn't forgive leaks.
- Stateful test orchestration. The assessment view coordinated several long-running concerns at once: BLE keepalive, stage timing, anticipated-stage tracking, "hold to end" cancellation, data buffering for upload, and a fallback path for connection loss mid-test.
- Dial UI. The full-screen ring display for the active stage was an early pass at the kind of focused, single-purpose moment-of-truth UI I'd later return to in personal projects.