Proposal: Potential JellyFin Native tvOS App Including User Experience Ideas

Background

I created this post to share some of my thoughts for a potential JellyFin native tvOS app’s user experience. My hope is that the JellyFin developer community will find these concepts useful and incorporate them in a future native tvOS app.1 These are my preliminary thoughts; I welcome readers’ feedback.

Product development requires judgement calls; and I recognize that other users prioritize features they care about differently than me or have a preferred UX either because it better suits their needs or because they are just more familiar with that UX. For example, I prioritize Live TV & DVR functionality in addition to Movies & TV show playback. I also prioritize multi-user, multiple local servers, and simplified management of multiple local client Apple TV devices. Other users may prioritize music, podcasts, or photos. Moreover, some of my design recommendations below are consciously different from the UX of the JellyFin’s web client.2

To begin, my belief is that a native tvOS app for JellyFin should leverage Apple’s tvOS human interface design guidelines wherever possible and, therefore, will look very similar to the current Apple TV+ app.3 However, it should borrow ideas from other apps such as Disney+, Plex, Infuse or Channels when they have a clearly superior layout or showcase features either not covered in Apple’s guidelines or missing from Apple TV+. Notably, the Apple TV+ app doesn’t support Live TV & DVR functionality, which a native Jellyfin tvOS app should.4 And, in Apple TV+, there is a lot of promotional content for third party channels and Apple Store rental/purchased content upsells that are irrelevant to JellyFin. Similarly, I think it is important to avoid UI complexity; so I deliberately didn’t include particular views or advanced filters that other media players may support: (e.g. video playlists, alternative list or banner views, or obscure metadata filter criteria).

My ideas focus initially on stored Movies and TV Shows. Given limited resources for open source software development, I would expect Live TV & DVR features to be incorporated only after the native tvOS app’s core functionality has stabilized. Live TV & DVR are important feature differentiators because there isn’t an alternative tvOS app that supports those features and that connects to JellyFin servers. Conversely, I don’t include recommendations for Music, Podcasts/Audiobooks, or Photos because these functions are largely addressed already—at least for the target audience of Apple users—using Apple’s native apps. Adding a music playback module for JellyFin makes sense (perhaps) in the long term for those users that have a large ripped CD collection but who don’t subscribe to Apple Music/Spotify/Amazon/YouTube/other services.

Core Media Player

At the core of the native tvOS client, there must be a highly advanced media player that exceeds both the video and audio codec support and the video processing capabilities of Apple’s AVFoundation’s capabilities. This is essential for content that isn’t streamed (whether because it’s recorded over the air from a TV broadcaster–including lower resolution and/or interlaced content–or ripped from Bluray or DVD media). I suggest using mpv because it is the same open-source media player engine at the heart of the JellyFin desktop, Plex, Emby, Channels, and other media server projects. This ensures both a common playback experience across Jellyfin players but also that there is a large developer community interested in resolving any bugs in the media engine.

As of today, there is not a Metal backend for mpv,5 but it should be possible to run mpv using OpenGL initially and then transition to a combination of Vulkan and MoltenVK. Even with this translation layer, I expect that this software stack will reportedly run 2x as fast as using OpenGL6 and support more modern features.7 I have followed mpv for many years and find it particularly good at handling any audio codec, 4K video, HDR video, and providing fast video seeking.

Speaking of advanced video processing capabilities, I had hoped that the second generation Apple TV 4K might include system-wide hardware accelerated video upscaling and interpolation similar to the Nvidia Shield’s “AI-enhanced upscaling”. Unfortunately, even though the latest Apple TV’s includes a moderately faster processor (the A12 Bionic) including an early version of the Neural Engine, it appears that any video upscaling (e.g. 1080p to 4K) will need to be done within individual media apps. Similarly, Apple TV’s frame interpolation is noticeably inferior to that of mpv or even modern HDTVs.8 Fortunately, these features have long been a strength of mpv and would likely be more performant when leveraging MoltenVK.

User Interface

User Profile Selection Screen

Although Apple encourages developers to use the AppleTV profiles function (tied to users’ Apple ID), virtually all streaming video players use their own user management and profile selector UI. JellyFin for tvOS should do the same, leveraging user profiles defined on the JellyFin media server. User profile selection both enforces library and video content ratings permissions per user and also permits each user to have their own history and watchlist. Further, a separate guest account enables visitors to the home to watch videos in JellyFin on AppleTV without adding unwanted shows to another user’s history or watchlist.9

Below is a crude illustration of a user profile selection screen (based on Disney+) that should be presented upon first launch of the JellyFin tvOS client. This includes the avatar and name of each user. The user monogram in focus is then highlighted.10 Assuming that a Guest profile is enabled on the JellyFin media server, then the JellyFin tvOS client should display the name and avatar for the guest on the right hand side.

Modified version of Disney+’s user profile screen

Tab Bar

Given the narrow scope of initially supported features described above, the core navigational structure (tab bar) of the user interface should be:

  • Watch Now
  • Guide for current and soon-to-be airing linear TV programs11
  • DVR12
  • Movies
  • TV Shows
  • Library, and
  • Search

This tab bar flow follows Apple’s recommendations here. To illustrate each, I have included similar screens below (some slightly modified from other apps in order to show the desired UX). There’s an inherent design tension between keeping the number of tab items on the tab bar relatively small versus both surfacing content that would otherwise be buried on another screen and/or reducing the number of user actions needed to access that content.

“Watch Now” Menu Tab

Modified version of Apple TV+ home Watch Now tab

Design Goals

Similar to Apple TV+ and many SVOD services, Watch Now should be the default landing page highlighting “fresh” content. This includes:

  1. the “Up Next” queue
    • video content that a user is in the progress of viewing, similar to Continue Watching in the JellyFin web UI, but also including…
    • for TV series, the next available episode after the most recently completed episode, similar to Next Up in the JellyFin web UI, and
    • any video content that the user has manually added to the Up Next queue
  2. recently watched TV channels
  3. currently airing (live) TV shows on major networks (plus any additional channels that were recently tuned by the user),13 and
  4. recorded (DVR’ed) content, stored movies, and stored TV shows that were recently added

Considerations:

  • Like Apple TV+, I recommend using fanart for the background of the currently highlighted video and only for the Up Next content row
    • The background should change as other video assets in the Up Next row are highlighted
  • Scrolling downward to other content rows, the background should fade to a blurred dark grey. Longer term, an alternative background color or visualization may be preferable
    • PlexAmp has a nice static background color generator, UltraBlur, based on the colors in the current album’s artwork
    • Similarly, Apple Music has a visualization that appears to use the album artwork colors as its color palette source for a slow visualization/background
  • Individual video assets should use thumb images, falling back on fanart where thumb images are not available
    • If fanart is used, then the video title should be superimposed over the image
  • As with Apple TV+, the movie/show’s title should be displayed as a caption only for the asset over which the user is currently hovering (focusing on)
  • Like Plex, unwatched movies and shows (other than live TV) should have an “unwatched” marker in the top right corner of the artwork
  • In the Up Next row, when an in-progress show is in focus, it should have either:
    • the percentage watched progress meter or
    • if not yet watched, the current show episode (including show season and episode numbers)
  • Pressing and holding a video asset should present options similar to Apple TV, as illustrated below:
    • The exact options will be dependent on whether the video assets has been added to the Up Next queue or has been recently watched
    • Removing an asset from Recently Watched also removes the asset from the Up Next queue
  • Long term, thought should be given to creating an array of titles that randomly swap every 24 hours to keep the content row titles fresh.
    • For example, the illusion of highly curated content can be reinforced by swapping “What to Watch”, “Current Highlights”, “Today’s Highlights”, and “New & Noteworthy”
    • Similarly, “Notable Nonfiction”, “Nonfiction [Movies/Series]”, “Documentary Series” are all interchangeable
    • Or, “Collections”, “Browse by Franchise”, and “Iconic Franchises”
    • Or, “Awards & Accolades” v “Award Winning Movies”. So, please don’t get hung up on the permanence of a particular label suggested below.
Apple TV+ options after pressing and holding a video asset

 

Apple TV+ Implementation Compared to Apple’s HUI Guidelines

Apple’s tvOS guidelines provide recommendations for 2 through 6 column grids. At first blush, a developer might assume that the entire tab should use a given column throughout.

However, Apple TV+ uses a mixture of layouts on a given tab:

  • Up Next: uses a 5 column grid
  • Except as noted below, other content on the same page uses a 4 column grid
  • Promotional content, monthly themes and teasers all use a 3 column grid
  • Select promotional content uses a 4 column grid, alternating images and text descriptions
  • Collections & genres use a 3 column grid, and
  • Promotions at the top of the movies and TV shows tabs use a 2 column grid

It’s not clear to me that the 2 and 3 column grids for promotions and other themes are desirable layouts. Rather, Apple TV+ may be using them so that specific content is more obvious to the user, making the user more likely to click on that content.

Therefore, I recommend a simplified implementation for the JellyFin native tvOS App:

  • Up Next: should use a 5 column grid
  • Except as noted below, other content on the same page should use a 4 column grid
  • Collections & Genres: should use a 3 column grid

Additionally, there’s a conflict between Apple’s recommended best practices for displaying video information and how Apple TV+ displays that information:

  • By default, information about a particular video shows a glimpse of the cards for the left and right videos in the same row
  • But, promoted content (in the 3 column rows) display a full screen view, with no glimpse into adjacent videos

I recommend keeping it consistent, with the ability to see a glimpse of adjacent videos. While this adds more visual complexity to the screen, the key advantage is that it permits users to scroll left or right to see information about other videos in the same content row, without first needing to back up a level then select an asset, then go back down a level.

Apple TV+ video details initial video details

Content Rows

I recommend the following defaults for the content rows. Users should initially be able to hide/show and change the order and, ultimately, be able to add different content rows via options in Settings.

  1. Up Next: as discussed earlier, this queue consolidates JellyFin web UI’s Continue Watching row and Next Up row. However it also serves as a similar function to Netflix’s watchlist, all consolidated into a single queue of videos1415
    • On the Apple TV, individual movie and show details screens including an “Add to Up Next” row button. As described above, pressing and holding videos also enables users to add them to the “Up Next” queue
    • Clicking on a video asset immediately plays that video (because the user has already had the opportunity to look at the video details page)
    • Clicking and holding on a video asset displays the menu options shown above
  2. What to Watch: this is a randomized, commingled list of the highest ranked, unwatched movies and series that serves as an auto-discovery feature16
  3. Recent Channels: this row displays TV channel logos, each within a monogram similar to Apple TV+ content partners’ logos today, sorted by the most recently tuned channels
  4. On Now: this is the same as JellyFin’s On Now content row in their web client. To break up the visual design and to draw the eye to live content, I recommend presenting this as a sectioned content row.
  5. Recently Recorded: this row displays recorded (DVR’ed) programs, starting with the most recently recorded
  6. Recently Added Movies: this row displays videos from the Movies library, starting with the most recently added
  7. Recently Added TV Shows: this row displays videos from the TV Shows library, starting with the most recently added
  8. Recently Added [Library Name]: for each additional defined JellyFin library with video content (e.g. Kids TV, Kids Movies, Fitness, Lessons), there should be an additional row highlighting the most recently added videos17

All of the above should use thumb artwork, falling back on fanart, in order to have the most compact rows, similar to most SVOD services today.18

“Guide” Menu Tab

Design Goals

Apple’s Human Interface Guidelines provide specific recommendations for live-viewing apps, emphasizing thumb images for each channel and, to a lesser extent, a three channel at-once grid guide.19 I believe a more compact (5-6 channel) grid guide plus the currently selected show details along with a live TV tile for the currently tuned channel makes it easier for users to quickly scan and record what’s airing now and upcoming in the next few hours.

Additionally, there is the concept of a thumb-base guide, which is visually similar to the presentation of stored movies and TV shows. Based on my past experience overseeing focus groups that studied viewers’ preferences for television guides, I believe that the grid guide is more efficient than a thumb-based guide. Users can view more linear channels and programs concurrently and can simultaneously see shows airing live or later in the day. The latter enables users to more quickly record more programs in the fewest number of steps. For this reason, I recommend that the focus of the Guide tab solely be a traditional grid guide. In the DVR tab design goals below, I will explain why I recommend commingling recorded shows with live and upcoming shows in a single tab.

Grid Guide

Both Plex and Comcast’s X1 guides are great examples. I recommend keeping show details at the top of the guide and displaying a live TV tile on the right top, similar to Plex.20

Considerations:

  • The currently selected show should be highlighted on the guide
  • The tab bar described above should be displayed initially but disappear when the user scrolls downward, similar to scrolling downward on the Watch Now, Movies, and TV Shows tabs. This enables the maximum possible real estate for the grid guide
  • Selecting a show that’s currently airing should present that show in progress full screen
  • After selecting a show that has yet to air, a modal dialog box should appear with the option to record just that episode or to create a Pass
Plex’s TV guide

 

“DVR” Menu Tab

Design Goals

The DVR21 section assumes that a user has created a separate library for the programs that they record using JellyFin server’s DVR functionality. Although some media player user interfaces commingle recorded movies and TV shows with the respective stored media library, I believe that this conflates two very different user experiences and creates potential risks of inadvertent content deletion. Recorded shows–especially news, sports, “reality TV”, instructional TV shows & special events–tend to be perishable. Users likely will watch them only once and then delete them. User behavior tends towards “clearing the queue” of these recorded shows.  By contrast, if users went through the difficulty of ripping and storing movies and TV shows from other media that they own, then they likely don’t want any unauthorized user (or even the admin, unintentionally) deleting those media files.

While I generally believe that the web client is best for advanced configuration of your JellyFin server, management of select DVR functions is well suited to a “lean-back” experience by any family member. For example, user profile administration, library configuration, live TV & DVR configuration and other administrative efforts can be done by the person in the household who is most technically proficient.22 However, ad hoc recording of live and upcoming programs of interest and deleting of shows after watching them should be a function that any household member can do with no technical expertise using their Apple TV remote.

One key technical challenge will be supporting the ability of users to watch a show from the beginning up to what’s airing live while a recording is still in progress.23 This feature is very useful for sports, news, and long event-based shows.

DVR Controls

In addition to presenting a clean list of recorded programs (that can be deleted using the TV remote), this module also serves to expose currently airing and soon-to-air programs as well as easy access to DVR controls including:

  • Upcoming Shows: what’s scheduled to recording next?
  • Recording Options: the ability to modify either a series or an individual show’s recording parameters
  • Passes: the ability to create and delete series, actors, or sports team “season passes” that automatically record matching programs, and
  • Recording Priority: tuner conflict resolution

These functions should be presented as segmented text controls below the tab bar and above all other content described below.

Recorded Programs

  • Thumbnails of the most recently recorded programs should be displayed using a 5 column grid, sorted by when the program was recorded
  • They should be displayed using a sectioned content row to visually offset this row from the recommended content displayed below it on this tab
  • If there are no recorded programs available, then the UI should notify the user: “There are no recently recorded programs.” (or friendlier equivalent)

Recommended Programs

Below the Recorded Programs content row, there should be additional content rows, listing programs that are either airing now or later that evening. This enables users to quickly watch or record live programs. And, it enables them to quickly select later airing programs to record. These videos should be presented in a four column grid, similar to how Apple TV+ surfaces live and later airing sports content.

For any content row where there is no currently (or later) airing programs, the content row should not be displayed.24

  1. Recent Channels: this row displaying channel logos within a monogram, sorted by most recently tuned
  2. What’s on Now: sorted by channel number
  3. Shows on Now: TV shows currently airing
  4. Movies on Now: movies currently airing
  5. Sports on Now: sports events currently airing
  6. News on Now: news programs currently airing
  7. Kids on Now: kids programs currently airing
  8. New Shows On Tonight: prime time programs limited to major networks/HD broadcasts, sorted by time, then network channel
  9. Movies on Later: movies airing later in the day
  10. Sports on Later: sports events airing later in the day
  11. News on Later: news programs airing later in the day
  12. Kids on Later: kids programs airing later in the day

The design of the live and upcoming programs should be consistent with the Sports section of the Apple TV+ app:

  • Live TV programs have a marker as such in the upper left hand corner. The network logo is overlaid in the lower right corner.
  • Upcoming programs should have the time overlaid in the upper left hand corner. Similarly, the network logo is overlaid in the lower right corner.

“Movies” Menu Tab

Design Goals

Ideally, both the Movies and TV Shows menus display as little redundant content as possible, both across content rows within a given tab and across the Watch Now and DVR menus. The design goals should be to increase content discovery and to present a polished, “curated” experience.25

Content Rows

Following is a recommended default list of content rows (unless noted, presented in 4 column grid):

  1. Today’s Highlights: like the “What to Watch” content row on the “Watch Now” menu tab, this is a randomized, commingled list of the highest ranked, unwatched movies
  2. Latest Releases: movies sorted by release date
  3. Recently Added: movies sorted by data added
  4. Top Movies: movies sorted by the highest rating
  5. Comedies: movies randomly sorted that match the comedy genre
  6. Dramas: movies randomly sorted that match the drama genre
  7. Documentaries: movies randomly sorted that match the documentary genre
  8. Family Fun: movies randomly sorted that match the kids genre
  9. Iconic Franchises: movies that match a collection sorted the title of the collection (3 column grid)
  10. 4K HDR: movies are in 4K resolution and HDR
  11. If You Like: [X]: two rows of recommended content based on two recently watched movies
  12. Genres: “Kids & Family” (first, rather than in alphabetical order), “Action & Adventure”, “Comedy”, “Drama”, “Horror”, “Sci-Fi & Fantasy”, and “More to Explore” (3 column grid)

Movie Details

The gallery above shows the progression of video details as presented within the Apple TV+ app:

  • The first screen includes the plot details, with the option to play/resume and add to/remove from the Up Next queue. Genre, year, duration, Common Sense and MPA rating, resolution, HDR, audio codec, subtitles, SDH, AD, actors and directors
  • Scrolling down, the second screen (full window) includes Trailers, Bonus Content and Related Content
  • Scrolling further down, the screen includes How to Watch and Cast & Crew
  • Finally, the screen displays About (a combination of the plot and Common Sense rating again) and Information (the release date, duration, rating, languages and accessibility again

Considerations:

  • The first screen presents an ideal layout for a video, though there should be a delete button for any movie that is in the DVR library
  • The design should be adaptive so that there are no blank spaces for missing metadata. Instead, the remaining content should shift up and/or left as appropriate
  • Apple’s second screen provides a template but also includes either irrelevant or redundant information
  • Therefore, I recommend simplifying the second screen as depicted in the mockup below, hiding any row for which there is no content:26
    • Clear logo, falling back on a title if there is no available clear log
    • Trailers
    • Bonus Content
    • Related: this is the same as JellyFin’s “More Like This” row, and
    • Cast & Crew: this is the same as in JellyFin, presented in monograms
Mockup of consolidated second screen details for movies (ignore the background)

“TV Shows” Menu Tab

Design Goals

TV Shows is consistent with the presentation of movies, with the added complexity of seasons and episodes.

For seasons, like both Apple TV+ and Disney+, I recommend presenting the season selector as text in a header over a particular season’s episode data. This is different from Plex, Infuse and others that use season jacket art. Apple’s and Disney’s approach requires the fewest steps to watch a given video asset, with the least dependencies on marginal graphical assets,27 and the least extraneous/redundant information.

Apple TV+ follows Apple’s guidelines presenting episodes in the form of cards:

  • When scrolling down, the episode thumb should be highlighted by default.
  • If there are multiple seasons of the series, then users can scroll up to seasons and select later seasons (e.g. season 1, season 2)
  • Users can scroll down and select the Episode Details.

Content Rows

Following is a recommended default list of content rows (unless noted, presented in 4 column grid):

  1. Today’s Highlights: like the “What to Watch” content row on the “Watch Now” menu tab, this is a randomized, commingled list of the highest ranked, unwatched movies
  2. Latest Shows: show thumbs sorted by the latest episode date aired
  3. Comedy Series: series randomly sorted that match the comedy genre
  4. Drama Series: series randomly sorted that match the drama genre
  5. Nonfiction Series: series randomly sorted that match the documentary genre
  6. Family Fun: series randomly sorted that match the kids genre
  7. If You Like [X]: two rows of recommended content based on the two most recently watched series
  8. Genres: Kids & Family, Action, Comedy, Drama, Horror & Sci-Fi, all presented in larger tiles (3 column grid)

TV Show Details

Mockup of consolidated second screen details for TV shows (ignore the background)

Episode Details

This screen should enable a full screen display of the episode, similar to Apple TV+ including:

  • background image that is a frame from the episode
  • series title and episode title on the top left
  • distributor logo on the top right
  • blurred overlay on the bottom third of the screen
  • playback button ([play icon] Sx, Ex)
  • To the right of the playback button should be Sx, Ex (in bold): episode plot
  • Below that should be the airing date, duration, TV rating, resolution, HDR, audio codec, and whether there are subtitles

Unlike Apple TV+, I don’t think there that is a need for How to Watch (irrelevant) or Information/Languages/Accessibility (redundant).

“Library” Menu Tab

On this tab, there should be a split view of library name and thumb artwork, with titles below that artwork. Each library that is enabled (see Settings below) should be listed here for every server that the JellyFin tvOS client is logged into. For example, DVR, Movies, TV Shows would clearly be listed again. But also, if the user had additional libraries, such as Music Lessons or Fitness, these would also be listed here.

Between the Library tab bar and thumbnails is a row of widgets, presenting a simplified version of how Plex users can sort their libraries.28

[All] by [Title] # videos

[All] can be limited to In Progress, Unplayed, Genre, Decade, Collection, Director, Actor, Resolution, or HDR. There is also the option to clear the filter.

[Title] can changed to Year, Release Date, Rating, Date added, or Random.

“Search” Menu Tab

Text Search

In short, this screen should mirror the layout of Apple TV+’s search screen, minus promotional content. Below the search results, thumbs should be displayed for the following genres: Kids & Family, Action, Comedy, Drama, Horror & Sci-Fi

Genre Search

This screen displays a 4 column grid of thumbs for all videos in the DVR, Movies and TV Shows libraries that match a specified genre, sorted alphabetically. Apple TV+ has a far more complex (and compelling) presentation but I believe that a more complex genre search presentation is lower development priority.

Video Playback

Loading

Depending on the speed of the user’s home network, the size of the stored video file and/or the time that it takes to tune a TV channel, it may be necessary to present an interstitial “loading” screen. If loading times is expected to exceed two seconds, the tvOS app should leverage a blurred version of landscape artwork associated with the selected video or channel. Either an activity spinner or, preferably, a progress meter should be overlaid on the background as described here. Additional guidance is here.

Playback Controls

Apple’s default video player experience is described here. I think this is a valuable starting point but the JellyFin tvOS player should also display a current frame thumbnail above the progress bar, like most SVOD services do.

Considerations:

  • Don’t ask to resume playback. Just start the video from the resume point
  • Avoid the complexity of picture in picture mode

Video Details & Advanced Diagnostics

Similar to my view earlier about experts and novices in the same household, I believe that the video details UI should default to a simplified view, with a hidden, highly technical “stats for nerds” view available for more technically proficient household members.

Info Panel

The cleanest example of the Info Panel screens is in the Netflix for tvOS app. Unfortunately, I cannot capture these overlay screens because Quicktime cannot record content protected videos.

“Info” Item

As described by Apple here and here, this overlay should permit users to see video information including:

  • movie or TV show thumbnail
  • text for video title, year, and duration
  • icons for rating, resolution, HDR/Dolby Vision, and audio codec,29 and
  • a description.

For stored or DVR’ed content, there should be navigation markers (i.e. chapter thumbs).

“Subtitles” Item

Defaulted either to off (or the global setting defined in Settings). This panel lists every subtitle associated with a video asset locally. Longer term, it may be valuable to have a download more subtitles function. But this likely involves requires server-side dependencies.

“Audio” Item

Three columns are presented: Language, Sound and Speakers:

  • Language: this column lists all audio tracks associated with a video file by language, alphabetically
  • Sound: full dynamic range and reduce loud sounds are presented
  • Speakers: by default, TV speakers is listed. All other Airplay enabled speakers in the home are also listed below that (e.g. in my case, that includes the rooms for all of my Sonos speakers)

“Stats for Nerds”

For advanced diagnostics, there should be a toggle for a real-time overlay of video streaming information including:

  • video codec,
  • video resolution (original and current),
  • video frames per second,
  • pixel decoder,
  • color space,
  • deinterlace method,
  • audio codec in use,
  • audio bitrate,
  • audio channels,
  • network connection speed trendline,
  • network activity trendline,
  • buffer health,
  • Apple TV memory usage, and
  • Apple TV CPU usage.

In sum, this feature is a combination of Kodi’s player process info screen and YouTube’s “stats for nerds” diagnostic information in a layout similar to the image, below. Unlike this image, I would use plain English to describe the technical terms and codecs.

YouTube’s stats for geeks overlay

Settings

Design Goals

  • Multiple Servers; One User Interface: one or more JellyFin servers can be associated with the tvOS client. For example, if one server includes movies and the other TV series and DVR, both servers will be presented in a unified fashion in the tvOS client, as if presented by one JellyFin server instance.
  • Authentication; Multiple Apple TVs
    • The authentication screens should conform to the Apple tvOS guidelines for authentication
    • The cached username and passwords for each JellyFin server should be encrypted and stored in iCloud for use by other instances of the tvOS app on Apple TVs paired with the same Apple ID
  • Configuration Across Multiple Apple TVs: similar to tvOS’ One Home Screen feature, there should be an option to synchronize all JellyFin tvOS configuration settings across all Apple TVs paired with the same Apple ID

User Interface

The JellyFin tvOS app settings can be accessed by going to the tvOS Settings app > Apps > “Name of the JellyFin tvOS app”

Although most settings are configured by using the web version of the JellyFin app, the following subset of settings should be exposed on tvOS:

  • Media Servers
    • List of each configured server
    • Add a media server30
  • Libraries
    • List of each library by configured server with ability to uncheck to hide
  • Automatically Sign In: defaulted to off. Preferred user can be specified.
  • Playback
    • Home Streaming: defaulted to maximum
    • Internet Streaming: defaulted to maximum
  • Accessibility
    • Subtitles: enable subtitles globally
    • Preferred Audio Language: defaulted to auto
    • Preferred Subtitle Language: defaulted to auto
    • Auto Play: automatically plays “Up Next” videos when the current video is finished. Defaulted to on
  • Remote Control: advertise the tvOS client as a player. Defaulted to on
  • Support
    • Submit diagnostics (similar to Infuse)

Top Shelf Content

The Top Shelf should display poster art of the five most recently assets listed in the Up Next row as described in the Watch Now tab. Apple’s guidelines describe this as a row of focusable content. There should be the title “Up Next” above those posters.31 In short, the Top Shelf presents a queue similar to Apple TV+ in a layout similar to Plex and Infuse. For TV series, the poster art should be for the series, not the season.32

Apple TV 4K (2021)’s Second Generation Siri Remote

  • Support scroll wheel navigation mode for rewind and fast forwarding through a video asset
  • Clicking left or right on the remote control D-pad should rewind or fast forward the playing video by 10 seconds (compare to Plex).

Other Considerations



Updated on April 6th, 2023


  1. Technically, the ultimate app would likely be a Universal binary for tvOS, iOS, iPadOS, and perhaps even MacOS. But for this article, I am exclusively focussed on the tvOS user experience.

  2. While there clearly must be overlap with JellyFin’s server-side functionality, I don’t believe that the tvOS implementation should be constrained by JellyFin’s web client UX or Android app designs. Being a truly native tvOS app means not just coding in Swift and interfacing (indirectly) with the Metal API but also following tvOS best practices.

  3. Echoing the guidelines, the tvOS experience should be connected, clear, and immersive.

  4. Assuming that the admin has enabled that feature on the JellyFin server.

  5. Or for any other open-source media player that I am aware of…

  6. Ideally, we could benchmark real world performance on Apple TV 4K gen 1 & 2 and Apple TV HD. While application developers can do private benchmarking of their own apps, I don’t believe that Apple currently permits third party performance bench marking apps on tvOS.

  7. Apple long ago deprecated OpenGL support, significantly impairing players that leverage that API.

  8. I either recommend setting your Apple TV to “Match Frame Rate” so that your TV can do the interpolation or using a software-defined, per-application interpolation method such as using the bwdif filter to deinterlace 1080i and 480i broadcast content. As I write this, it seems likely that Apple TV 4K (2d gen) will not support 120fps.

  9. Unlike this illustration, I recommend a background color in the default grey, using San Francisco Pro fonts throughout, and without the fade artifacts in my illustration. I removed both “Add a User” and “Edit an Existing User” features that the Disney+ UX has because I believe most user profile administration will be done on the JellyFin web client.

  10. JellyFin’s ability to support multiple storage devices with a unified UX (like Plex) is a currently nonexistent. For now, I suggest displaying all users on all enabled JellyFin servers. If a username and password is the same for two servers, then display a single user profile on this selection screen.

  11. Assuming Live TV is enabled on the JellyFin server

  12. Assuming Live TV is enabled on the JellyFin server

  13. For simplicity sake, this may be initially implemented as all HD channels, expecting that the major networks will be highly correlated with HD broadcasts. Longer term, this concept might be replaced with the concept of a user’s manually favorited channels.

  14. I don’t believe that JellyFin currently supports a watchlist. Either this could be added or perhaps a playlist could serve a similar function until that functionality exists.

  15. For sanity sake, I recommend bounding the display at 50 videos. This is similar to Apple TV+, which currently lists 34+ videos in my Up Next list.

  16. Unlike the custom curated promotions on most SVOD apps, this needs to be fully automated, which is why I used the combination of (1) randomizer, (2) unwatched filter, and (3) ranking filter. I recommend caching this row’s contents for a 24 hour period.

  17. For UX sanity sake, an upper bound of 5 additional libraries may be appropriate. Also, there should be an option for users to disable a given library being displayed on the Watch Now tab.

  18. It may be desirable to have an option for a poster artwork view for a given library because poster artwork may be more widely available than thumbs. In in my experience, I have found thumb artwork for (almost) all my stored shows and have been very impressed with ScheduleDirect’s support for thumb artwork.

  19. The CBS News app currently employs this limited grid guide. However, I find Apple’s proposed live TV overlay distracting and the limited number of channels inefficient.

  20. The guide shown here is from a recent version of Plex for Apple TV. But, they appear to be refreshing their guide including a larger, unframed live TV feed. I prefer the prior guide UX.

  21. I debated whether to call this tab “DVR”, “Saved”, “Discover” or something else. Ultimately, I chose “DVR” because that is now a common, not just technical, term and because other movies and TV shows are saved.

  22. Indeed, a certain level of technical sophistication is assumed in order to both deploy a JellyFin server, to deploy a SiliconDust HDhomerun tuner, all the Apple TV set top boxes and TV sets and to interconnect all of these with either a wiredline or wireless home network.

  23. This is a feature of cable DVRs and of SiliconDust’s HDhomerun DVR. I don’t know whether the JellyFin server currently supports this function. As of this writing, Plex does not support this capability.

  24. There likely needs to be a maximum number of programs per row that can be displayed (e.g. 50 programs)

  25. Clearly, auto-curation is extremely difficult, especially when compared to SVOD services that have human curators.

  26. The background should be a single fade. The differences in the mockup’s background are artifacts of stitching together multiple screen grabs

  27. For example, Plex requires users to first view season posters rather than drill down to the episode thumbs.

  28. Unlike Plex, libraries are accessed from the main tab bar, not from a widget within a section.

  29. CC, SDH and AD are also included as icons on AppleTV+ but this is unnecessary in my opinion.

  30. When users enter a URL but not a port, the default port of 8096 should be tested before presenting an error.

  31. Again, this consolidates JellyFin web UI’s Continue Watching and Next Up content into a single list

  32. Season posters tend to be harder to find and sometimes crudely rendered as compared to series artwork.