I started developing an open source podcast client in 2023 with the goal of building something that doesn’t rely on a central server. By 2024 I had a working alpha that already included features like transcripts, accidental skip detection, and other improvements I felt were missing from existing podcast apps.
This isn’t my first attempt at building a podcast app — I actually released my first client, One Trick Pony, about nine years ago. Life took me in other directions for a while, but now I’m back at it—this time starting almost from scratch. I’m targeting iOS 26, adopting Swift 6, and following its strict concurrency rules to avoid race conditions. Some parts of the old codebase will be reused, but the foundation is fresh.
The goal of this project is simple: give back to the community. I’ve enjoyed countless free podcasts over the last 20 years, and I also use free tools like Podlove Publisher and Ultraschall to publish my own. This app is my way of helping preserve podcasting as an open, independent medium—resisting efforts by companies to lock it down.
Key principles of the project:
- Built on the community-driven podcast catalog fyyd
- Independent of proprietary servers (all refreshes run locally on-device)
- 100% open source and free to use
- No locked features or restrictions
-
Integrate Settings (Per Podcasts and global)
-
Use Notification Center to send notification to the player if settings are changed.
-
[?] fix Skip Chapters (validate skip to and skip last)
-
Refactor mp3ChapterReader to send a custom object (concurrency)
-
mp3ChapterReader work with remote files
- add podcast via URL
- refresh podcast content via Button
- refresh all with pull to refresh
- download episodes
-
- show download progress
-
- delete files
-
- implement automatic background downloads
- remove all files when one episode is archived
- if Playlist contains episode, move it to the front/end instead of adding another copy
- play / pause
- skip forward / backward
-
- make time adjustable
- jump to chapter
- Chapter marks
-
- PSC
-
- m4a
-
- mp3
-
- extracted from shownotes
-
- Update Chapter View more snappy
- include chapter art for mp3/m4a
- include chapter links for mp3/m4a
- postprocess chapters to find duration/end if no value is given ( chapter[n].end = chapter[n+1].start ? episode.end)
- save last played episode and reload when opening the app
- OPML import
-
- to be validated with big file
-
- Show import progress
-
- Handle no longer existing feeds (HTTP Status 404, 500, 410 oder 200 but HTML and no XML)
- podcast directory search
-
- iTunes Directory Search (basic)
-
- Fyyd Directory Search
-
- Fyyd recomendations
- auto download/refresh feeds
- skip manually selected chapters
- sleep timer
- play next queue
- set playbackspeed
-
- [?] (per podcast)
- nice UI
- nice Logo
- nice name - Up Next
- CarPlay
- OPML export
- Automatic deletion of files
-
- Based on last x files
-
- Based on time passed since release
- Notification after refresh
- skip detection
- share Episode
-
- from play now screen
-
- from episode view screen
-
- (including Playposition if possible)
##1.1 min requirements
-
Sideloads via iCloud Drive
-
Downloads of Episodes withouth subscribing to a feed
-
accept opml from share sheet
-
accept rss / xml from share sheet
-
accept any URL that could be a feed
- custom playlists
##1.x requirements
- Transkripts
-
- optimized Transcipts view (long text)
- Apple Watch App
- remove tracking information from URLs
- share little videos from episodes for social media
- provide suggestions for apple Journal App (https://developer.apple.com/documentation/journalingsuggestions)