finds.dev← search

// the find

muxinc/media-chrome

★ 2,697 · TypeScript · MIT · updated Jun 2026

Custom elements (web components) for making audio and video player controls that look great in your website or app.

Media Chrome is a set of web components for building custom audio/video player UIs that work with native <video>/<audio> elements and third-party players (YouTube, HLS.js, Vimeo, etc.). It's from the Mux team and targets frontend developers who need full design control over media player controls without rebuilding the underlying playback logic.

- Framework-agnostic by design: being web components means the same markup works in vanilla HTML, React (with provided wrappers), Svelte, Angular, etc. without adapter nonsense.

- Broad player compatibility is genuinely impressive — YouTube, Vimeo, Wistia, HLS.js, Shaka, Video.js, JW Player all documented with examples, not just listed as aspirational.

- Theme system with slots and CSS custom properties is the right abstraction — you can swap entire layouts declaratively and the theme examples (winamp, YouTube clone) show it actually works.

- Actively maintained by a company that dogfoods it on mux.com and ted.com, with a proper CHANGELOG, migration guides for v0→v4, and React hooks for state management if you need to go deeper than HTML.

- Being a Mux product means there's an inherent risk of priorities shifting if it stops serving their commercial interests; the library is MIT licensed but core contributors are all Mux employees.

- Shadow DOM styling limitations will bite you — certain customizations require the theme slot system or CSS parts, and developers used to just writing CSS will hit walls when trying to style internals they can't see.

- The React wrapper story is a second-class citizen: you get auto-generated wrappers, but the hooks API for custom UI (e.g. Material UI example) requires understanding an internal state store model that isn't well documented.

- No built-in playlist or multi-source management — the media-playlist example in vanilla demos is ad hoc HTML with no dedicated component, so anything beyond single-asset playback requires custom wiring.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →