Internet radio player with zero ads, trackers, telemetry, and software libre. Powered by Radio Browser community database (30,000+ stations). iOS counterpart to RadioDroid (Android).
- iOS 16+, SwiftUI, no third-party dependencies
- CarPlay support — browse Favorites, Recent, and Popular stations from your car's display
- License: GPL-3.0
This app is being built mostly using Claude Code. Relevant files:
- SPEC.md - this is the behavioral truth. Every UI behavior, API call, and edge case defined here.
- PLAN.md - this is the architectural guide. It defines the file structure, patterns, and phased delivery.
- .claude/commands/implement.md - Skill to implement new features by running
/implement audio playback. - .claude/commands/init.md - Skill to start a new project by running
/init an iPhone app powered by Radio Browser similar to RadioDroid".
- Xcode 15.0+
- XcodeGen — install with
brew install xcodegen
The .xcodeproj is generated from project.yml using XcodeGen. Run this after cloning, and after adding or removing any .swift file:
xcodegen generatexcodebuild -project LibreRadio.xcodeproj -scheme LibreRadio \
-destination 'platform=iOS Simulator,name=iPhone 17 Pro' \
-quiet buildxcodebuild -project LibreRadio.xcodeproj -scheme LibreRadio \
-destination 'platform=iOS Simulator,name=iPhone 17 Pro' \
-enableCodeCoverage YES testTo see just the summary (pass/fail counts and errors):
xcodebuild -project LibreRadio.xcodeproj -scheme LibreRadio \
-destination 'platform=iOS Simulator,name=iPhone 17 Pro' \
-enableCodeCoverage YES test 2>&1 \
| grep -E '(error:.*\.swift|Executed|TEST SUCCEEDED|TEST FAILED)'xcodebuild -project LibreRadio.xcodeproj -scheme LibreRadio cleanopen LibreRadio.xcodeprojGitHub Actions runs build and tests on every push and PR to main (see .github/workflows/ios.yml).
This app icon uses the svg version of Levitating, Meditating, Flute-playing Gnu.
Special thanks to Radio Browser which provides the radio data. You can make a donation (one time or repeating) or contribute in other ways.
Also to RadioDroid from which this project is inspired.
For questions, feedback, or support requests, you can create an issue or send me an email to hello+libreradio@borrazas.org.