Repository navigation
Features
The full feature list, section by section. Playback and downloads have their own pages: Playback and Codecs and Downloads.
A first-run wizard after sign-in asks how the app should look: the navbar position, the bottom bar style on phones and tablets, the media bar style, the home row style, and which of the five detail screen styles to use. It ends with a theme pick and a short tour.
- Every choice shows a live preview built from your own library artwork rather than a description
- The last step has an optional Playback languages section under the themes, for the audio language, preferring the default audio track, the subtitle language and the subtitle mode. Only what you change is saved
- It only asks about things it can't work out on its own, and skips anything you have already chosen
- The answers are saved as one batch at the end instead of one push per tap
- Settings > About > Run setup again brings it back with every question
One Flutter codebase spans phones, tablets, desktop, Android TV, Fire TV, Apple TV, and web.
- Navigation tuned for touch on mobile, pointer and keyboard on desktop and web, and D-pad and remote on TV
- Reworked Siri Remote glide navigation on Apple TV, with a Touchpad swipe sensitivity setting
- A bottom bar on phones and tablets in three styles. Dock is a floating pill with labels, Split gives Search its own button and shrinks to the active tab while you scroll, and Strip is an edge to edge bar the content fades into. Up to three tabs can be pinned between Home and You, and the You tab opens a hub with everything else
- UI Scaling from Small up to Great-Grandparents, the largest size, for anyone who wants bigger text and buttons
- An Apple TV Top Shelf that shows your latest media or a Moonfin banner, and clears when you sign out
- A keyboard shortcut list on computers under Settings > About > Keyboard shortcuts. Pressing ? or F1 on any screen, including over a playing video, shows the keys that work there
- An optional gamepad navigation mode, off by default, so a connected controller can move focus and select items outside of games
- Play and Resume on the item long-press menu, so something can start without opening it first
- Settings search that finds screens and individual settings, shows where each result lives, and jumps straight to it
- Platform-specific build and release scripts for Android, Android TV, iOS, Apple TV, Linux, macOS, Windows (x64 and ARM64), and web
Five layouts for the page a title or person opens on, picked in the setup wizard or under Personalization > Details Screen > Details Screen Style.
- Classic: the original layout, with everything centered in one stack
- Modern: a responsive cinematic layout with tabs, and the default
- Spotlight: a hero over a full-bleed rotating backdrop, with Play and a few actions up front and the rest behind More Actions. Summary cards take the place of tabs and open pop-up grids. Person pages lead with a filmography still and keep library titles and Seerr titles on separate cards
- Nouveau: full screen, with every section stacked down the page instead of behind tabs
- Minimalist: artwork, one play button and the episodes. Anything it doesn't cover, such as a person or an album, opens in Spotlight
Every style shares a few things:
- A Metadata Row you can reorder and trim, synced through Moonbase, including upcoming episode air dates from Sonarr with TMDB as a fallback
- Action Buttons on Screen sets how many buttons show before the rest fold into More Actions
- Sections hides parts of the page, such as chapters, extras, More Like This or the Seerr sections. It only lists what the current style draws, one switch hides a section in every style, and the choice is kept per kind of device and synced through Moonbase
Ebooks: read EPUB, MOBI, AZW/AZW3, and PDF in the app. Comic archives (CBZ, CBR, CB7, CBT) render with a two-page spread on desktop, zoom and pan, and page caching. Reader themes include Light, Dark, and Sepia.
Audiobooks: play M4B and multi-file audiobooks with chapter navigation, position bookmarks, and resume tracking. Download whole audiobooks for offline listening.
Books and audiobooks always download in their original format, with no transcoding.
Browse and play retro game libraries hosted by the Moonbase server plugin, right inside the app. See Retro Games for setup, cores, and platform support.
- Native libretro playback on Android, desktop, iOS, and Apple TV, with an EmulatorJS web player as a fallback
- Gamepad, keyboard, on-screen touch, and Siri remote input, plus save states that sync across devices
- Controller remapping with a capture screen that reads your actual controller, on Android and desktop
- Arcade support through FBNeo, with the server matching ROMs against pinned FBNeo and MAME data files
- Hardware rendering for native cores on Android, so N64 plays on Shield and Fire TV Cube class devices
- Emulator settings can be changed before a game launches
- Native Google Cast, DLNA, and AirPlay integration
- Remote Control for other Jellyfin apps on your server, with a D-pad, OK, Back and Home for moving around their menus, and a Search button that types into the other device from your phone's keyboard
- Other Jellyfin apps can steer Moonfin in return: pause, seek, volume, mute, audio and subtitle tracks, D-pad navigation and search on every platform, and fullscreen on desktop
- Playback controls with track selection, delay adjustments, and picture-in-picture support
- Queue and next-up behavior that works across local and remote playback
A native view of the third-party Achievement Badges plugin for Jellyfin, under Settings > Integrations > Achievement Badges. The entry appears once the server answers, and Emby servers don't have it. Moonbase isn't involved.
- Your rank, a badge showcase, and badge pages with progress and suggested titles to watch
- Daily and weekly quests, each with one reroll
- A score bank, power-ups (XP Boost, Double Credit, Streak Freeze), and a shop for avatars and rank titles
- Stats, a leaderboard, a recap, library completion, and an activity feed
- Unlock notifications, a banner when you earn a badge, following the plugin's own per-user setting
- Friends and chat, when the plugin has friends turned on: who's online and what they're watching, friend requests, blocking, and one to one and group chats with photos and emoji. An optional Friends button in the navigation counts requests and unread messages
When your server admin turns them on in the Moonbase plugin, anime episodes and seasons carry small markers.
- Filler, Recap, Mixed, Manga Canon and Anime Canon, so you can tell which episodes move the story along
- Subbed, Dubbed or Subbed/Dubbed, going by the audio tracks in the file
- They show on episode and season cards, on the detail screen, and on the Next Up card in the player
Messages your admin sends through Moonbase arrive in a messages window rather than a dialog that blocks the app.
- An unread badge on the navigation, with a Mark all as read action
- Markdown is supported, and the order your admin set is kept
- Links inside a message are held to web addresses before they reach the system launcher
- The messages button is off by default and turned on under navigation settings
Manage your server without leaving the client.
- Views for settings, users, libraries, logs, devices, and analytics
- An Identify dialog for admins to match items to the correct metadata
- A local search field finds items inside a library without leaving it
- Quick Return jumps back to the top, through the back button on a controller or a floating button on desktop and mobile
- Group By options for Movie and TV libraries, including Decade, Genre, and Parental Rating
- Libraries can scroll horizontally instead of as a grid
- Library Order sets the order of your libraries for My Media, the recently added rows and the navigation, saved to your server account so other apps follow it too
- Sort & Filter has a Clear for each category, and a search box on any list of ten or more values, so a TV remote can undo one filter without scrolling the whole panel
Advanced: every sort and filter
- Sorts for Date Added, Date Episode Added, Premiere Date, Rating, Runtime, Critic Rating, Community Rating, Last Played, Play Count, Artist, Track Number, Genre, and Folders First. Each library only offers the sorts its items can answer.
- Filters for In Progress, Unreleased, Trailers, Extras, Theme Songs, Theme Videos, picture quality, DVD, Blu-ray and ISO sources, year ranges, audio language, and subtitle language, plus a Clear Filters button.
Connect to multiple Jellyfin and Emby servers at the same time, under one UI.
- The unified library view merges content from all servers, so you browse, search, and play without switching
- Libraries display as "Library Name (Server Name)" when multiple servers are active
- Continue Watching, Next Up, and Latest rows pull from every connected server
- Search covers every signed-in server, with each result labeled by its server
- Unified mode can be toggled on or off, independently per server type
- Every playlist type shows up, including music, audiobook, book, photo, and mixed playlists
- A Group by Type option with per-type filters in the library display settings
- Chapter markers work when playing from a playlist
- Playlists can resume where you left off and show watched state on their tracks
- View Details on a playlist item's menu opens its page, and Back returns to the playlist
Rotating featured content on the home screen with rich backdrop presentation.
- Six layouts to choose from: Moonfin, MakD, Bookshelf, Gallery, Banner, and Aya
- Aya is a rounded hero with the title logo, an ambient background taken from the artwork, expanding focus, and slide transitions
- Can feature your Collections or trending and library content, with optional in-bar trailer previews
- Shows quick-glance metadata like ratings, genres, runtime, and overview
- OLED Mode renders true black backgrounds for deeper blacks on OLED screens
- A full theming system with a built-in Theme Store to browse and manage themes
- An in-browser theme editor for building and previewing themes, with sync back to the server plugin
- Navbar icon color cycling and a range of bundled themes, including Neon Pulse
- Seasonal effects on Home: Snow, Christmas, Fireworks, Confetti, Spring Petals, Fireflies, Falling Leaves and Halloween, with a Light, Normal or Heavy density. They pause behind the screensaver and respect the system's reduce motion setting
- A custom loading animation under Personalization > Loading Animation: the Moonfin logo, a spinner, the runner, or moon phases, in one of nine spots or bouncing around the screen, with its own size, speed and optional text
- Skeleton placeholders while content loads
- Animation Speed settings under General Style for page transitions, navigation and Modern card transitions, on desktop and TV
- A screensaver on TV with grouped settings and a live preview. It shows library art filtered by content type, library, collection, genre and age rating, or a black or gradient backdrop (Moonfin, Calm, Neon Pulse, Aurora), with an optional Moonfin logo, clock or runner that has its own speed, position and size. Its settings sync through Moonbase
- Cinema Mode pre-rolls and intros play before movies and TV episodes, and are excluded from progress reporting
- Skip intro and skip credits controls, with a skip action settable per media segment type
- Skip buttons can hide themselves automatically instead of sitting on screen for the whole segment
- SponsorBlock integration to skip sponsor and promo segments during trailer playback
Seerr lives inside the normal media details screen, so requesting something new feels the same as opening something you already have.
- Titles that aren't in your library open the same details screen, showing the Cast and Seerr tabs
- Continuing TV series can be requested again as new seasons arrive, and seasons you already have are marked
- Optional Seerr discovery rows on the home screen: Trending, Popular, Upcoming, Recently Added, and Requests
- Browse by Genres, Studios, and Networks, with request status overlays and media type badges
- HD and 4K requests can be made independently
- Collection pages can list the titles you don't have yet, each with a badge that opens its request page, when Show Missing Collection Items is on
- Season tiles show their Seerr availability, when Show Seerr Availability Badges is on
- Your requests show as a poster grid on desktop and TV, with a progress bar for anything still downloading that reports real byte counts
- Seerr navigation and settings hide automatically when a Seerr instance isn't configured
Watch together in sync with other people on your server, with entry points in the app navigation and settings.
Rate an item as a like or dislike, out of five stars, or as a score out of ten. The style you pick is what the rest of the app speaks.
- Your rating shows in the ratings row on the detail screen alongside the other sources
- Libraries can be sorted by My Rating and filtered by liked or disliked, which the Moonbase plugin serves since neither server has that sort of its own
- A rating set while offline is queued and synced when you reconnect
- Works on Emby servers as well as Jellyfin
- Optional MDBList ratings with multiple rating sources shown in item details, including Roger Ebert
- Episode ratings routed through TMDB where available
- Rating display customizable through settings, with a reset button to restore the defaults
Trickplay previews show while scrubbing, as a single thumbnail, a filmstrip of the frames either side of where you are, or full screen.
- Preview size, distance from the seekbar, and whether the preview slides along with your scrub are all configurable, with a live preview in settings you can drag
- Frames are prefetched so scrubbing stops waiting on the network
- Pause While Scrubbing decides whether seeking pauses playback or keeps it running
- Works on Emby servers as well as Jellyfin, using the preview images the server already generates
- Built-in Live TV browsing and playback
- Embedded CEA-608/708 closed captions during Live TV on all platforms
- An EPG-style program guide that fits more channels on screen, fades programs that have ended, marks programs that started before the visible window, and shows program artwork, episode titles and numbering
- Category filters (Movies, Series, Sports, News, Kids, Premiere, Favorites) that cover the whole lineup
- The guide opens on the channel you watched last, and Rewind and Fast forward page through it on a TV remote
- A quick channel changer on TV: press Up during live playback, or pick Channels next to Guide, for a strip of channel cards in guide order that wraps around
- An optional Live TV button in the navigation, off by default
- A stalled channel recovers on its own with up to three paced attempts, showing Reconnecting while it works and a Retry card if it can't. On-demand transcodes that run dry get the same limited retries
- DVR recordings and schedule management in-app
Play trailers right in the app from the detail screen, with resilient trailer source resolution for better reliability. YouTube trailers play at up to 1080p and keep their original soundtrack rather than one of YouTube's automatic dubs.
Six configurable slots around the progress bar, above and below it on the left, center, and right. Each slot shows time elapsed, total duration, time remaining, the wall clock time the item ends at, the current time, or nothing. The video and music players have separate layouts.
- Fine-grained subtitle and audio delay adjustment during playback
- Pre-playback track selection and ongoing track control
- Show, hide, and reorder player OSD buttons and details screen action buttons per device type, synced across devices
- Still-watching flow and next-up handling
- Crop black bars finds letterbox bars encoded into the picture, crops them and fills the screen, on Windows, Linux and Android
- Native HDR output on Windows sends HDR video to the display untouched when the display is already in HDR mode and the title is HDR
- A Passthrough output choice on Android TV between the system packer and the app's own, for receivers where passthrough is silent or glitchy
- Fifteen subtitle colors for the text, its outline and the background, with a separate style for HDR
- Chapter Marks, off by default, mark where each chapter starts on the seek bar
- Reorder and toggle home sections, for example Continue Watching, Next Up, and Latest
- A Max days in Next Up setting controls how far back Next Up reaches
- A seasonal row of holiday movies from your library, with Seerr suggestions when Seerr is set up, for New Year's, Valentine's Day, Easter, Pride, Halloween, Thanksgiving, Christmas, Lunar New Year and Diwali. Each holiday can be switched off, the country follows the device unless you pick one, and it needs the Moonbase plugin
- Home row preferences sync through the plugin
- A reset button restores the defaults
- PIN code protection for sensitive settings and actions
- Blocked Ratings work as a ceiling: blocking a rating blocks everything stronger too, and ratings Moonfin can't rank sit in their own list and only block themselves
- Blocked titles are hidden everywhere, including search, suggestions, favorites, libraries, folders, the media bar and multi-server rows, and they won't open or play. Episodes go by their series rating
- Blocked ratings are stored per server and per user
Kids Mode strips the app back to what a child needs and locks the way out behind its own PIN, set fresh each time from Settings > Account & Security > Kids Mode.
- Settings collapse to a single Exit Kids Mode entry, and admin, Seerr, Live TV, SyncPlay and the libraries menu leave the navigation
- Home keeps library tiles, the latest additions, and a combined Continue Watching and Next Up row, and search drops the Seerr tab
- Detail screens use Minimalist, without ratings, the description, technical details, or admin, download, delete and request buttons. Trailers stay in the app
- Links into admin, Seerr or Live TV land back on Home
- Wrong PINs cost a growing wait after five tries, up to 15 minutes
- It's off by default and doesn't sync to other devices
See Parental controls and Kids Mode for the how-to.
The full details are on Downloads.
- Auto-download for series you follow, keeping a set number of unwatched episodes and removing watched ones after a delay you choose. It checks when Moonfin connects or comes back to the front, when the server adds episodes, when you tap Check now, and in the background on iOS and Android
- A Downloads home with an Active Downloads tab, a screen per show, a storage strip, search, and sorting by size, name or date added
- Series, seasons and collections can download just what you haven't watched
- Original quality downloads show their transfer rate and time left
- A download that won't fit is refused before it starts
- The Downloads button in the navigation only appears once something is saved
Crash reports are captured on the device and uploaded to your own server, never anywhere else. See Collecting Logs for how to capture a report.
Advanced: how capture works
- Reports are written at capture time, so a hard kill loses nothing, and they are held until a server that accepts them is reachable
- A switch in Diagnostics settings stops reports ever leaving the device, while capture itself stays local
- Playback diagnostics name who declined direct play, the device's video codec capabilities, and the subtitle track mapping
- On Android 11 and later, a crash, ANR, failed start or memory kill from the previous run is reported on the next launch, and Android 12 and later add the crashing thread and its last error logs
The app checks for updates on a configurable cadence and surfaces availability in-app, so you don't have to track versions yourself.
Using Moonfin
Going deeper
For developers