Jellyfin 12.0 Drops the '10.' and Finally Treats Books Seriously
Jellyfin 12.0 rewrites playlist storage for speed, adds episode alternate versions, and moves book/comic support into the server core. Major version bump means a required migration and full rescan.

Jellyfin 12.0 is out, and it's a bigger deal than the version number suggests. The team dropped the leading "10." from the versioning scheme, so what would have been 10.12.0 is now simply 12.0. The reason is straightforward: 10.11.0 was a major release that rewrote the library database, but the version number made it look like a minor update. Now the first number moves when the release is big.
If you maintain anything that parses Jellyfin version strings—a client, a monitoring check, a deployment script, a container tag pin—this is the thing to look at before upgrading.
Database Tuning: Playlists and Collections Get Faster
The headline performance work is in how playlists and collections are stored. Previously, everything in a playlist was kept as one big list inside the playlist itself. The database couldn't look into that list, so getting an item count, calculating watch progress, or showing a single page all required loading the entire playlist. Editing was equally painful—adding or removing one item meant writing the whole list back out.
In 12.0, every item in a playlist is its own row. The database can count rows, return one page, and add or remove a single item without touching the rest. Collections and boxsets get the same fix. This should be a big improvement on large playlists.
Other database improvements include:
- Deleting a large number of items at once no longer fails partway through.
- Continue Watching, Next Up, rewatching, Latest Media for music, artist lookups, and watched counts on folders should be faster.
- Heavy database maintenance no longer runs during a library scan, so the two stop competing for resources.
Most of this shows up as pages that used to freeze no longer freezing. Note that this work went into how Jellyfin reads your library, not into the library scanner itself. The scanner might be a little quicker as a side effect, but that wasn't the goal.
Episode Alternate Versions
Alternate versions have been a movies-only feature since they were introduced. In 12.0, they work for episodes too. A series with a broadcast cut and an extended cut, or a 1080p and a 4K copy of the same episode, can now be grouped the way movies always could. Resume data follows the version you were actually watching.
This feature is also the reason for the required post-upgrade scan: making versions work for episodes meant fixing how version links are stored, and automatically resolved versions have to be rebuilt from the files on disk.
Books and Comics Get First-Class Support
Books have often taken a backseat in Jellyfin, and this release starts to change that. Most of what the Bookshelf plugin used to do has moved into the server itself.
On the server:
- 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; external covers work for audiobook files.
- Name, index, year, and series are read from book filenames; volume and chapter numbers are picked up from comic filenames when present.
- Page counts are extracted from comic archives and PDFs.
- Chapters are extracted from audiobooks.
- Bookshelf has been split into separate GoogleBooks and ComicVine providers, and a new OpenLibrary plugin provides metadata and images.
- ISBN external IDs and links are supported.
In the web client:
- A Modern book library layout with view types and paging, plus Authors, Collections, and Folders tabs.
- Books show information about their authors, and authors show their books and audiobooks.
- The reading interface has been redesigned and standardized across all book types, with unified fullscreen behavior and swipe navigation for PDFs.
- Progress indicators work again for supported eBooks, sorting by index number and release date is available, and EPUB font size selection has been improved.
- Background audiobook playback works on iOS devices.
The Bookshelf plugin is deprecated—its features are merged into the server or extracted into the ComicVine and GoogleBooks providers.
Upgrade Notes: Read Before You Leap
This release changes the database schema and actively rewrites data on first boot. A backup is the only way back to your previous version. Key points:
- You must be running 10.10.7 or any 10.11.x release before upgrading to 12.0.
- Usernames are now case insensitive, so two accounts can't have names that differ only by capitalization. If you have such users, the migration will fail.
- A full library scan is required after upgrading. Automatically grouped alternate versions are cleared during the upgrade and will look missing until you scan.
- The first scan will take significantly longer than normal, and some movies may appear as newly added. This is expected.
- Remove third-party plugins before upgrading—10.11 plugins won't load on 12.0.
- Very old third-party clients will stop working. Support for legacy
/emby/and/mediabrowser/addresses has been removed, and the deprecated sign-in method is disabled.
If you'd rather run the migration deliberately, the server now accepts --mode MigrateSystem, which performs the upgrade and exits without starting the rest of Jellyfin.
The leading '10.' never changed and never told anyone anything, so all it did was push the number that actually mattered into the middle position and make 'major' releases look minor.
Discussion
0 Comments
Be the first to start the discussion.