Sonara Audio
Indie creator · solo founder
Polish sprint, not a rewrite — TestFlight to App Store in 6 weeks
Polish an indie podcast listening app from TestFlight to App Store launch.
Anonymized freelance work for an indie creator: a SwiftUI podcast listening app that already had a working core but needed polish, accessibility, and store-ready submission. We took it from a rough TestFlight build to a clean public launch.
Today · 4 Apr
Podcast app
Swift 6 · 54
49-day streak
SwiftUI · 55
50-day streak
AVFoundation · 56
51-day streak
SwiftData · 57
52-day streak
- Industry
- Media / Podcasting
- Timeline
- 6 weeks
- Team
- 1
- Service
- iOS
- Project tier
- Freelance — anonymized
The Problem
What was broken.
The creator had a working app but the rough edges were everywhere: VoiceOver was patchy, the Now Playing widget was missing, episode artwork loaded on a black background for a beat too long. App Store review had bounced submission once for an unrelated metadata issue and the energy was draining.
Our Approach
How we framed it.
Treated the engagement as a polish sprint, not a rewrite. Triaged the rough edges into a one-page punch list, fixed the highest-leverage items first (Now Playing widget, VoiceOver, artwork loading state). Got the metadata right on the second submission.
Capability proof
What this case demonstrates.
This case makes the hidden work visible: strategy, architecture, delivery control, quality evidence, and handoff.
01 / Product judgment
Problem framed before UI
The creator had a working app but the rough edges were everywhere: VoiceOver was patchy, the Now Playing widget was missing, episode artwork loaded on a black background for a beat too long. App Store review had bounced submission once for an unrelated metadata issue and the energy was draining.
02 / Technical depth
7 stack decisions
Swift 6, SwiftUI, AVFoundation, SwiftData, WidgetKit, App Intents
03 / Delivery discipline
5 delivery checkpoints
Triage punch list / Now Playing + Widget / VoiceOver pass
04 / Handoff quality
6 shipped artifacts
Polished SwiftUI player UI / Now Playing info center + control center integration / WidgetKit lock-screen + home-screen widget
Production artifacts
Inspect the work behind the visible result.
Each case exposes the surfaces, systems, evidence, and handoff package that make the shipped product usable after launch.
Experience layer
Buyer or user surface
Now Playing + WidgetKit widgets shipped, VoiceOver pass on every screen, tasteful artwork skeleton, and fastlane snapshot automation so the next release is one command. App Store cleared on resubmission.
Proof 01
Polish an indie podcast listening app from TestFlight to App Store launch.
Proof 02
Used the app for a week before changing anything. Wrote a one-page punch list with the creator.
Proof 03
Polished SwiftUI player UI
Production signals
Accessible
Accessibility treated as a shipping requirement.
Release-ready
Deployment or store-release path included.
Before / after · product UI mockup
Industry · Media / Podcasting
Before:Working TestFlight build with patchy VoiceOver, no Now Playing widget, and a black-flash artwork load. App Store review had bounced once on metadata.
After:Now Playing + WidgetKit widgets shipped, VoiceOver pass on every screen, tasteful artwork skeleton, and fastlane snapshot automation so the next release is one command. App Store cleared on resubmission.
How the engagement ran.
- 01Week 1
Triage punch list
Used the app for a week before changing anything. Wrote a one-page punch list with the creator.
- 02Week 2-3
Now Playing + Widget
Implemented Now Playing info center properly + a WidgetKit widget for the current episode.
- 03Week 4
VoiceOver pass
Manual screen-by-screen pass with VoiceOver. Fixed labels, traits, and one focus order issue.
- 04Week 5
Polish + submission
Skeletons, haptics, error states. App Store metadata + screenshots refreshed.
- 05Week 6
Launch + on-call
On-call for the first 10 days post-launch. Patched two crashes that surfaced from the wider audience.
- 1
Week 1
Triage punch list
Used the app for a week before changing anything. Wrote a one-page punch list with the creator.
- 2
Week 2-3
Now Playing + Widget
Implemented Now Playing info center properly + a WidgetKit widget for the current episode.
- 3
Week 4
VoiceOver pass
Manual screen-by-screen pass with VoiceOver. Fixed labels, traits, and one focus order issue.
- 4
Week 5
Polish + submission
Skeletons, haptics, error states. App Store metadata + screenshots refreshed.
- 5
Week 6
Launch + on-call
On-call for the first 10 days post-launch. Patched two crashes that surfaced from the wider audience.
Deliverables
What we shipped.
- ✓Polished SwiftUI player UI
- ✓Now Playing info center + control center integration
- ✓WidgetKit lock-screen + home-screen widget
- ✓VoiceOver pass on every screen
- ✓fastlane snapshots automation for screenshots
- ✓App Store launch on second submission
Outcomes.
delivered outcomesPlan: voiceOver passes a manual test on every screen
Plan: now Playing widget on lock screen + control center
Plan: widgetKit home-screen widget for current episode
Plan: episode artwork loads with a tasteful skeleton, not a black flash
Plan: app Store metadata cleared on resubmission
Honest challenges
What we got wrong (or almost wrong).
The pretty version of any case study skips this part. We don't.
- 01
AVFoundation's interruption handling is stateful and easy to get wrong; rebuilt that path with explicit state transitions and added a unit test.
- 02
WidgetKit's timeline reload semantics required a small refactor of how we exposed the current episode to the widget extension.
- 03
App Store screenshots needed to be regenerated for every device size — automated this with fastlane snapshots so the next release is a one-command job.
In our own words
Indie creator engagements teach you what 'shippable' really means. Polish is the product — VoiceOver labels and a tasteful artwork skeleton are not garnish, they're the difference between a TestFlight build and an App Store one.
From the Hayaiti team
Engineering · design · security
Technical blueprint
How the work holds together.
Buyers should see that the visual layer is backed by architecture, quality gates, and operational ownership.
Experience
1Application
2Data
3Operations
4Security
5Stack used
7 technologiesRelated
Other cases like this.
Want a case study like this?
Want this level of production quality on your project?
Send a short brief and we'll reply with scope, timeline, price direction, and the first technical recommendation.