Moonfin tvOS is a native SwiftUI Apple TV client for Jellyfin and Emby users who want a modern, customizable 10-foot experience with smooth playback and controller-first navigation.
| Server | Minimum Version | Status |
|---|---|---|
| Jellyfin | 10.8.0+ | Full support |
| Emby | 4.8.0.0+ | Full support |
| Platform | Minimum Version | Status |
|---|---|---|
| tvOS (Apple TV) | 16.0 | Full support |
- Built for Apple TV with Siri Remote and controller-friendly focus navigation
- SwiftUI-based UI tuned for a living-room viewing distance
- Integrated Top Shelf extension support for at-a-glance content on the Apple TV home screen
Moonfin tvOS uses an MPV-first playback stack, with automatic internal handling for dynamic range and platform decode paths when needed. This keeps behavior consistent while supporting advanced streams and robust fallback behavior.
| Category | Supported Formats |
|---|---|
| Video | H.264, HEVC (H.265), VP8, VP9, AV1, MPEG-2, MPEG-4, VC-1 |
| Audio | AAC, MP3, FLAC, Opus, Vorbis, AC3, EAC3, DTS, TrueHD, PCM, ALAC |
| Containers | MP4, MKV, WebM, AVI, MOV, TS / M2TS, WMV / ASF |
| Subtitles | SRT, ASS / SSA, VTT / WebVTT, TTML, PGS, DVB, VobSub |
| HDR | Dolby Vision, HDR10+, HDR10, HLG |
| HW Accel | VideoToolbox on Apple TV hardware |
- Rotating featured hero content on the home screen with backdrop presentation
- Quick-glance metadata including ratings, genres, runtime, and overview
- Designed to highlight trending and library content without leaving home flow
- Optional MDBList ratings support with multiple rating sources shown in item details
- TMDB episode ratings support where available
- Rating display can be customized through settings
- Trickplay preview support for improved scrubbing and seek navigation
- Media segment handling for intros, credits, and detected segments
- Playback controls remain consistent across playback scenarios
- Trailer playback directly from item detail contexts
- Resilient trailer source resolution for better reliability
- Preview content without leaving the Moonfin experience
- Fine-grained subtitle and audio delay adjustment during playback
- Pre-playback track selection and in-session track controls
- Includes still-watching flow support and next-up handling
- Reorder and toggle home sections (for example, Continue Watching, Next Up, Latest)
- Home row preferences are compatible with plugin-backed sync workflows
- Tailor discovery layout to personal viewing habits
- Built-in Live TV browsing and playback screens
- EPG-style schedule views
- DVR recordings and schedule management integrated in-app
- Group watch support with synchronized playback across participants
- SyncPlay entry points in app navigation and settings-driven controls
- Shared viewing sessions with local playback controls preserved
- Swipe / D-pad - Move focus between items
- Select / Click - Activate focused item
- Menu / Back - Navigate back
- Play/Pause - Toggle playback where applicable
- Left / Right - Seek backward or forward
- Up / Down - Open player controls and navigate actions
- Play/Pause - Pause or resume playback
- Menu / Back - Exit fullscreen overlays or return from player
Download subtitles directly from item details.
- Open any Movie or Episode details screen.
- In the details area, locate the Subtitles section.
- Select the download icon next to available subtitles.
- Subtitles are saved with your media organization structure.
- Downloaded subtitles are available for future playback sessions.
Stay up to date with the latest releases here
Download tvOS artifacts from the Releases page.
- Signed IPA output:
Moonfin_tvOS_<version>_signed.ipa - Unsigned IPA output:
Moonfin_tvOS_<version>.ipa
- Xcode 15+
- tvOS SDK 16.0+
- CocoaPods
git clone https://github.com/Moonfin-Client/tvOS.git
cd tvOS
pod install
cp build-tvos.private.env.example build-tvos.private.env
# edit TEAM_ID in build-tvos.private.env
./build-tvos.sh- The build script archives and exports a signed IPA, then generates an unsigned IPA copy for sideload workflows.
- MODE supports
app-storeandsideload. - Set ALLOW_PROVISIONING_UPDATES=1 if you need Xcode to refresh profiles during CI/local builds.
- Keep project settings in sync with project.yml
- Validate navigation and playback behavior on real Apple TV hardware when possible
- Prefer small, focused commits for easier review
We welcome contributions to Moonfin tvOS.
- Check existing issues before opening new ones.
- Discuss major feature changes before implementation.
- Follow existing code style and project conventions.
- Test changes on tvOS simulator and, ideally, physical hardware.
- Keep PR scope focused and clearly documented.
- Fork the repository.
- Create a branch (
git checkout -b feature/your-change). - Implement and test your changes.
- Open a PR with context, screenshots/logs when useful, and test notes.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Moonfin tvOS is built on the work of:
- Jellyfin Project
- Jellyfin client contributors
- Moonfin contributors
- MakD - Original Jellyfin-Media-Bar concept that inspired the featured media bar
This project is licensed under GPL v2. See LICENSE for details.
Moonfin tvOS is an independent project and is not affiliated with the Jellyfin project.
← Back to main Moonfin project

