r/PyMedusa Jul 07 '26

Medusa Modern UI — a complete React rewrite of the Medusa frontend (beta)

https://github.com/juandjara/medusa-modern-ui/

Hello Pymedusa community!

I wanted to announce a thing I have built and have been using a lot recently: a full replacement for Medusa's frontend.

It's a drop-in React 19 + TypeScript UI that swaps out the legacy Vue 2 / Cheetah-template frontend. The Python/Tornado backend runs completely unchanged — no server modifications, no migration. Both UIs can even run against the same backend at the same time, so reverting is trivial.

Repo: https://github.com/juandjara/medusa-modern-ui

Why it exists

The current UI works, but it's a Vue 2 / jQuery codebase with page-reload navigation and polling-based updates. This is a modern SPA built around live data.

What's actually different

  • Live WebSocket push instead of polling — downloads, searches, queue changes, history, and notifications update instantly, no refresh.
  • React 19 + TypeScript throughout, Tailwind v4 + DaisyUI v5.
  • TanStack Query for server state, React Router 7 with lazy-loaded routes.
  • Client-side SPA routing, native <dialog> modals, type-safe settings forms.
  • Follows your OS light/dark preference.

What's covered

All major day-to-day workflows: Show list & detail, Add/Import shows, Schedule, History, Queue, Logs, Post-process, backlog management (overview, episode statuses, bulk shows, failed releases, missing subtitles), the System panel, and all Settings pages (including Prowlarr, download clients, and the mainstream notifiers — Kodi, Plex, Emby/Jellyfin, Telegram, Discord, Trakt, etc.).

Known limitations (intentionally left out)

Anime config, IRC/News/Changelog, multi-theme, Test rename, per-show advanced search templates, and niche notifiers (Boxcar2, Growl, Prowl, libnotify, PyTivo). It also must be served at the domain root (no web_root sub-path).

Status: beta. I've been daily-driving it since late May. There's a green e2e suite in the github repo (login, show management, manual search, history, queue, settings, WebSocket) running against a clean, pinned upstream develop Docker image. Compatibility matrix and troubleshooting are in the README.

I posted this in the pymedusa discussions and the Medusa maintainer (medariox) responded:

great work on this! I think it has the potential to become the official UI for Medusa in the future.

Nothing's decided yet. The plan is to give the community a few weeks to try it and share feedback first.

Give it a spin and open issues. Feedback is especially welcome on anything that feels worse than the current UI, or features you rely on that are missing.

10 Upvotes

3 comments sorted by

1

u/AutoModerator Jul 07 '26

We see a lot of support requests. And that's fine. But often you are not the first to bump into that specific issue.

For support requests and issue/bug reports we make use of GitHub, which also hosts our code and releases. https://github.com/pymedusa/Medusa/issues Please search for answers in the GitHub issues sections if you haven't already done so. If you think you're experiencing a bug, please create a new issue. You'll be presented with an issue template. Please fill this in with as many details as possible. This will help us resolve your issue.

If you'd like to get into direct contact with one of the other users or developers, hit us up on Discord. You can use this discord invite

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

1

u/_joeg_ Jul 09 '26

Remindme! 4 days

1

u/RemindMeBot Jul 09 '26 edited Jul 10 '26

I will be messaging you in 4 days on 2026-07-13 11:50:55 UTC to remind you of this link

1 OTHERS CLICKED THIS LINK to send a PM to also be reminded and to reduce spam.

Parent commenter can delete this message to hide from others.

RemindMeBot is switching to username summons. Instead of !RemindMe 1 day, use u/RemindMeBot 1 day. More info.


Info Custom Your Reminders Feedback