iPhone and iPad app for organizing and playing manually curated podcast episode playlists.
- Search and follow podcasts via the iTunes Search API
- Build custom playlists with explicit episode ordering
- Offline downloads cached locally
- Share, export and import playlists
- iPhone or iPad running iOS 26.0 or later
- Xcode 26 or later to build from source
StoryPlaylist never asks for a privacy permission — it does not use the camera, microphone, location, contacts, photos, or tracking. It does rely on these system capabilities:
| Capability | Why it's needed |
|---|---|
| Background audio | Keeps playback running when the app is backgrounded or the screen is locked, and drives the lock-screen controls. |
| Background fetch | Refreshes followed podcast feeds for new episodes while the app isn't open. |
| Background processing | Finishes queued episode downloads after you leave the app. |
| Network access | Podcast search (the iTunes Search API), RSS feed downloads, artwork, and episode audio. |
| Arbitrary loads (ATS exception) | Some podcast feeds and media hosts are still HTTP-only, so App Transport Security is relaxed for them. |
| Local file access | Cached downloads, plus importing and exporting .storyplaylist backup files. |
Open StoryPlaylist.xcodeproj and build the StoryPlaylist scheme. There is no
package resolution or bootstrap step — StoryPlaylist has no third-party
dependencies and uses only Apple frameworks (SwiftUI, SwiftData, AVFoundation,
Combine, CryptoKit, URLSession).
- App Store screenshots —
scripts/appstore/compose.pydrops your raw device captures into branded, device-framed, captioned composites at App Store resolutions. See scripts/appstore/README.md.
storyplaylist.leocov.com — support, privacy policy, and terms of service.
Contributing to this repository? See AGENTS.md.

