A modern, lightweight M3U IPTV player for Android & Android TV.
Download · Features · Screenshots · Getting Started · Contributing
Prysm is an IPTV player with a purpose-built native playback engine and an interface that feels at home on a 10-foot screen — while staying just as polished on a phone.
Every stream is yours: no content, no subscriptions, no accounts. Bring your own M3U source and go.
|
|
- In-app updater — check for and install new APKs without leaving the app
- In-app log viewer + crash handler for painless bug reports
- Per-ABI APKs —
arm64-v8a,armeabi-v7a,x86,x86_64, plus a universal build
![]() Channels — now/next on cards |
![]() Program guide |
![]() Player — landscape |
![]() Light theme |
![]() Settings |
![]() Favorites |
Grab the latest build from GitHub Releases.
| APK | Use it on |
|---|---|
prysm-<version>-arm64-v8a.apk |
Most modern phones & boxes (recommended) |
prysm-<version>-armeabi-v7a.apk |
Older 32-bit ARM devices |
prysm-<version>-x86_64.apk |
x86_64 emulators & some Chromebooks |
prysm-<version>-x86.apk |
32-bit x86 emulators |
prysm-<version>-universal.apk |
When you're unsure — contains every ABI |
Android TV: install the same APK, then add a channel from the TV launcher's
| Platform | Status |
|---|---|
| 🤖 Android (phone / tablet) | ✅ Fully supported |
| 📺 Android TV | ✅ Fully supported |
| 🍎 iOS | ❌ Not a target |
| 🌐 Web | ❌ Not a target |
- Node.js 18+
- JDK 21 & Android Studio (for an emulator or a physical device)
git clone https://github.com/dereferencex/prysm.git
cd prysm
npm installnpm start # Expo dev server
npm run android # Build & install on a connected device/emulatornpx expo prebuild --no-install
cd android && ./gradlew assembleReleasePer-ABI APKs land in android/app/build/outputs/apk/release/. Pushing a v* tag
also triggers the GitHub Actions workflow, which
builds, signs, and publishes every ABI to the release automatically.
| Layer | Choice |
|---|---|
| Framework | Expo SDK 54 · React Native (react-native-tvos fork) |
| Language | TypeScript · Kotlin |
| Navigation | React Navigation 7 |
| Lists | FlashList virtualization |
| Player | Custom native module — Media3/ExoPlayer + VLC (libvlc) |
| Styling | Theme system + @material/material-color-utilities |
| State | React Context · TanStack React Query |
| Storage | AsyncStorage |
| Validation | Zod |
Prysm ships its own Expo modules rather than leaning on config plugins alone:
| Module | Purpose |
|---|---|
tv-player |
ExoPlayer/VLC engine, DRM, PiP, background audio, media session |
tv-channel |
Android TV launcher banner & home-row channel tiles |
dynamic-color |
Material You wallpaper colors on Android 12+ |
crash-handler |
Native crash capture |
logcat-reader |
In-app log viewer |
Contributions are welcome!
- Fork the repository
- Create a feature branch —
git checkout -b feature/AmazingFeature - Commit your changes —
git commit -m "feat(scope): description" - Open a pull request
Please open an issue first for major changes or refactors so we can align on direction.
Run
npm run check:typesandnpm run lintbefore opening a PR.
Prysm is a media player only. It does not provide, host, or distribute any content, streams, or playlists. Users must supply their own legally obtained IPTV sources. Prysm is not affiliated with, endorsed by, or connected to any content provider.
Licensed under the MIT License.
Enjoying Prysm? Give it a ⭐ on GitHub — it helps more than you'd think.
Built with 💙 by dereferencex










