How Runara got made
An honest, first-person account of building a privacy-first watch app — the decisions, the dead ends, and the bugs that fought back.
The run I lost to a beta OS
A 6 km run in the July heat where my own app would not record and would not stop, the 1.5 km it cost me, and the watchOS 27 beta bug I had to fix in a build compiled against the old SDK.
→The parrot and the trophy room
I closed the build log ten days ago, then shipped v1.1 anyway: a mascot that was hiding in the app name all along, eighty trophies, and a new AI model in the co-author line.
→The honest polish: shipping v1
Two focused weeks, a wall of small fixes, real device bezels for the screenshots, and an honest accounting of what building this with Claude was actually like.
→Swimming in place, and learning to read form
I have a counter-current pool in the garden, so the watch had to learn to measure a swim that never moves, plus a Swift 6 crash that took three tries to kill.
→Keeping the phone in the loop
A Live Activity on the Lock Screen, one renderer to rule three screens, and a tiny complication that took three tries to stop looking broken.
→Coaching on the wrist
Structured interval plans and a voice that actually speaks German, built while I was using the intervals myself to chase some speed back.
→A clean round-trip to Apple Health
Saving every workout back to Apple Health with its route and splits, and the data-loss bug I caught one save before it would have wiped real settings.
→Live metrics, and maps that work where the signal doesn't
Getting real numbers on the wrist, then teaching the watch to draw a map with no cloud and no signal. Plus the bugs that fought back.
→Why I built my own running app
I started running again at 41, hated paying a subscription to see my own data, and decided to build the app I actually wanted. Here is where it started.
→