IPTV Player
Bro IPTV Player is a free, fast, private, and simple way to watch M3U playlists on iPhone, iPad, Mac, and Apple TV.
Features:
- Works across iOS, iPadOS, macOS, and tvOS
- Supports M3U and M3U8 playlists stored locally or accessed remotely.
- Supports EPG
- Picture in Picture support
- Protect playlists with a PIN for extra privacy
- Saved playlists and app data stay on your device and are never sent to our servers (actually we do not have servers at all)
- Share playlists with other devices
- Free
- No account or registration required
- No ads, no tracking (only Firebase Crashlytics to collect crash reports)
- Open source (this repo contains the all application source code)
- 15 languages supported (ar, de, es, fr, hi, id, it, ja, ko, pt-BR, ru, th, tr, vi, zh-Hans)
‼️ Important:
Bro IPTV Player does not provide, host, sell, or include any channels, media, or playlists. The app only plays content added by the user, and you are responsible for having the rights to access that content.
----
Apple TV
----
macOS
----
iPad
----
For Developers
- Xcode 26.6+
- Swift 6.2+
- SwiftPM
- Ruby 3+ (
fastlane) - For now there is no CI/CD pipeline
bundle install
IntelliJ IDEA Last Working Setup
- IntelliJ IDEA 2026.2.3
- Kotlin Multiplatform 262.10968.207-IJ
- Xcode 27.1 (27A9275)
- MacOS 27.2 (Golden Gate)
Starting with IntelliJ IDEA 2026.3 and Android Studio Rabbit 2 | 2026.2.2, we’re discontinuing Swift language IDE features in the Kotlin Multiplatform (KMP) plugin.
App Signing
- Project is set for manual signing (you need to change it if you build for your own real device)
- Build for simulators you do not need to sign the app
- fastlane uses signing identities from
./.secrets/directory (not committed to git)
Build from Xcode
- Open a project in Xcode
- For the App scheme select
Signing and Capabilities - Set your
Bundle Identifier - Enable
Automatically manage signing - Xcode will do signing for your Team and Bundle Identifier
Unit Testing
- iOS
bundle exec fastlane ios run_unit_testsrequires iOS 27.0 Simulator Runtime - tvOS
bundle exec fastlane tvos run_unit_testsrequires tvOS 27.0 Simulator Runtime - macOS
bundle exec fastlane mac run_unit_testsruns on current machine
UI Testing
Before any UI Tests must run a python local server that will provide mock data to the app.
./scripts/tests/server.py
iOS
- iOS iPhone
bundle exec fastlane ios run_ui_snapshots_tests_iphone_27requires iOS 27.0 Simulator Runtime - iOS iPad
bundle exec fastlane ios run_ui_snapshots_tests_ipad_27requires iOS 27.0 Simulator Runtime - iOS iPhone
bundle exec fastlane ios run_ui_snapshots_tests_iphone_26requires iOS 26.5 Simulator Runtime - iOS iPad
bundle exec fastlane ios run_ui_snapshots_tests_ipad_26requires iOS 26.5 Simulator Runtime - iOS iPhone
bundle exec fastlane ios run_ui_snapshots_tests_iphone_18requires iOS 18.6 Simulator Runtime - iOS iPad
bundle exec fastlane ios run_ui_snapshots_tests_ipad_18requires iOS 18.6 Simulator Runtime
tvOS
- tvOS
bundle exec fastlane tvos run_ui_snapshots_tests_appletv_27requires tvOS 27.0 Simulator Runtime - tvOS
bundle exec fastlane tvos run_ui_snapshots_tests_appletv_26requires tvOS 26.5 Simulator Runtime - tvOS
bundle exec fastlane tvos run_ui_snapshots_tests_appletv_18requires tvOS 18.5 Simulator Runtime
macOS
Screenshots in repo created on macOS 27.2 with macOS SDK 27.2
bundle exec fastlane mac run_ui_snapshots_tests_macos
Firebase Distribution
- iOS
bundle exec fastlane ios make_firebase_release
App Store Connect Distribution
- Upload the app to testflight
- Add that build to the distribution group to send to review
- iOS
bundle exec fastlane ios make_testflight_release - tvOS
bundle exec fastlane tvos make_testflight_release - macOS
bundle exec fastlane mac make_testflight_release
- Certificate Trust is set to "Use System Defaults"
- MARKETING_VERSION is incremented
- CURRENT_PROJECT_VERSION is reset or incremented
- You have "Apple Distribution" certificate in the keychain for iOS and tvOS builds
- You have a "3rd Party Mac Developer Installer" certificate in the keychain for macOS build to distribute it via macOS App Store
App Store Connect Snapshots and Metadata
Regenerate snapshots for App Store Connect when the UI changes significantly
Must use the latest Simulator Runtime, now it is 26.5
- iOS iPhone
bundle exec fastlane ios make_app_store_snapshots_iphone_26requires iOS 26 Simulator Runtime - iOS iPad
bundle exec fastlane ios make_app_store_snapshots_ipad_26requires iOS 26 Simulator Runtime - tvOS
bundle exec fastlane tvos make_app_store_snapshots_appletv_26requires tvOS 26 Simulator Runtime
- macOS
bundle exec fastlane mac make_app_store_snapshots_macosrequires macOS SDK 26 Simulator Runtime and macOS 26 machine
Upload snapshots to App Store Connect of new made or updated
- iOS
bundle exec fastlane ios upload_appstore_screenshots - tvOS
bundle exec fastlane tvos upload_appstore_screenshots - macOS
bundle exec fastlane mac upload_appstore_screenshots
If you changed metadata (description, keywords, etc.) upload it to App Store Connect
- iOS
bundle exec fastlane ios upload_appstore_metadata - tvOS
bundle exec fastlane tvos upload_appstore_metadata - macOS
bundle exec fastlane mac upload_appstore_metadata
If you have any questions or ideas, please open an issue on GitHub.