Releases: jellyfin/jellyfin-android
Release list
v2.7.0
We're excited to announce the release of Jellyfin for Android 2.7! This release introduces one of the largest updates to the app so far, with a completely redesigned downloads experience, revamped Android Auto support, major playback improvements, and many bug fixes and quality-of-life enhancements.
Read the full blog post or look through the full changelog below.
🏗️ Enhancements
- Add long press event for speeding up playing #1020, by @Ank1996
- Load media session artwork from content provider #1558, by @Maxr1998
- Implement DownloadManagement app feature in nativeshell #1627, by @nielsvanvelzen
- Update workflows & issue template config #1630, by @nielsvanvelzen
- Add chapter skipping support to exoplayer client #1646, by @CeruleanRed
- Migrate to media3 #1655, by @nielsvanvelzen
- Update coil dependency from 2.7.0 to 3.2.0 #1669, by @cameocoder
- Use kotlin time over manual math for tick conversions #1680, by @CeruleanRed
- Add button for ask-to-skip media segments #1685, by @CeruleanRed
- Update app build script for Gradle 9 compatibility #1738, by @nielsvanvelzen
- Remove direct dependencies on OkHttp/Okio #1740, by @nielsvanvelzen
- Target SDK 36 (Android 16) #1756, by @nielsvanvelzen
- Update SDK to 1.7.0-beta.4 #1757, by @nielsvanvelzen
- Enable per-app language preferences #1821, by @TheMrMilchmann
- Port video title format from web client #1824, by @rodis120
- Add CodecProfile conditions to DeviceProfileBuilder so video codec profiles are correctly restricted from direct playing (ExoPlayer only) #1889, by @comp500
- Add horizontal seek gesture support with overlay feedback #1895, by @SJJ-dot
- Retry playback with fallback on source errors #1932, by @kfarnung
- Migrate downloads UI to Compose #1948, by @Maxr1998
- Add Trickplay view over the seekbar in ExoPlayer #1951, by @tal-sarid
- Update app title in fastlane metadata #1955, by @nielsvanvelzen
- Dynamically query device H264 max level for WebView device profile #1956, by @stumpylog
- Add android auto support #1972, by @nielsvanvelzen
- Replace loadUrl("javascript:...") with evaluateJavascript in WebViewFragment #1980, by @jim-daf
- Add audiobook support to Android Auto #1984, by @nielsvanvelzen
- Improve letter navigation in Android Auto #1985, by @nielsvanvelzen
- Add fallback icons to Android Auto items #1986, by @nielsvanvelzen
- Update naming in some places #1991, by @nielsvanvelzen
- Make playlists a top-level item in Android Auto #1993, by @nielsvanvelzen
- Add item expansion to Android Auto to play entire album/playlist/etc #1994, by @nielsvanvelzen
- Rewrite download support #2015, by @nielsvanvelzen
- Use Android TV linter configuration #2016, by @nielsvanvelzen
- Improve audiobook support to Android Auto #2017, by @jordanmichaelrushing
- Download primary image for offline files and store files in database #2019, by @nielsvanvelzen
- Move Android versions to catalog #2023, by @nielsvanvelzen
- Use .tools-versions file for Java version in GitHub workflows #2024, by @nielsvanvelzen
- Sign APK/AAB via Gradle build #2025, by @nielsvanvelzen
- Request download folder if unset #2029, by @nielsvanvelzen
- Show message when there are no downloads #2030, by @nielsvanvelzen
- Reduce API calls when starting playback on Android Auto #2032, by @nielsvanvelzen
- Play downloaded audio in external app #2034, by @nielsvanvelzen
- Use DefaultMediaSourceFactory instead of manually picking factories #2038, by @Maxr1998
- Add multi-select deletion to downloads #2048, by @nielsvanvelzen
- Use native video player by default #2050, by @nielsvanvelzen
- Show warning when download location is inaccessible #2052, by @nielsvanvelzen
- Support voice controlled playback on Android Auto #2059, by @nielsvanvelzen
- Lock gesture until drag ends in PlayerGestureHelper #2072, by @nielsvanvelzen
- Remove automatic landscape mode #2085, by @nielsvanvelzen
- Fallback to suggested music when no search results are found in Android Auto voice search #2089, by @nielsvanvelzen
- Revert "Remove automatic landscape mode" #2095, by @nielsvanvelzen
- Opt-out of Android 16 restricted resizability behavior #2096, by @nielsvanvelzen
🔧 Bugfixes
- Fix episode autoplay preference having no effect #1479, by @lfranke42
- Fix syntax error in native shell JavaScript #1643, by @nielsvanvelzen
- Fix integrated player control under camera cutout #1648, by @miikaforma
- Revert NativePlayer.seek to use ticks and rename to seekTicks #1694, by @CeruleanRed
- Remove repeated string in AVAILABLE_VIDEO_CODECS #1731, by @gert7
- Fix some languages using wrong code #1778, by @nielsvanvelzen
- Remove duplicate hebrew translations #1779, by @nielsvanvelzen
- Fix logo drawn behind status bar #1818, by @nielsvanvelzen
- fix: + button in edit images in android app #1878, by @jagadam97
- Fix NetworkOnMainThreadExceptions due to usage of Jellyfin SDK on main thread #1888, by @comp500
- Fix Live TV stream end calls not releasing tuner on HDHR devices when used with Jellyfin Server 10.11.x #1892, by @VTRunner
- Remove return from apphost #1900, by @nielsvanvelzen
- Fix title overflow in Player and Item Details screens in Portrait Mode on Mobile Phones #1920, by @DevGitPit
- Fix bluetooth media keys for local video playback #1973, by @mherceg
- Fix Android Auto navigation for artists and audiobooks #1992, by @nielsvanvelzen
- Use artists API for querying artists in Android Auto #1996, by @nielsvanvelzen
- Fix missing translations in SearchLibraryPage #2018, by @nielsvanvelzen
- Fix database migration for existing installs #2027, by @nielsvanvelzen
- Handle null locale when web settings language is not configured #2028, by @BotBlake
- Fix default download method not showing in settings #2033, by @nielsvanvelzen
- Use transaction for queued downloads query #2036, by @nielsvanvelzen
- Fix external subtitle selection #2037, by @Maxr1998
- Fix media session crash when playing audio #2045, by @nielsvanvelzen
- Fix crash when double tapping connect button #2046, by @nielsvanvelzen
- Fix PiP behavior #2049, by @nielsvanvelzen
- Fix allowed network types not showing default value #2051, by @nielsvanvelzen
- Show Google Cast streaming quality setting on Chromecast-capable builds #2065, by @JDStriker456
- Fix some textual issues in DownloadNotificationManager #2080, by @nielsvanvelzen
- Fix subtitle switching for downloaded files #2081, by @nielsvanvelzen
- Fix player title positioning #2086, by @nielsvanvelzen
🔃 Refactoring
- Fix various linter and compiler warnings #1657, by @nielsvanvelzen
- Remove dead code #1981, by @nielsvanvelzen
- Change UserEntity.userId to UUID #1983, by @nielsvanvelzen
💡 Everything else
- Add in app download functionality #1404, by @7ritn
- Add opus to MP4 direct play profile #1463, by @thedreaddpirate
- Prevent dest...
v2.7.0-beta.6
More information about the release plan can be found in the Jellyfin for Android v2.7 release plan discussion.
If you appreciate my work, you can show your support with a donation through Buy Me a Coffee or GitHub sponsors. Your support helps me continue improving and growing the app. Thank you!
🐛 Beta information
Beta versions are not guaranteed to work as expected. We encourage users to create detailed bug reports if any problems arise. Read our blog post for more information about our Android beta programs.
🏗️ Enhancements
- Revert "Remove automatic landscape mode" #2095, by @nielsvanvelzen
- Opt-out of Android 16 restricted resizability behavior #2096, by @nielsvanvelzen
Contributors
v2.7.0-beta.5
More information about the release plan can be found in the Jellyfin for Android v2.7 release plan discussion.
If you appreciate my work, you can show your support with a donation through Buy Me a Coffee or GitHub sponsors. Your support helps me continue improving and growing the app. Thank you!
🐛 Beta information
Beta versions are not guaranteed to work as expected. We encourage users to create detailed bug reports if any problems arise. Read our blog post for more information about our Android beta programs.
🏗️ Enhancements
- Remove automatic landscape mode #2085, by @nielsvanvelzen
- Fallback to suggested music when no search results are found in Android Auto voice search #2089, by @nielsvanvelzen
🔧 Bugfixes
- Fix some textual issues in DownloadNotificationManager #2080, by @nielsvanvelzen
- Fix subtitle switching for downloaded files #2081, by @nielsvanvelzen
- Fix player title positioning #2086, by @nielsvanvelzen
📈 Dependency updates
- Update android.plugin to v9.3.1 #2090, by renovate[bot]
- Update kotest to v6.2.3 #2092, by renovate[bot]
- Update CI dependencies #2091, by renovate[bot]
Contributors
v2.7.0-beta.4
More information about the release plan can be found in the Jellyfin for Android v2.7 release plan discussion.
If you appreciate my work, you can show your support with a donation through Buy Me a Coffee or GitHub sponsors. Your support helps me continue improving and growing the app. Thank you!
🐛 Beta information
Beta versions are not guaranteed to work as expected. We encourage users to create detailed bug reports if any problems arise. Read our blog post for more information about our Android beta programs.
🏗️ Enhancements
- Lock gesture until drag ends in PlayerGestureHelper #2072, by @nielsvanvelzen
🔧 Bugfixes
- Show Google Cast streaming quality setting on Chromecast-capable builds #2065, by @JDStriker456
📈 Dependency updates
- Update Gradle to v9.6.1 #2056, by renovate[bot]
- Update kotest by renovate[bot] v6.2.2 #2074, v6.2.1 #2057
- Update actions/checkout action to v7 #2058, by renovate[bot]
- Update github/codeql-action action to v4.36.3 #2067, by renovate[bot]
- Update junit-framework monorepo by renovate[bot] v6.1.2 #2077, v6.1.1 #2068
- Update dependency com.google.devtools.ksp to v2.3.10 #2073, by renovate[bot]
- Update Kotlin to v2.4.10 #2078, by renovate[bot]
- Update CI dependencies #2053, by renovate[bot]
- Update CI dependencies #2075, by renovate[bot]
Contributors
v2.7.0-beta.3
More information about the release plan can be found in the Jellyfin for Android v2.7 release plan discussion.
If you appreciate my work, you can show your support with a donation through Buy Me a Coffee or GitHub sponsors. Your support helps me continue improving and growing the app. Thank you!
🐛 Beta information
Beta versions are not guaranteed to work as expected. We encourage users to create detailed bug reports if any problems arise. Read our blog post for more information about our Android beta programs.
🏗️ Enhancements
- Show warning when download location is inaccessible #2052, by @nielsvanvelzen
- Support voice controlled playback on Android Auto #2059, by @nielsvanvelzen
🔧 Bugfixes
- Fix allowed network types not showing default value #2051, by @nielsvanvelzen
Contributors
v2.7.0-beta.2
More information about the release plan can be found in the Jellyfin for Android v2.7 release plan discussion.
If you appreciate my work, you can show your support with a donation through Buy Me a Coffee or GitHub sponsors. Your support helps me continue improving and growing the app. Thank you!
🐛 Beta information
Beta versions are not guaranteed to work as expected. We encourage users to create detailed bug reports if any problems arise. Read our blog post for more information about our Android beta programs.
🏗️ Enhancements
- Retry playback with fallback on source errors #1932, by @kfarnung
- Add Trickplay view over the seekbar in ExoPlayer #1951, by @tal-sarid
- Use DefaultMediaSourceFactory instead of manually picking factories #2038, by @Maxr1998
- Add multi-select deletion to downloads #2048, by @nielsvanvelzen
- Use native video player by default #2050, by @nielsvanvelzen
🔧 Bugfixes
- Use transaction for queued downloads query #2036, by @nielsvanvelzen
- Fix external subtitle selection #2037, by @Maxr1998
- Fix media session crash when playing audio #2045, by @nielsvanvelzen
- Fix crash when double tapping connect button #2046, by @nielsvanvelzen
- Fix PiP behavior #2049, by @nielsvanvelzen
Contributors
v2.7.0-beta.1
More information about the release plan can be found in the Jellyfin for Android v2.7 release plan discussion.
If you appreciate my work, you can show your support with a donation through Buy Me a Coffee or GitHub sponsors. Your support helps me continue improving and growing the app. Thank you!
🐛 Beta information
Beta versions are not guaranteed to work as expected. We encourage users to create detailed bug reports if any problems arise. Read our blog post for more information about our Android beta programs.
🏗️ Enhancements
- Add long press event for speeding up playing #1020, by @Ank1996
- Load media session artwork from content provider #1558, by @Maxr1998
- Implement DownloadManagement app feature in nativeshell #1627, by @nielsvanvelzen
- Update workflows & issue template config #1630, by @nielsvanvelzen
- Add chapter skipping support to exoplayer client #1646, by @CeruleanRed
- Migrate to media3 #1655, by @nielsvanvelzen
- Update coil dependency from 2.7.0 to 3.2.0 #1669, by @cameocoder
- Use kotlin time over manual math for tick conversions #1680, by @CeruleanRed
- Add button for ask-to-skip media segments #1685, by @CeruleanRed
- Update app build script for Gradle 9 compatibility #1738, by @nielsvanvelzen
- Remove direct dependencies on OkHttp/Okio #1740, by @nielsvanvelzen
- Target SDK 36 (Android 16) #1756, by @nielsvanvelzen
- Update SDK to 1.7.0-beta.4 #1757, by @nielsvanvelzen
- Enable per-app language preferences #1821, by @TheMrMilchmann
- Port video title format from web client #1824, by @rodis120
- Add CodecProfile conditions to DeviceProfileBuilder so video codec profiles are correctly restricted from direct playing (ExoPlayer only) #1889, by @comp500
- Add horizontal seek gesture support with overlay feedback #1895, by @SJJ-dot
- Migrate downloads UI to Compose #1948, by @Maxr1998
- Update app title in fastlane metadata #1955, by @nielsvanvelzen
- Dynamically query device H264 max level for WebView device profile #1956, by @stumpylog
- Add android auto support #1972, by @nielsvanvelzen
- Replace loadUrl("javascript:...") with evaluateJavascript in WebViewFragment #1980, by @jim-daf
- Add audiobook support to Android Auto #1984, by @nielsvanvelzen
- Improve letter navigation in Android Auto #1985, by @nielsvanvelzen
- Add fallback icons to Android Auto items #1986, by @nielsvanvelzen
- Update naming in some places #1991, by @nielsvanvelzen
- Make playlists a top-level item in Android Auto #1993, by @nielsvanvelzen
- Add item expansion to Android Auto to play entire album/playlist/etc #1994, by @nielsvanvelzen
- Rewrite download support #2015, by @nielsvanvelzen
- Use Android TV linter configuration #2016, by @nielsvanvelzen
- Improve audiobook support to Android Auto #2017, by @jordanmichaelrushing
- Download primary image for offline files and store files in database #2019, by @nielsvanvelzen
- Move Android versions to catalog #2023, by @nielsvanvelzen
- Use .tools-versions file for Java version in GitHub workflows #2024, by @nielsvanvelzen
- Sign APK/AAB via Gradle build #2025, by @nielsvanvelzen
- Request download folder if unset #2029, by @nielsvanvelzen
- Show message when there are no downloads #2030, by @nielsvanvelzen
- Reduce API calls when starting playback on Android Auto #2032, by @nielsvanvelzen
- Play downloaded audio in external app #2034, by @nielsvanvelzen
🔧 Bugfixes
- Fix episode autoplay preference having no effect #1479, by @lfranke42
- Fix syntax error in native shell JavaScript #1643, by @nielsvanvelzen
- Fix integrated player control under camera cutout #1648, by @miikaforma
- Revert NativePlayer.seek to use ticks and rename to seekTicks #1694, by @CeruleanRed
- Remove repeated string in AVAILABLE_VIDEO_CODECS #1731, by @gert7
- Fix some languages using wrong code #1778, by @nielsvanvelzen
- Remove duplicate hebrew translations #1779, by @nielsvanvelzen
- Fix logo drawn behind status bar #1818, by @nielsvanvelzen
- fix: + button in edit images in android app #1878, by @jagadam97
- Fix NetworkOnMainThreadExceptions due to usage of Jellyfin SDK on main thread #1888, by @comp500
- Fix Live TV stream end calls not releasing tuner on HDHR devices when used with Jellyfin Server 10.11.x #1892, by @VTRunner
- Remove return from apphost #1900, by @nielsvanvelzen
- Fix title overflow in Player and Item Details screens in Portrait Mode on Mobile Phones #1920, by @DevGitPit
- Fix bluetooth media keys for local video playback #1973, by @mherceg
- Fix Android Auto navigation for artists and audiobooks #1992, by @nielsvanvelzen
- Use artists API for querying artists in Android Auto #1996, by @nielsvanvelzen
- Fix missing translations in SearchLibraryPage #2018, by @nielsvanvelzen
- Fix database migration for existing installs #2027, by @nielsvanvelzen
- Handle null locale when web settings language is not configured #2028, by @BotBlake
- Fix default download method not showing in settings #2033, by @nielsvanvelzen
🔃 Refactoring
- Fix various linter and compiler warnings #1657, by @nielsvanvelzen
- Remove dead code #1981, by @nielsvanvelzen
- Change UserEntity.userId to UUID #1983, by @nielsvanvelzen
💡 Everything else
- Add in app download functionality #1404, by @7ritn
- Add opus to MP4 direct play profile #1463, by @thedreaddpirate
- Prevent destruction of session, so that an app restart can reconnect (chromecast). #1469, by @Tukajo
- Switch to binary-only Gradle distribution #1472, by @3flex
- Fix deprecations in build scripts #1473, by @3flex
- Update to Kotlin 2.0.20 #1474, by @3flex
- Configure Room with Gradle plugin #1475, by @3flex
- Add .kotlin directory to gitignore #1476, by @3flex
- Implement media segment support #1507, by @jakobkukla
- feat(external-player): add mpvkt #1531, by @s12f
- Compile against SDK 35 (Android 15) #1556, by @Maxr1998
- Add individual progress in download notification #1623, by @7ritn
- Add auto migration for Room #1628, by @7ritn
- rework issue forms #1634, by @BotBlake
- Revert "Update dependency com.google.devtools.ksp to v2.2.0-2.0.2" #1699, by @nielsvanvelzen
- Revert "Update Kotlin to v2.2.0" #1700, by @nielsvanvelzen
- Better handle exiting on zero seconds for external players #1773, by @RonDen-DidIt
- Add configurable playback buffer size for integrated player #1946, by @GeiserX
- Remove LeakCanary #1975, by @nielsvanvelzen
- Update pull request template #1976, by @nielsvanvelzen
- Update merge conflict workflow #2020, by @nielsvanvelzen
📈 Dependency updates
v2.6.4
This release fixes compatibility with Jellyfin 10.11.7 which introduced an unfortunate bug that made the app no longer work properly (failed login, invalid reporting etc.). A fix will also be available in Jellyfin 10.11.8.
If you appreciate my work, you can show your support with a donation through Buy Me a Coffee or GitHub sponsors. Your support helps me continue improving and growing the app. Thank you!
Note: This version will not be published to the Google Play store.
🔧 Bugfixes
- Immediately load device information in nativeshell #1943, by @nielsvanvelzen
Contributors
v2.6.3-beta.1
Hello there — it's been a while!
This update brings compatibility with the upcoming Jellyfin 10.11 release and addresses several common issues reported over the past 2 years. A Jellyfin server running version 10.10 or newer is now required.
If you appreciate my work, you can show your support with a donation through GitHub sponsors. Your support helps me continue improving and growing the app. Thank you!
🐛 Beta information
Beta versions are not guaranteed to work as expected. We encourage users to create detailed bug reports if any problems arise. Read our blog post for more information about our Android beta programs.
🏗️ Enhancements
- Migrate jellyfin-sdk-kotlin to v1.6.x #1506, by @jakobkukla
🔧 Bugfixes
- Fix subtitle burn settings for web player #1466, by @paulzzh
- Fix the issue of blurry media images in notifications. #1493, by @peerless2012
- Remove back-interceptor to not break expected behavior #1574, by @newhinton
- Tweak fullscreen and insets handling for native player #1593, by @Maxr1998
- Fix webview closing on unimportant network errors #1629, by @nielsvanvelzen
📈 Dependency updates
- Update org.jellyfin.sdk:jellyfin-core by renovate[bot] v1.6.8 #1606, v1.6.6 #1578, v1.6.5 #1560, v1.6.4 #1444
Contributors
v2.6.3
This update brings compatibility with the upcoming Jellyfin 10.11 release and addresses several common issues reported over the past 2 years. A Jellyfin server running version 10.10 or newer is now required.
This release is identical to the beta version, with no additional changes.
🏗️ Enhancements
- Migrate jellyfin-sdk-kotlin to v1.6.x #1506, by @jakobkukla
🔧 Bugfixes
- Fix subtitle burn settings for web player #1466, by @paulzzh
- Fix the issue of blurry media images in notifications. #1493, by @peerless2012
- Remove back-interceptor to not break expected behavior #1574, by @newhinton
- Tweak fullscreen and insets handling for native player #1593, by @Maxr1998
- Fix webview closing on unimportant network errors #1629, by @nielsvanvelzen
📈 Dependency updates
- Update org.jellyfin.sdk:jellyfin-core by renovate[bot] v1.6.8 #1606, v1.6.6 #1578, v1.6.5 #1560, v1.6.4 #1444