A native Apple TV port of Nuvio, forked from the mobile app so the living-room experience can be developed independently.
SwiftUI tvOS shell - Stremio-compatible catalogs - MPVKit playback
The Apple TV build is published as a .ipa on the Releases page. Sideload it onto an Apple TV with your preferred tool (for example a Mac with Xcode, Apple Configurator, or a sideloading utility). This is a beta build - see the release notes for what works and what still needs testing.
Beta 2.9.1 (build 39) is the current tvOS release. Download the unsigned IPA here:
Important: this IPA is unsigned because no tvOS signing identity is configured on this machine.
Beta 2.9.1 is a focused Apple TV audio compatibility update and includes everything from Beta 2.9:
- Playback now follows the active tvOS audio route's preferred channel layout and falls back safely to stereo when the route cannot report one.
- This avoids requesting unsupported source layouts from HDMI receivers, soundbars, TVs, and HomePods, which could produce video with no usable audio.
- All navigation, catalog, library, profile, PIN, and playback improvements from Beta 2.9 remain included.
The audio-route change still needs broad physical-device verification across TVs, receivers, soundbars, and HomePods. Search bottom-edge presentation also needs verification on a physical Apple TV. Premiumize QR linking remains unavailable until a production OAuth client ID is configured. The Apple TV Simulator still cannot play AV1, and ASS/SSA custom positioning/typesetting is flattened to the app subtitle style.
This repository started as a fork of the Nuvio mobile app. The focus of this fork is now the tvOS version: a native SwiftUI Apple TV app under tvosApp with Apple TV navigation, focus handling, profile selection, catalog browsing, details screens, search, library/watchlist surfaces, and playback controls designed for the Siri Remote.
The original shared mobile code is still present in composeApp, with the inherited iOS app under iosApp. The active tvOS development surface is tvosApp/NuvioTV.
- Native SwiftUI entry point in NuvioTVApp.swift.
- Apple TV tab navigation for Profile, Home, Search, Library, and Settings.
- Home rows for synced Nuvio collections and add-on catalog lists.
- Cinemeta-backed catalog and metadata repository with Stremio-compatible stream/subtitle addon hooks.
- User-configurable Stremio stream add-ons in Settings → Integrations → Add-ons.
- Debrid provider settings for Real-Debrid, Premiumize, and TorBox torrent stream resolution.
- Premiumize and TorBox Cloud Library playback through the built-in player.
- Apple TV Top Shelf extension backed by the active Continue Watching row.
- Long-press quick actions for poster cards, including details, library toggle, and watched toggle.
- QR-code and email login flow backed by Supabase configuration in AuthConfig.swift.
- tvOS profile/account sync surfaces while the full shared account experience is being ported.
- MPVKit-based player surface with tvOS remote input, skip controls, saved audio/subtitle selections, idle-timer handling, and resume support.
- tvOS app assets, splash screen, top shelf images, and Apple TV app icon stack in Images.xcassets.
This tvOS app is still early and needs real device/simulator testing. The list below is not complete; contributors should run the app, compare it with the Android TV version, and call out anything that feels broken, rough, or missing.
Current tvOS status:
- Library basics now work, including adding/removing titles, watched-state persistence, consistent poster sizing, and watched checkmark badges on cards.
- Search has received initial polish and bug fixes, including consistent poster sizing and watched checkmark badges.
- Trailer playback now opens in the player, resolves YouTube trailer streams at 1080p or better when available, supports adaptive video/audio streams, and returns to the title details page afterward.
- Home focus/hero behavior has been improved with smoother card focus, cached hero logo loading, and crossfaded hero/backdrop transitions.
- Player polish now covers saved audio/subtitle selections, screensaver prevention during playback, and steadier Play/Pause focus.
Known areas that still need work:
- Nuvio addon UI flows have not been fully tested on tvOS yet.
- Video playback is currently choppy/laggy during movies. This may be frame pacing, FPS, rendering, buffering, MPVKit configuration, or something else that needs profiling.
- Search still needs more real-world testing and bug fixing.
- Library still needs more sorting/grouping validation and real-world testing.
- Vertical and horizontal scrolling still need more tuning on real devices.
- The current layout is using the modern view only. Grid view and the other layout settings from Android TV still need to be brought over.
- AllDebrid and Debrid-Link are visible provider options, but resolver backends are not wired yet.
- Cloud Library currently supports Premiumize and TorBox only.
- Top Shelf, debrid resolving, and Cloud Library still need more real-device validation across accounts/providers.
- If login still returns to the Apple TV Home screen on a real device, please send the device console or crash log.
The Android TV version is the main UX reference for this port. Before changing navigation, focus behavior, scrolling, player controls, layout settings, or core interaction patterns, run the Android TV app in an emulator and feel how that version behaves. The tvOS version does not need to be a pixel-for-pixel clone, but it should preserve the things that make the Android TV app work well on a couch/remote interface.
Useful new features are welcome. For large UI redesigns or major experience changes, please open a discussion or vote first so contributors can agree on direction before the app moves away from the current TV design.
- macOS with Xcode installed.
- Apple TV simulator runtime installed in Xcode.
- CocoaPods if
tvosApp/Podsneeds to be regenerated. - Network access for catalog metadata, stream addon lookups, and Swift Package resolution.
The Xcode project targets Apple TV (SDKROOT = appletvos) with bundle id com.nuvio.app.tv. The tvOS deployment target is configured in project.pbxproj.
git clone <your-fork-url> NuvioTVOS
cd NuvioTVOSInstall pods if the CocoaPods workspace has not been generated:
cd tvosApp
pod install
cd ..Open the tvOS workspace:
open tvosApp/NuvioTV.xcworkspaceUse the NuvioTV scheme and an Apple TV simulator.
The helper script builds the native tvOS app, installs it on the first booted Apple TV simulator, and launches it:
./scripts/run-mobile.sh tvos sIf no Apple TV simulator is booted, open Simulator or Xcode first and start one, then rerun the command.
You can also build directly with Xcode:
xcodebuild \
-workspace tvosApp/NuvioTV.xcworkspace \
-scheme NuvioTV \
-configuration Debug \
-destination 'generic/platform=tvOS Simulator' \
buildAccount login is optional during development. The login screen supports "Continue without account" so the tvOS UI can be tested without backend credentials.
To enable QR login and email auth, fill in the Supabase values in:
tvosApp/NuvioTV/Sources/Core/Auth/AuthConfig.swift
The catalog prototype currently uses Cinemeta plus Stremio-compatible stream and subtitle addon endpoints from CatalogRepository.swift.
For TorBox, open Settings → Integrations → Accounts and link the account using the TV QR code. Premiumize sign-in uses the same device-linking flow once a production OAuth client ID has been configured. Linked provider credentials are also used by Cloud Library in Library.
Unit and UI test targets live in:
Run tests from Xcode, or with:
xcodebuild test \
-workspace tvosApp/NuvioTV.xcworkspace \
-scheme NuvioTV \
-destination 'platform=tvOS Simulator,name=Apple TV'Some older verification scripts in tvosApp/ still carry inherited iOS wording. Prefer the Xcode build/test commands above as the source of truth for the tvOS target.
tvosApp/NuvioTV/contains the native SwiftUI tvOS app.tvosApp/NuvioTV/Sources/UI/contains the Apple TV screens and reusable components.tvosApp/NuvioTV/Sources/ViewModels/contains the Swift view models for tvOS flows.tvosApp/NuvioTV/Sources/Data/Repository/contains catalog, metadata, stream, and subtitle fetching.tvosApp/NuvioTV/Sources/Core/Auth/contains Supabase email and TV QR-login support.MPVKit/is the local Swift Package used for playback.composeApp/andiosApp/are inherited from the mobile fork and remain useful references while tvOS functionality is ported.
- SwiftUI and UIKit focus/input bridging for tvOS
- MPVKit / libmpv for playback
- Stremio-compatible catalog, stream, and subtitle APIs
- Kotlin Multiplatform / Compose Multiplatform code inherited from the mobile fork
Nuvio functions solely as a client-side interface for browsing metadata and playing media provided by user-installed extensions and/or user-provided sources. It is intended for content the user owns or is otherwise authorized to access.
Nuvio is not affiliated with any third-party extensions, catalogs, sources, or content providers. It does not host, store, or distribute any media content.
For comprehensive legal information, including the full disclaimer, third-party extension policy, and DMCA/Copyright information, visit the Legal & Disclaimer Page.