Currently, Swiftfin for tvOS is not yet ready for TestFlight. Some delays are due to shared components between iOS/iPadOS and tvOS (such as the Video Player Manager), while others stem from challenges unique to tvOS. Developing for tvOS tends to introduce quirks that make progress slower, such as more limited support for SwiftUI on tvOS, cursor focus management, and a more complex process to test builds on real hardware than with iOS.
That said, we are actively working to get the next version of Swiftfin for tvOS ready for testing. Below is an outline of our progress, detailing both what has been achieved and what remains to be done.
There are 3 outstanding items that we need to resolve before Swiftfin is ready for its next tvOS Release. Two of these items are tvOS specific and one is shared between tvOS and iOS:
This unifies a lot of our iOS and tvOS logic for items, posters, and the home screen. tvOS has some outstanding issues regarding how item views work and how the home view is displayed. Instead of creating a platform specific fixes for these views and components, this creates a more holistic system that will be more manageable. iOS benefits from this being a much more robust and built out solution while simultaneous fixing bugs and quirks that exist in tvOS that need to be addressed prior to our release.
While much of our iOS player logic can be re-used, we need to build out remote functionality for tvOS. One of the quirks I have run into on this is that iOS has scrolling/swiping actions directly build into SwiftUI but tvOS does not. So, components like the progress bar need to be build custom for tvOS using UIKit where iOS was able to lean more on newer, SwiftUI components. This work should roughly mirror the iOS implementation of the Media Player UI but with tooling built in to be navigable using remotes.
Apple promotes the usage of Core Store for iOS and macOS where data is saved to the Application Files. This is a great tool that enables more structured data and migration tooling. tvOS does not allow the usage of Core Store for persistent data. As a result, we need to create logic to store iOS and tvOS differently to ensure that tvOS does not log users out or wipe settings when storage is low.
While our required items are being worked on, there is also some refactoring to help us better unify iOS and tvOS for ease of development. We currently have shared ViewModels, that call the APIs and perform data actions. This let's us reuse all "Business logic" between iOS and tvOS without issue. Moving forwards, we'd like to have shared views that can be used between each platform. Previously, this wasn't possible to do cleanly but, as SwiftUI has developed, this is a much more manageable task. The goal of this refactor is to allow us to build the UI for tvOS and iOS from a single location. If something on tvOS/iOS requires special considerations, we can add logic there as well. But, for the majority of our views, tvOS and iOS have enough overlap this saves us from having to do this in 2 locations. This work was originally started here:
But, for some examples of what this looks like:
This is not a requirement for our tvOS release but completing this should expedite future development and help us keep parity between platforms. Unofficially, this will also naturally result in a macOS client as our unified logic should work more cleanly there as well.
Please find our new milestone for tracking tvOS items below:
https://github.com/jellyfin/Swiftfin/milestone/3
There are some items and features that are missing from this list, but this milestone helps make updating & tracking changes to tvOS easier. As items are completed, they will automatically be updated there.
Please note that we have no firm release date and won’t commit to one. Swiftfin development is volunteer-driven by individuals who have other commitments. Updates will be posted here as available. We ask that you please be respectful of those dedicating their free time to make Swiftfin a reality.
At this time, there is no tvOS TestFlight or beta available for testing.
If you have any questions, feel free to ask in the comments, and I'll answer as best I can!
We will update this post with any updates as they occur along with a timestamp of the last update.
2024-11-04: Added all tvOS PR's currently merged into Main
2024-11-12: Added episode card changes
2024-12-08: Reorder for readability and adding new tvOS items
2024-12-11: Clarity on the PRs included and the issues potentially resolved
2024-12-12: Move Sign-In Flow from 'Not Started' to 'In-Progress'
2024-12-18: Move Home Screen tasks from 'Nice to Have' to 'Not Started'. Break out tasks to be more descriptive for new potential contributors.
2024-12-19: Sign-In Flow - General Polish completed.
2024-12-31: Sign-In Flow - Delete Users completed.
2025-01-02: Added a note clarifying that there is currently no TestFlight available for tvOS. Also included more details in the post to address common questions, such as progress updates. Started: Home View - State / Error / Empty Handling & Sign-In Flow - User Local Authentication.
2025-01-05: Included: Home View - Manual Refresh Button to PR #1382. Subject to change.
2025-01-09: Completed: Sign-In Flow - User Local Authentication. Included: Home View - Reactive Changes to PR #1382. Subject to change/feedback on PR.
2025-01-10: Completed: Home View - Reactive Changes. This was already completed by earlier changes from an earlier PR to the HomeView.
2025-01-11: Moved back to 'Not Started': Home View - Manual Refresh Button & Home View - State / Error / Empty Handling. More discussion is needed for tvOS design and this PR was not the correct route. Pulling in favor of a more built-out solution later.
2025-01-23: Created & Set as In-Progress: Library View - Reload Settings as a continuation of PR #1213. This is needed as a precursor to Filters / Letter Picker conversations. Those items are not a requirement for this release and will require a discussion on UX/UI prior to their development. Finally, added PR #1403 to the general polish for the login flow.
2025-01-24: Created & Set as In-Progress: Enable ItemType Filtering. Completed: Library View - Reload Settings. Both are preparation for tvOS library filtering.
2025-01-26: Completed: Enable ItemType Filtering.
2025-01-29: Set as In-Progress: Home View - Error Handling. Cleaned up some of the completed PRs and tied back some related PRs to completed tasks. Broke out Home View tasks into Error Handling vs the broader restructure mentioned here: [tvOS] HomeView - Error Handling & Refreshing #1382 (comment)
2025-02-03: Set as In-Progress: Sign-In Flow - Sign-In Options. Also, removed ItemType Filters since it should all now be covered from LibraryViewModel so only one configuration is required.
2025-02-06: Completed: Sign-In Flow - User Auto Sign-Out & Sign-In Flow - Sign-In Options. Created a new task for Sign-In Flow - User Auto Time-Out which will handle the "Log out after X period of inactivity" as User Auto Sign-Out handles logout on close.
2025-02-15: Completed: Home View - Error Handling. Added Multiple Version Support. Set as In-Progress: Multiple Version Support, Episode Selector, and Sign-In Flow - Handle Duplicate Users. Re-ordered the "Nice to Have / Low Priority" section to better reflect the items that are less likely for the final build. Updated the PRs that will be included in this next release with all new PRs since I last updated it. Episode Selector's work is the first PR of likely a few.
2025-02-20: Completed: Multiple Version Support.
2025-02-23: Expanded Episode Selector - State / Error / Empty & Focus Handling to include Focus Handling.
2025-02-25: Included the new fix for [iOS] Grid in UserSelectView gets cut off with more than one user #1425.
2025-03-02: Set as In-Progress: Library Filters & Letter Picker. This is subject to change based on feedback. If this filter layout is not desirable I will reset this back to Lower Priority.
2025-03-03: Completed: Episode Selector - State / Error / Empty & Focus Handling.
2025-03-04: Set as In-Progress:Sign-In Flow - User Auto Time-Out. Re-opened: Episode Selector - State / Error / Empty & Focus Handling
2025-03-12: Completed: Episode Selector - State / Error / Empty & Focus Handling. Now with some scrolling/focus fixes. Appropriately linked Sign-In Flow - User Auto Time-Out to the review ready PR. Removed Item View - State / Error / Empty Handling as an item this appears to already be Stateful. Additionally, the Home View - Error Handling covered the ItemView Error state as well. Separated Library Filters & Letter Picker out from the rest of "In-Progress" as it likely will not be polished in time for the tvOS release.
2025-03-14: Completed: User Auto Time-Out. With this, our sign-in logic should be roughly at feature parity with iOS 🎉.
2025-03-21: Completed: Menu Button Cleanup & Video Ranges. Added Trailers & ActionButton Cleanup & Accent Color & tvOS ColorPickerView to in-progress. None of these are mission critical but they are some good QOL cleanup while the VideoPlayerManager refactor is ongoing.
2025-04-01: Set as In-Progress: Select User View - Move the AddUserButton to the Bottom Bar
2025-04-05: Completed: Item View - Trailer Support & ActionButton Cleanup.
2025-04-06: Added: App Crash on First Login. Set as In-Progress: App Crash on First Login. Completed: App Crash on First Login, Select User View - Move the AddUserButton to the Bottom Bar, & Developer - Update SDK to 10.10. Renamed AddUserButton to mirror other Sign-In Flow items. Updated other PRs included and moved some other issues around in terms of priority.
2025-04-15: Cleanup PRs and active items.
2025-04-16: Moved all QOL items to a more generic Help Wanted Post
2025-05-19: LePips has resolved the PagingLibraryView focus issue in their CollectionVGrid repository. This should be bumped in our next tvOS PR that makes it's way. I am going to create a single PR just to bump this version. This should be our last major item required outside of the Video Player Manager which can be followed from Video Player Manager Refactor #1203. Cleaned up open items to better reflect our current outstanding needs for our next release.
2025-06-12: Added an update to get in front of some of the 1.3 tvOS questions.
2025-06-15: Added an PR for the Video Player.
2025-07-20: Removed the long list of PRs for the next release as this was taking some effort to maintain and didn't really add much to the conversation. Instead, I will focus on keeping the Completed task list up-to-date with the more key/high profile items. Removed no longer in-progress items from the list and added the resolution for Logged Out Between Sessions [TVOS] #776 to the completed items.
2025-09-19: Cleanup notes post Media Player #1581. New tvOS 26 issues are present that need to be squashed.
2025-10-06: Linking [tvOS] tvOS 26 Fixes for Navigation & Updated Linting #1715 and updating to better reflect the source of the issue as an Apple Bug. This workaround should be minimally invasion and we should be able to reverse this easily when Apple patches this. Mark Video Player Cleanup as resolved.
2025-10-22: Added and Sorted outstanding tasks. Cleanup to refill Help Wanted! #1503.
2025-10-24: Marks .sheet fix and SDK changes as complete. Clean up and move to a Milestone instead of manually updating this list.
2025-11-17: Cleanup issues. Trailers now resolved for tvOS. Majority of tracking should now be on the Milestone.
2026-01-02: Cleanup Edits to be collapsible. Create a more narrative 1, 2, 3... gameplan for our next release.
2026-01-05: Bolding and formatting changes to make this more readable.
2026-01-12: 2026 NOT 2025...