Personal Best Hits \$5K/mo: A Solo iOS App Now Built with Claude Code
October 9, 2026 · 1178 words
| Item | Detail |
|---|---|
| What it is | Workout tracker for iPhone, iPad and Apple Watch that reads your Apple Health data |
| Builder | Developer (Shaun Donnelly, solo, part-time) |
| AI tool | Claude Code, added to an existing codebase; the founder reviews every line |
| Stack | SwiftUI, no server; data stays on the phone via Apple Health |
| Time to launch | v1.0 in about 5 days (May 2020) |
| Revenue | Close to $5K MRR (self-reported, September 2026) |
| Source | Indie Hackers, September 11, 2026 |

Personal Best is a workout tracker made by one developer, part-time. It is close to $5K in monthly recurring revenue (MRR, the subscription money that comes in every month). It has over 500,000 downloads and about 50,000 monthly active users.
This one is different from most case studies here. The app was not vibe-coded from scratch. Shaun Donnelly built it by hand in 2020, then added Claude Code to his workflow later.
The one point to take away: an AI coding tool speeds up a good product, but the money here comes from cheap infrastructure and features people want to share.
The problem: Apple Health data nobody looks at
iPhones and Apple Watches record a lot of workout data. Apple's own apps show it, but not in much depth.
Personal Best reads that data from Apple Health and turns it into stats, goals, training load and replays. The App Store subtitle is "Fitness, training load & pace". It also works with data from Strava, Peloton and other apps that write to Apple Health.
It started as a lockdown hobby in May 2020. Shaun followed SwiftUI tutorials and shipped a basic v1.0 in about five days. He planned to stop there. He didn't.
How it was built
The stack is short, and that's the point.
- SwiftUI. Apple's framework for building iPhone, iPad and Watch screens in Swift.
- No server. The app runs fully on the phone. Workout data lives in Apple Health, not in a database Shaun has to run.
- Apple's newest features. The app adopts new iOS features fast, like Siri, Shortcuts and Spotlight. The App Store page now mentions scanning gym machines and heart rate zones.
The AI part is recent. In the interview, Shaun's one-line summary of what changed: "The only change I've made since 2020 is adding Claude Code to my stack."
He says he now uses Claude heavily to write code, but still reviews every line. That's a useful model for experienced developers. The AI writes, the human stays the editor.
What the interview doesn't say: which features Claude Code wrote, how much faster he ships, or what he pays for it. Those are not disclosed.
How it makes money

Personal Best is freemium. Freemium means the core app is free and extra features cost money. The paid tier is called Personal Best Pro, introduced in late 2020.
The US App Store lists these in-app purchases:
| Option | US price |
|---|---|
| Weekly | $2.49 |
| Monthly | $2.99 or $3.99 |
| Yearly | $14.99 to $34.99 (several listings) |
| Lifetime (Unlock Pro Features) | $99.00 |
The several yearly prices may be older price points or price tests, but that is unconfirmed: the app doesn't explain them publicly.
Pro adds extra stats, heart rate zones, form history and unlimited goals, per the interview.
The margin is the interesting part. With no server, Shaun says subscriptions are "almost 100% profit" because he has virtually no marginal costs. Marginal cost means the extra cost of serving one more user. Here it is close to zero.
First users and growth
Growth was slow at first, by Shaun's account. Three things changed that.
1. Apple featured it. The app has been featured on the App Store several times. It also appeared in the WWDC 2026 keynote. His lesson is that Apple loves apps that adopt its new features.
2. Users became the marketing. A sharing feature turns a workout into a polished image for social media. Every share shows the app to new people.
3. Bug reporters get rewarded. Users who report bugs get a promo code for a year of Pro. That builds goodwill and better bug reports.
He also posts on X, Bluesky and Instagram.
One lesson he names: he defined the product's purpose late, and that slowed growth. He suggests deciding it early.
And he still contracts part-time for a startup. The day job pays the bills while the app grows.
What to copy
- Avoid servers if you can. On-device apps have near-zero running costs.
- Adopt the platform's new features fast. It's how small apps get featured.
- Build a share button people want to use. Shareable output is free distribution.
- Use AI as a writer, stay the reviewer. Read every line it writes.
- Keep income while you grow. Part-time contracting bought this app years of runway.
If you vibe-code this
This app type is an on-device fitness tracker that reads health data and sells subscriptions. Here are the checks I'd run on any app like it:
- Ask for the minimum health permissions. Only request the Apple Health data types you actually show.
- Strip location from shared images. Workout routes and photo metadata can reveal where someone lives.
- Verify purchases with StoreKit, not a local flag. A "isPro = true" setting is easy to flip.
- Keep health data out of analytics. Send events like "opened stats", never heart rates or routes.
- Check every SDK you add. Third-party packages can collect more than you expect. See supply chain security.
A small StoreKit 2 check that only trusts verified transactions:
import StoreKit
func hasPro() async -> Bool {
for await result in Transaction.currentEntitlements {
// Only trust transactions Apple has signed and verified
if case .verified(let tx) = result, tx.revocationDate == nil {
return true
}
}
return false
}
For secrets on device, the same idea applies as in secure storage for mobile apps.
Building a subscription app with Claude Code? Email [email protected] for a vibe-code security audit.
Key takeaway
Personal Best shows that the cheapest app to run can be the most profitable. Claude Code is now part of how it's built, but the $5K a month comes from no servers, Apple features and a share button people use.
More case studies: Vibe-coded apps making money · Security basics: Vibe coding security guide