Skip to content
Selected work

Case study

Sensor-connected health and fitness apps

Two generations of BLE-connected apps: a fitness device companion with offline-first sync and live analytics, and a vitals monitor rendering ECG, SpO2 and temperature from a medical sensor.

Role
Senior iOS engineer
Platform
iOS
Stack
Swift · Objective-C · CoreBluetooth · HealthKit · Core Data · encrypted BLE transport
Period
2014 – 2019

Context

Hardware products live or die on the companion app. Users expect the device to connect every time, show data instantly, and never lose a session because the phone was offline.

The medical device added a second bar: vital-sign data has to be rendered correctly and transported securely.

My role

  • Built the BLE integration layers, the live telemetry rendering and the offline-first data model.
  • Owned sensor validation modules and HealthKit integration.

Constraints

  • Bluetooth behaviour varies by device firmware and iOS version; reconnection and data integrity had to be handled in the app.
  • Sessions recorded offline must sync without duplication or loss once the phone reconnects.
  • Medical data over BLE required encrypted communication and validation of every sample.

Key decisions

  1. Decision 1

    Offline-first with Core Data as the source of truth

    Every sample lands locally first and syncs later. Conflict handling and migration work grows, but a lost connection never loses a workout or a reading.

  2. Decision 2

    Sensor validation modules before rendering

    Each sample passes a validation module that checks range, sequence and checksum before it reaches the ECG renderer or HealthKit. A little latency per sample; no corrupted frames on screen, and better compatibility across device batches.

What I built

  • CoreBluetooth connection management with reconnection and multi-sensor support.
  • Real-time ECG graph rendering from the live data feed; SpO2 and temperature readouts.
  • Offline-first Core Data store with background sync and HealthKit write-through.
  • Redux-style state management for a unified data flow, and automated UI and unit test suites.
BLE deviceECG · SpO2 · fitnessCoreBluetooth layerreconnect · encryptedSensor validationrange · sequence · checksumLive renderingECG graph · dashboardsCore Dataoffline-firstHealthKitwrite-throughBackend syncwhen online
Samples are validated before they are stored or drawn; the local store is the source of truth and syncs when the network allows.

Validation

  • Automated UI and unit test suites, plus device-batch testing to catch firmware differences.
  • Replay of recorded sensor streams through the validation modules to verify rendering and sync behaviour.

Release and operation

  • App Store releases alongside device firmware updates, with OTA update support in the app.

What changed, and what I'd do next

  • Device compatibility increased by 15% through the sensor validation modules.measured
  • User retention improved by 15% after BLE integration and offline sync shipped in the fitness app.measured
  • App startup time reduced by 35% and memory footprint by 20% through optimisation.measured

Measured: a number from logs, analytics or a release pipeline. Observed: seen in production without a formal measurement. Design goal: what the system is built to guarantee.

What I'd do next

  • Move validation rules to a data-driven format so new device batches do not require an app release.