Privacy-first, self-hosted podcast player for iOS, macOS, and Apple Watch.
Feature Highlights • Installation • Technical Details • Contributing
Important
YourPods 2.0.2 — Complete Swift Rewrite
YourPods has been completely rewritten in native Swift and SwiftUI for version 2.0. The original Flutter/Dart codebase (v1.3.1 and earlier) has been archived on the flutter-v1 branch and is no longer maintained.
YourPods is a gPodder-compatible, privacy-first, and self-hosted podcast player. Sync your subscriptions and listening progress across all your devices using your own Nextcloud server, manage multiple profiles, and keep your data 100% yours.
Installation
The current codebase corresponds to the 2.0.2 release in the Apple App Store.
- App Store: Get automatic updates and hassle-free installation. Purchasing the App Store version directly funds YourPods development! 🙏
- TestFlight: Join the TestFlight Beta to test new features for free.
- Source: Build it yourself from this repository using the developer instructions.
For the most up-to-date features, check our website.
Feature Highlights
YourPods seamlessly integrates with gPodder-compatible servers (such as Nextcloud & NextPod) to keep your library in sync without relying on third-party clouds.
What's New in 2.0
🚀 Complete Native Rewrite
- 100% Swift and SwiftUI — fully native app replacing the Flutter-based v1.x. Faster launch times, smoother animations, and reduced memory usage.
- SwiftData for local storage — replacing Hive/SQLite for a modern, Apple-native persistence layer.
- Automatic Flutter migration — existing users seamlessly migrate their subscriptions, queue, playback positions, profiles, and settings on first launch. No data loss.
🚗 CarPlay Enhancements
- Recently Updated tab — browse new, unplayed episodes directly from CarPlay without reaching for your phone.
- Chapter navigation — skip between chapters using dedicated Prev/Next Chapter buttons on the Now Playing screen.
- Speed & silence controls — adjust playback speed and toggle trim-silence directly from CarPlay.
- Artwork placeholders — podcast and episode artwork always displays immediately with a placeholder while full artwork loads.
🗣️ Siri & App Intents
- 10 native Siri commands — play, pause, stop, resume, skip forward/backward, next episode, play latest, play a specific podcast, and set playback speed — all hands-free.
- Shortcuts integration — all intents work as Shortcuts and can be added to automations.
⏱️ Per-Podcast Settings
- Auto-queue mode (off / normal / priority), auto-download, remove after playing, and archive on complete — configurable per podcast and as global defaults for new subscriptions.
🔐 Account & Sync
- Profile deletion — fully delete profiles and all associated data.
- Per-profile sync timestamps — switching profiles no longer causes stale syncs.
- Episode Activity view — inspect recent sync actions in Settings.
⌚ Apple Watch
- Standalone playback with offline episode transfer.
- Watch complications showing playback status.
- Configurable sync — choose how many podcasts sync to the watch.
🎵 Playback
- Native AVAudioEngine — rebuilt audio pipeline for Bluetooth reliability, Siri interruption recovery, and background auto-advance.
- Sleep timer with configurable durations.
- Skip intro/outro with per-second precision (0–120s).
Carried Forward from 1.x
- Cross-Device Queue Sync via gPodder server
- OPML Import & Export for subscription migration
- Password-Protected Feeds (Patreon, premium feeds) — credentials stored securely on-device
- Local Accounts — no server required
- Live Transcripts — interactive, searchable, auto-scrolling
- Smart Chapters — RSS and ID3 tag support
- Dynamic Island & Live Activities on supported iPhones
- Listening Stats dashboard
- Background Refresh with configurable intervals
- Unified Search — iTunes or PodcastIndex
- Appearance — system, light, or dark theme; configurable tab bar style and start page
Getting Started for Developers
- Prerequisites: Xcode 16+ and XcodeGen (
brew install xcodegen). - Clone:
git clone https://github.com/asecretcompany/yourpods-source.git - Generate project:
xcodegen generate - Open:
open YourPods.xcodeproj - Run: Select the
YourPodsscheme and build for an iOS Simulator or device.
Note
The project uses project.yml (XcodeGen) to generate the Xcode project. Do not edit YourPods.xcodeproj directly — make changes in project.yml and re-run xcodegen generate.
Technical
| Language | Swift 5.9 |
| UI | SwiftUI |
| Storage | SwiftData (iOS 17+) |
| Audio | AVFoundation / AVAudioEngine |
| Sync | gPodder-compatible (Nextcloud gpodder-sync) |
| Minimum Targets | iOS 17.0, watchOS 10.0 |
| Build System | XcodeGen (project.yml) + Swift Package Manager |
Architecture
YourPods/YourPods/Audio/— Audio playback engine (AVAudioEngine-based)YourPods/YourPods/Models/— SwiftData models (Podcast, Episode, ServerProfile, etc.)YourPods/YourPods/Networking/— gPodder API client, RSS parser, URL resolverYourPods/YourPods/Services/— CarPlay, Siri, Live Activities, Chapters, Transcripts, Watch, Downloads, Background Refresh, Listening Stats, OPML, Flutter migrationYourPods/YourPods/State/— State managers (Player, Podcast, Settings, Navigation, Sleep Timer)YourPods/YourPods/Views/— SwiftUI views and reusable componentsYourPodsWatch/— watchOS app with standalone playbackYourPodsWidgets/— Live Activities and widget extensionsYourPodsComplication/— watchOS complications
Legacy Flutter Codebase
The original Flutter/Dart codebase (v1.0–v1.3.1) is preserved on the flutter-v1 branch for reference. It is no longer maintained.
License
This project is licensed under the GNU General Public License v3.0.
Trademark Policy
"YourPods", the YourPods logo, and the YourPods design are trademarks of A Secret Company, LLC. You may modify and redistribute this software under the terms of the GNU General Public License v3.0, but you may not use the "YourPods" name, logo, or assets in any derivative works, modified versions, or commercial products without explicit written permission.
If you fork this project or build it for public distribution, you must remove all references to "YourPods" and replace the logo with your own. This ensures that users do not confuse your version with the official release.
