Today we're bringing the Android TV app to 2021 with a modern design and tons of other changes.
Over 4001 pull requests containing 2400+ commits, 750+ changed files with 54000+ changed lines of code by roughly 50 contributors2. This is the biggest update to the app we ever worked on. I'll talk a bit about why it is this big and why it took so long later in the post. But let's start with the part you probably came for: new features!
New authentication flow
We got a lot of complaints about our authentication flow. It wasn't obvious how to enable the auto-login option and managing multiple servers or users was not an easy task. We also didn't like this part of the app, and decided to completely revamp it! The rewritten sign-in screen looks more modern and is much easier to use. There is a new help section that links to our documentation to help new users get started with Jellyfin. The auto-discovery feature of the app now shows all servers instead of the first one, you can select one of those or manually enter your server address to connect. You can then proceed to add a user and start using the app. Users are automatically saved now with auto-login enabled by default.
Updated user interface design
After logging in you will be presented with a modern look and feel in our refreshed user interface. A new toolbar is added to the top-right corner of the screen to open the search page, settings or to switch to a different user. No need to scroll down to the bottom of the home screen anymore. Beneath this new toolbar is your media, like it always was, but the cards got a new look with the debatable colored backgrounds removed.
The settings screen got a refresh too. It allows you to more easily change settings. Some new settings got added to customize the app to your own taste.
The user interface when browsing inside libraries got some slight changes too. We're hoping to completely revamp this part of the app at some point, but that didn't stop us from making it slightly better now.
The web client supported theming since forever but the Android TV app did not. That changes today with the introduction of three themes: Muted Purple together with Dark (Default) and Classic Emerald are now available in the app to supports basic theming. We're planning to expand this feature in the future with more themes and more variety between them. Maybe we should add a light theme?
New video player design
The video player was completely redesigned to remove a lot of clutter and make it easier to use. The new design is bigger so you can more easily see the information on a television.
The new video player design is just the beginning. A project to rewrite the playback code behind it is already in the works. This rewrite should help with the crashes and unnecessary transcoding that happens sometimes. It will also give us the opportunity to add new features like SyncPlay. But this doesn't mean the current code isn't being worked on anymore! We did fix some issues with the current video player code. Notable are changes for Fire TV to direct play more often and a lot of crashes got fixed.
Fixed that bug
Together with all the visible changes we've made tons of fixes to the code. We're now using Kotlin as our primary language to help us writing type-safe code, migrated completely to AndroidX for better device compatibility and made a brand new SDK that is slowly being integrated for a more secure and stable connetion with your server. All of these modernizations in the code allow us to more frequently release updates.
A complete list of all the fixed bugs can be found in our changelog linked below. It's a big list!
It took some time to get this release out. We didn't feel like the state of the app was good enough for a release for a while. Fortunately we've worked hard to make sure we did feel confident and here we are! Starting from this release we're changing some things to make sure the next release won't take this long. Our brand new SDK that is already used in our Android app and third party apps is one of the tools helping us with faster releases. By having a more type-safe base we can prevent tons of crashes, allowing us to focus on actual features and bugs.
We're already working on some new stuff like the earlier mentioned rewrite of the playback code. We're using feature flags for this so we can work on this code while still being able to publish new versions. Other changes that we're looking into are more improvements to the user interface, better Live TV, better music support and more bugfixes!
Like all releases, we couldn't do it without our contributors and your donations! Jellyfin is made entirely by volunteers that don't get paid for their work. A big shout-out to the following contributors that made this release possible:
- @nielsvanvelzen - Donate via GitHub sponsors
- @thornbill - Donate via GitHub sponsors
Full changelog with all pull requests available on GitHub.