Case Studies

Plex.tv

A complex React frontend development for Plex's webbased media library and player, helping users browse, manage, and play personal video, audio, and image collections across devices.

Screenshot of the Plex.tv website; part of John Kavanagh's selected project work.

In Brief

Plex is a clientserver media streaming platform which gives users access to their personal media collections across devices. Its web application needed to make large libraries of video, audio, and image content easier to browse, manage, and play through the browser, bringing the web experience closer to Plex's native applications.

My Role

As part of Plex Labs, I worked on the React front end for Plex's crossplatform web application. My work focused on improving the interface and user experience around media library browsing, grid interactions, metadatarich detail screens, and the browserbased player experience.

Technologies

plex.tv
  1. Bootstrap
  2. HTML5 & Less
  3. React & ES8
  4. webpack
Illustration of a band on stage with 'The Plex Pistols' banner behind them. A play on the Sex Pistols.

In Detail

Historically, Plex's web interface had been one of the weaker parts of the product. Users could access their media through native apps, but browserbased access was constrained by web platform capabilities and the complexity of playing personal media collections reliably across devices.

The web app had originally been built ten years ago with Handlebars and Backbone. As browser capabilities improved, the distributed Plex development team began introducing React into the front end, starting with targeted interface enhancements before moving towards a broader rebuild.

Early work included animation, microinteractions, and mediagrid zoom features. The platform was later reworked more substantially, removing Handlebars and introducing larger Reactled pieces, including a new media player capable of handling both audio and video from a single component.

Library Screen

Plex libraries can easily contain thousands of items, so browsing and organisation had to stay simple. The library grid used userdefined categories, filtering, layout controls, zoom level controls, and itemcount preferences to help users navigate large media collections without overwhelming the interface.

Screenshot of the Plex web application Movie library interface, desktop screen size.Screenshot of the Plex web application TV library interface, desktop screen size.

Details Screen

Plex's detail screens rely on metadata agents that enrich scanned media with information from online sources such as The Movie Database. Posters, cover art, plot summaries, background imagery, and other metadata are then used across the library grid and detail views to create a richer browsing experience.

Screenshot of the Plex web application The Simpsons Episodes list interface, desktop screen size.Screenshot of the Plex web application Onward movie details interface, desktop screen size.

Media Player

A scratchbuilt media player was central to expanding browserbased support across devices. The work became more practical as HTML5 media support and standardised formats improved, allowing the server to transcode media specifically for the web app with some browser detection.

The player supported both audio and video and aimed to provide an experience close to a native player. Playback state and user preferences could be stored back on the server, allowing users to resume media across devices, sessions, and different versions of the Plex app.

Screenshot of the Plex web application video player, showing the title screen from Quantum of Solace, desktop screen size.Screenshot of the Plex web application video player, showing part of the car chase from the beginning of Quantum of Solace, desktop screen size.

Relevant Services

Have a similar
platform challenge?

I help teams make difficult React, Next.js, migration, performance, and technical SEO work clearer, safer, and easier to deliver.