How LoudReader Was Vibe-Coded with Claude Code: Stack and Pricing
October 7, 2026 · 1327 words
| Item | Detail |
|---|---|
| What it is | iPhone/iPad app that reads EPUBs, PDFs, web articles and Project Gutenberg classics aloud, with speech generated on the device |
| Builder | Solo maker; background not disclosed |
| AI tool | Claude Code and Codex, "throughout" (founder's HN post) |
| Stack | Swift iOS app, Kokoro text-to-speech model running on-device, KittenTTS fallback for older iPhones |
| Time to launch | About 2–3 months of weekends |
| Revenue | Not disclosed (pricing page only: $7.99/mo, $49.99/yr, $199.99 lifetime) |
| Source | Show HN, April 15, 2026 |

LoudReader is an iPhone app that turns books, PDFs and web articles into audio. The voice is generated on the phone itself, so it works with no internet and no account. Its maker built it over two to three months of weekends, with Claude Code and Codex doing much of the coding. It now sells a Premium tier at $7.99 a month, $49.99 a year or $199.99 once.
Revenue is not disclosed. So this teardown sticks to what is public: the problem, the build, and the price ladder.
The one point to take away: a hard technical core, plus a generous free tier, gives a small app something worth paying for.
The problem: out of audiobooks on a flight
The Show HN title says it plainly. The maker ran out of audiobooks on a flight and wanted their own text read aloud instead.
Most text-to-speech apps (TTS, software that turns written text into spoken audio) send your text to a cloud server. That fails at 35,000 feet. It also means your reading list leaves your phone.
So the product promise became "offline and private". The App Store listing says all speech synthesis happens entirely on the device. That single promise shapes every technical choice below.
How it was built
The core is Kokoro, an open text-to-speech model. The maker ported it to run on the iPhone. "On-device" means the phone's own chip does the work, not a server.
Getting a model to run is only step one. The post lists the harder parts:
- Streaming synthesis. Playback starts before the whole sentence is generated, so you don't wait in silence.
- Heat and battery. The post mentions managing the phone's heat. A follow-up comment describes a "cruise mode" that saves battery.
- A Swift port of a helper library. Kokoro depends on a text-preparation library called misaki. The maker rewrote it in Swift, Apple's app language.
- The Neural Engine gap. The Neural Engine is the iPhone's AI chip. The maker explains that some of Kokoro's operations aren't supported on it, so running on the GPU and CPU turned out faster.
- Older phones. Kokoro works well on iPhone 14 Pro and newer. On an iPhone 12 mini and in the simulator, the same code produced crackling noise. The maker ported a lighter model, KittenTTS, as a fallback.
The AI part is stated directly. In the maker's words: "On the LLM tooling question up front: YES, used Claude Code and Codex throughout."
The interesting detail is how the tools were used. The maker ran several AI sessions side by side to hunt bugs, and more sessions to review the code, a wisdom-of-the-crowd approach. If one agent misses a bug, another might catch it.
Notice what the AI could not do alone. The crackling-audio bug only appeared on real, older hardware. Someone still had to test on actual devices and decide on a fallback model.
How it makes money

LoudReader is freemium, meaning the base app is free and a paid tier unlocks more. Here is the price list from the website and App Store:
| Tier | Price | What you get |
|---|---|---|
| Free | $0 | Unlimited listening and imports; all voices for the first 8 hours, then one free English voice |
| Premium monthly | $7.99 | All 23 narrators in 10 languages, unlimited voice cloning, speed control, sleep timer, soundscapes, unlimited saved articles |
| Premium yearly | $49.99 | Same as monthly |
| Lifetime | $199.99 | Same, paid once |
Three things stand out.
First, the free tier limits variety, not usage. You can listen as much as you like. But after eight hours, you keep only one English voice. The first eight hours act as a trial of everything.
Second, the yearly plan costs about half of twelve monthly payments ($49.99 versus $95.88). That nudges people toward the annual plan.
Third, the lifetime price is about four years of the annual plan. It suits people who dislike subscriptions.
There is also a cost angle. Because speech is generated on the phone, extra listening hours do not add a cloud server bill. For a solo maker, that keeps running costs predictable.
First users
The maker has not shared user or download numbers. The public launch record is the Show HN post from April 15, 2026, which drew a small response.
The App Store listing shows steady shipping since then. It is on version 1.12, updated in late September 2026. The website now lists voice cloning, which the original HN post did not mention.
What to copy
- Start from a moment you lived. "I ran out of audiobooks on a flight" is a clear, relatable pitch.
- Put your edge in the hard part. Anyone can wrap a cloud TTS service. Running the model offline is harder to copy.
- Use parallel AI reviewers. Run a second or third agent just to review what the first one wrote.
- Test on old hardware early. Model bugs can show up only on specific chips.
- Be honest about limits. The maker openly said complex PDFs, like multi-column papers, still read badly.
If you vibe-code this
This app type is an offline iOS app with in-app subscriptions and file imports. Here are the checks I'd run on any app like it:
- Check premium access with Apple-verified receipts. Don't unlock paid features from a simple saved true/false flag. Use StoreKit 2's verified transactions.
- Treat imported files as untrusted. EPUBs and PDFs come from anywhere. Cap file sizes and fail gracefully on broken files.
- Keep API keys out of the app bundle. If you add a server later, the key belongs on the server. See environment variables security.
- Guard server-side article fetching. If your server downloads URLs for users, block internal addresses. See SSRF in unvalidated fetch.
- Review ported packages and models. Know where every dependency comes from. See supply chain security.
A short StoreKit 2 check for premium access:
import StoreKit
let premiumIDs: Set<String> = ["premium.monthly", "premium.yearly", "premium.lifetime"]
func hasPremium() async -> Bool {
for await result in Transaction.currentEntitlements {
// Only trust transactions Apple has signed and verified
guard case .verified(let transaction) = result else { continue }
if premiumIDs.contains(transaction.productID) && transaction.revocationDate == nil {
return true
}
}
return false
}
Building a subscription app with Claude Code or Codex? Email [email protected] for a vibe-code security audit before you launch.
Key takeaway
LoudReader shows that AI tools can carry a lot of the typing, but the product's value sits in a hard, human-chosen constraint: everything runs offline. Pick a constraint users care about, let the AI help build it, and test the edges yourself.
More case studies: Vibe-coded apps making money · Security basics: Vibe coding security guide