Open-source project
IAmParadox27/jellyfin-plugin-home-sections avatar
IAmParadox27/jellyfin-plugin-home-sections

Home Screen Sections: a Jellyfin plugin for a Netflix-style home row

Add server provided home sections to your Jellyfin instance

535 stars72 forksC#GPL-3.0

At a glance

What is it?
Home Screen Sections is a Jellyfin plugin that replaces the web client's home screen with server-provided rows such as Because You Watched, Watch Again, Hidden Gems and per-user Studio and Decade rows. It replaces the vanilla screen rather than adding to it, and it depends on Jellyseerr and arr for two of its rows.
Who is it for?
Adopt Home Screen Sections if you run Jellyfin for a household or a small group and want the home screen to react to what people actually watch, since the per-user rows are the point and each viewer sees a different set. Do not adopt it if you want to keep the standard Jellyfin home screen, because the plugin replaces it wholesale rather than adding to it.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 11 days ago.
What is it written in?
Mainly C#, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 20, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A replacement home screen, not an addition to it

Home Screen Sections, abbreviated HSS in the README, is a Jellyfin plugin which allows users to update their web client's home screen to be a bit more dynamic and more "Netflixy".

The architecture decision that shapes everything else is stated in the same breath: using HSS has not been integrated to work side by side with the vanilla home screen and instead wholesale replaces it.

That is the constraint to understand before anything else. You are not adding rows to the home screen; you are swapping the home screen for a different one. The plugin then has to reimplement the rows that Jellyfin ships by default, which is why the section list starts with the vanilla ones.

The reimplemented vanilla sections are My Media, the same as vanilla Jellyfin. Continue Watching, the same as vanilla Jellyfin. Next Up, the same as vanilla Jellyfin. Recently Added Media, mostly the same as vanilla Jellyfin, with the current exception that all libraries appear in one section rather than unique ones per library, and the README says that vanilla behaviour is being worked on and will soon be supported. And Live TV, mostly the same as vanilla, with a caveat that its current state is untested since updating to 10.10.3 so there may be issues.

That last point is worth holding on to. The Live TV row is the one section whose fidelity the author explicitly flags as unverified, and the Recently Added Media row has a known difference from vanilla. So installing this plugin is not free even for the rows it claims to reproduce identically.

The primary language is C#, the licence is GPL-3.0, the default branch is main, and the recent releases are 3.0.3.0 from 2026-10-12, 3.0.2.0 from 2026-09-15 and 3.0.0.0 from 2026-09-08. The last push was on 2026-10-12, so the work is current.

The repository layout is minimal for a Jellyfin plugin: a src/ directory holding the plugin code, a screenshots/ directory, and a .gitmodules file, which points to the dependency plugins the README says are required.

The new rows and the per-user weighting

The rows that are new for this plugin are, in the README's word, most likely the reason you would use this plugin in the first place.

Latest Movies and TV Shows are movies and shows that have recently aired or released rather than when they were added to your library. That is a meaningful difference for a media server, because a library often gets backfilled with old content and the recently added row then becomes a wall of things you already have.

Because You Watched is very similar to Netflix's section of the same name. Watch Again shows movies in a collection and TV shows that have been watched to their completion, and provides the user an option to watch the collection again. The listed entry will be the first movie to be released in that collection, done by Premiere Date, or the first episode in the series.

Then the rows that are weighted by each user's own history, and these are the ones that make the home screen differ per person.

Genre selects a weighted random set of genres based on the user's viewing history and displays movies within that genre. Studio and Network shows more content from a studio or network the user watches a lot of, with a primary studio or network per user, and each user sees a different one based on their own watch history. Decade is a Best of the 1990s style row, weighted towards the decades the user actually watches, and each user sees a different decade.

Starring shows other movies and shows featuring an actor who appears in the user's library, and each user sees a different actor, picked randomly each load. Directed By does the same for directors. Hidden Gems is highly rated movies and shows at 7.5 or above that the user hasn't watched yet, with a random subset picked each time it loads.

Finish These Collections is the one with an explicit ordering rule: box sets and collections the user has started but not finished, ordered by how close they are to completion, closest first.

The weighting is what separates this from a static shelf of favourites. A row that is the same for everyone on the server is just another library view. A row that is computed from one person's watch history is a recommendation, and two people sharing a household get genuinely different home screens from the same server data.

The randomness in Starring and Hidden Gems also means the home screen is not stable between reloads, which is the intended behaviour and also means a screenshot of the home screen is not reproducible.

The Jellyseerr and arr integrations, and their external dependencies

Three groups of sections depend on software outside Jellyfin, and that dependency is the main operational consideration for anyone installing this.

The Discover sections are integrated with Jellyseerr to bring the Discover Movies, Discover Shows and Trending sections of Jellyseerr into Jellyfin. They will only show media that isn't available in your library and have a direct request button right on the card for convenient requesting. My Requests is another Jellyseerr integrated section that allows the user to see all their requested media in a single row.

The Upcoming sections are integrated into the arr applications to bring their calendars in as sections in Jellyfin. The README writes this as integrated into the *arr, which is the usual shorthand for the Sonarr and Radarr family, and the phrase calendars matches what those applications expose.

So the plugin is not self-contained. Jellyseerr has to be running with the right configuration for the request button to work, and at least one arr application has to be running for the Upcoming rows to have anything to show. If those services are down, those rows are empty or broken while everything else keeps working.

The prerequisites section of the README is explicit about the version floor. This plugin is based on at least Jellyfin Version 10.10.7, with 10.11.x also officially supported. And the following plugins are required to also be installed, following their installation guides.

That second requirement is what the.gitmodules file in the repository is for. A Jellyfin plugin that depends on other Jellyfin plugins ships its dependencies as submodules, so the plugin manager can pull them in. The install instructions are truncated in the README as given, so the exact list of required companion plugins is not fully spelled out there, which is worth checking in the plugin's own repository before you install.

The Jellyseerr integration is the more interesting dependency of the two, because Adding HSS to a server that does not already run Jellyseerr means standing up a second application to get three rows and a request button.

Installing it, and what to check first

The installation section of the README is where the material stops, so the documented steps are the prerequisites and the plugin manager route rather than a full walkthrough.

The order of operations that the README does describe is: install the required companion plugins first, following their own installation guides, then add Home Screen Sections itself. There is no separate server to configure and no database to migrate, because the plugin is a C# assembly loaded into the Jellyfin process, and the repository tree confirms that shape with only a src/ directory, the screenshots, and the submodules.

The two things to verify before you install are the version and the dependencies.

On the version, the plugin is based on at least Jellyfin 10.10.7 with 10.11.x officially supported. Jellyfin plugins are compiled against a specific server API version, and a plugin built for an older server generally refuses to load on a newer one rather than degrading. If your server is on 10.9 or older, this plugin is not for you.

On the dependencies, the required companion plugins have to be installed first. Order matters here for a structural reason rather than a cosmetic one: if the companion plugin's own configuration or API is what Home Screen Sections calls into, then a missing companion is not a degraded row but a load failure.

After installing, the thing to look at is the home screen itself, and specifically what each user sees. The per-user rows are the reason to install this, and if a section renders as empty for one account and populated for another, the likely cause is that the account has little watch history rather than a bug. The Genre, Studio, Decade, Starring and Directed By rows are all computed from viewing history, and a new account with no history has nothing to weight against.

The Live TV row is the one to check carefully, because the README flags its current state as untested since updating to 10.10.3 and warns there may be issues. The Recently Added Media row is the other, since all libraries currently appear in one section rather than one per library.

For the requests and upcoming rows, the check is against the external services: Jellyseerr has to be reachable and configured with the correct API details, and the arr applications need to be running for their calendars to appear.

Where Home Screen Sections is the wrong tool

There are three limits, and the first one is the replacement model.

The first is that you cannot keep the vanilla home screen. The plugin has not been integrated to work side by side with it and instead wholesale replaces it, and the vanilla rows are reimplemented inside the plugin as a convenience. That means every bug in the plugin's reimplementation of Continue Watching or Next Up is a bug in a row you used to get from Jellyfin itself. You are trading upstream maintenance for downstream maintenance, and the upstream in this case is the server you already depend on.

The second is that the section set is a personal selection. The README says the sections that have been created are ones the author himself uses for his own instance, and invites feature requests on a separate dashboard or a pull request. That is honest, and it also means the coverage is one person's taste. The set is what the author chose, so a user who wants more or fewer rows has to request the change or fork it.

The third is the external dependency again, from a different angle. A Jellyfin server that runs on its own, with no other services, gets a plugin that adds rows that are partly empty because Jellyseerr and arr are not there. And the two integrations that do add the most value, request buttons and upcoming episodes, are the two that add the most deployment weight.

The honest alternatives are worth separating by what you want.

If you want the recommendation rows without replacing the home screen, the Jellyfin web client's own home screen already has some of this behaviour, and the standard fix for the rest is a smart playlist or a collection in Jellyfin's own tool, both of which are server-side and need no plugin at all. That is less dynamic per user, but it is stable across server upgrades and it does not add a plugin to maintain.

If you want per-user dynamic rows and accept the replacement, the ecosystem around Jellyfin has several home-screen customisation plugins, and the difference between them is which rows they compute and whether they integrate with arr and Jellyseerr. The comparison that matters is the section list and the dependency set, not the code.

If you want the Netflix-style experience with the full recommendation engine behind it, Jellyseerr is the service designed for request-driven discovery, and running it is the alternative to bolting rows onto Jellyfin's client. The difference in approach is where the recommendation logic lives: HSS computes rows inside the Jellyfin server from its own database, while a dedicated service maintains its own database and exposes the results, which is more work to set up but keeps the recommendation model independent of your media server's plugin ecosystem.

The maintainer's own note about issue tracking

One part of the README is worth reading even if you never install the plugin, because it explains how the project is run.

In a development update dated 20/08/2025, the author explains that with more and more people using the plugins and reporting issues, the work of managing them is being split. For feature requests there is a separate dashboard at features.iamparadox.dev, where you can sign in with GitHub and make a feature request. For bugs, the instruction is to report them on the relevant GitHub repository, where they will be added to a project board once the author has seen them. The author also mentions creating a system that will monitor a particular view for new issues and send a notification, in order to keep more up to date and act faster.

The next paragraph is the more useful part for anyone assessing the project's health. The author describes being momentum based in his personal life coding, so there are often times when these projects may appear dormant, and states an assurance that he does not plan to let them go stale for a long time, but that there might be times where there isn't an update or response for a couple of weeks. The goal is stated as keeping that better than it has been.

That is an unusually candid statement of the maintenance model for a plugin ecosystem, and it is directly relevant to a decision about adopting one. A single maintainer who codes in bursts means release timing is unpredictable, and the fix for a bug in the Live TV row arrives when the author happens to be working, not on a schedule.

It also sets the expectation about versions. The author says that with all new releases to Jellyfin he will be updating as soon as possible, that he has already made a start on 10.11.0, and will release an update to the plugins hopefully not long after that version is officially released.

The release history is consistent with that. The three recent versions, 3.0.0.0 on 2026-09-08, 3.0.2.0 on 2026-09-15 and 3.0.3.0 on 2026-10-12, cluster in a period of about five weeks, which looks like the burst following a server release rather than a steady cadence.

Editorial conclusion

Adopt Home Screen Sections if you run Jellyfin for a household or a small group and want the home screen to react to what people actually watch, since the per-user rows are the point and each viewer sees a different set. Do not adopt it if you want to keep the standard Jellyfin home screen, because the plugin replaces it wholesale rather than adding to it. Before you install, check the Jellyfin version, since the plugin is based on at least version 10.10.7 with 10.11.x supported, and note the last push was on 2026-10-12 with release 3.0.3.0.

Frequently asked questions

What does the Home Screen Sections Jellyfin plugin do?

It replaces the Jellyfin web client home screen with server-provided rows that are more dynamic, including Because You Watched, Watch Again, Latest Movies and TV Shows, Hidden Gems and per-user Genre, Studio, Decade, Starring and Directed By rows, plus Jellyseerr and arr integrations.

Does Home Screen Sections replace the vanilla Jellyfin home screen?

Yes. The README states that using the plugin has not been integrated to work side by side with the vanilla home screen and instead wholesale replaces it, which is why the standard rows such as My Media, Continue Watching and Next Up are reimplemented inside the plugin.

What are the prerequisites for the Home Screen Sections plugin?

The plugin is based on at least Jellyfin version 10.10.7, with 10.11.x also officially supported, and the required companion plugins must be installed first following their own installation guides. The Discover, My Requests and Upcoming rows additionally need Jellyseerr and the arr applications running.

Which rows in Home Screen Sections depend on Jellyseerr and arr?

The Discover Movies, Discover Shows and Trending sections, along with My Requests, are integrated with Jellyseerr and show only media not already in your library, with a request button on the card. The Upcoming sections are integrated into the arr applications to bring their calendars in as sections.

How do I report a bug or request a feature for Home Screen Sections?

Feature requests go to the dashboard at features.iamparadox.dev, where you sign in with GitHub. Bugs are reported on the relevant GitHub repository and added to the author's project board once seen. The author also notes that work is done in bursts, so there may be periods of a couple of weeks without an update or response.

Official sources

  1. IAmParadox27/jellyfin-plugin-home-sections on GitHub
  2. Issues
  3. License: GPL-3.0
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/iamparadox27-jellyfin-plugin-home-sections.svg)](https://hysenlabs.com/projects/iamparadox27-jellyfin-plugin-home-sections)

Was this useful?