Jellyfin 12.0
Hacker News

Jellyfin 12.0

Jellyfin 12.0

TL;DR

IT IS VERY IMPORTANT THAT YOU READ THIS SECTION BEFORE UPGRADING TO JELLYFIN 12.0!
Failure to do so may cause issues. Always feel free to ask for help in our chat if you are unclear or run into trouble.

This release changes the database schema and actively rewrites data on first boot, so a backup is the only way back to your previous version.

As always for major upgrades, ensure you STOP Jellyfin and take a FULL MANUAL BACKUP OF YOUR DATA AND CONFIG DIRECTORIES before upgrading.

If you are on anything older than 10.10.7, upgrade to 10.10.7 first, then upgrade to 12.0.

Check your usernames before upgrading. Usernames are now case insensitive, so two accounts can't have names that only differ by capitalization. If you have users that match this pattern, the database migration will fail.

A full library scan is REQUIRED after upgrading. As part of fixing how alternate versions are stored, versions that Jellyfin grouped automatically, not ones you merged yourself, are cleared during the upgrade. Until you run the scan, those versions will look like they are missing. The first scan after upgrading will take significantly longer than normal, and some movies may appear as newly added. This is expected. Jellyfin now checks every item in your library against the files on disk to clear out leftovers from previous versions, and anything that was previously filed incorrectly gets corrected as it goes. Do not stop the server while migrations are running.

Once installed, please ensure you hard refresh (e.g., Ctrl+Shift+R or similar) and/or clear your web cache for your Jellyfin instance if you notice any UX anomalies. Bad cached assets are the #1 cause of such issues.

Remove any third-party plugins before upgrading. Plugins built for 10.11 will not load on 12.0 and need updated builds from their authors, so give them time to catch up before adding them back. Official plugins have been updated for 12.0 support.

Very old third-party clients will stop working. Support for the legacy /emby/ and /mediabrowser/ addresses has been removed, and the deprecated way of signing in is now disabled, including on existing servers. Clients that have not seen an update in years are the ones at risk here.

This release contains security fixes, so we recommend upgrading rather than staying on an older release once you are ready.


Prerequisites

You must be running Jellyfin 10.10.7 or any 10.11.x release before upgrading to 12.0.
Upgrading directly from 10.11.x is fully supported and no intermediate step is needed. If you are on anything older than 10.10.7, upgrade to 10.10.7 first, then upgrade to 12.0.


Post-Upgrade Steps

After installing Jellyfin 12.0, perform the following:

  • Run a full library scan - this is required to resolve version grouping differences and correct any orphaned entries. The scan may take significantly longer than a normal operation and some movies may appear newly added until the process completes.
  • Hard refresh your web interface (e.g., Ctrl+Shift+R) and/or clear your web cache if you notice any UX anomalies. Bad cached assets are the #1 cause of such issues.
  • Ensure the server stays running during migrations; do not stop the service while the system is processing updates.

Key Improvements

Database Schema and Storage

One of the most significant changes is how playlists and collections are stored. Previously, everything in a playlist was kept as one big list inside the playlist itself, and the database could not query that list efficiently. Now every item in a playlist is its own row, allowing the database to count rows, return paginated results, and add or remove a single item without affecting the rest of the collection.

This improvement extends to collections and boxsets, which receive the same storage fix.

Additional benefits include:

  • Deleting a large number of items at once no longer fails partway through.
  • Faster operations for Continue Watching, Next Up, rewatching, Latest Media for music, artist lookups, and watched counts on folders.
  • Heavy database maintenance no longer competes with the library scan, preventing server-freeze issues.

Multi-Format Support

Video

Jellyfin 12.0 brings robust support for books and comics, moving functionality from the Bookshelf plugin to the server itself:

  • Book metadata is read directly from OPF and ComicInfo files, or from ComicBookInfo comments, with no plugin required.
  • Posters are generated for EPUBs and every supported comic archive format, and external covers work for audiobook files.
  • Name, index, year, and series are read from book filenames, while volume and chapter numbers are extracted from comic filenames when present.
  • Page counts are extracted from comic archives and PDFs, and chapters are extracted from audiobooks.
  • The Bookshelf plugin has been deprecated; its features have been merged into the server or extracted into the ComicVine and GoogleBooks providers. ISBN external IDs and links are now supported.

In the web client, a Modern book library layout is now the default, replacing the previously experimental layout. Available tabs include Authors, Collections, and Folders. Reading interfaces have been redesigned with unified fullscreen behavior and swipe navigation for PDFs. Progress indicators work again for supported eBooks, and font size selection for EPUBs has been improved. Background audiobook playback now works on iOS devices.

Audio and Other Formats

  • Music now integrates with ListenBrainz as a built-in source, enabling similar-artist suggestions based on real listening data rather than tags alone. Plugin authors can add their own results alongside Jellyfin's native search.
  • Televisions continue using the TV layout, which remains on the legacy app. The layout has received polish, unifying all themes (Dark, Light, WMC, Blue Radiance, Apple TV, and Purple Haze) under a shared CSS variable base.

Security Fixes

This release includes numerous security improvements on both the server and web client:

  • Closed off attack vectors that could allow crafted requests to access files outside designated directories.
  • Prevented the setup wizard from being re-run on a misconfigured server without proper sign-in.
  • Rejected plugin packages with unsafe names.
  • Applied stricter parental control enforcement across more areas.
  • Fixed cross-site scripting vulnerabilities in the web client.

New Features and Enhancements

Web Client

  • "Still watching" prompts appear throughout the interface.
  • Chapter names display in the preview bubble as you drag along the seek bar, and the playback info overlay is more compact yet detailed.
  • Folders can be marked as played.
  • An improved Upcoming view, plus Play All and Shuffle buttons on series libraries.
  • The screensaver is suppressed while viewing photos or reading, with a configurable time setting in the Modern layout.
  • Crew members with multiple roles are merged into a single card, and TV show creators appear on item details.
  • Configurable delays for photo slideshows.
  • Enhanced caching in the browser for faster revisits and sharper artwork rendering on high-resolution displays.
  • Game controller navigation fixes, keyboard shortcuts that work on non-Latin keyboard layouts, and support for rewind and fast-forward buttons on remotes.

Administrator Experience

  • The log viewer can follow logs live instead of requiring manual refreshes.
  • Sorting and filtering on the Activity page are now available.
  • The source of similar-item and recommendation data is configurable per library.
  • The database file can be kept in a location other than the default.
  • Disabled plugins are no longer re-enabled on restart.
  • Backups no longer fail outright when they encounter a corrupt record; instead, a warning is shown before restoring or starting a backup while a library scan is running.
Read on Hacker News ↗ ← Back to News

Comments

No comments yet. Start the discussion.