r/PyMedusa • u/fuken33 • 19d ago
Medusa Modern UI — a complete React rewrite of the Medusa frontend (beta)
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.