Published on October 30, 2025 (1 day ago)

Video.js gets a reboot: Introducing Video.js v10

Steve Heffernan
By Steve Heffernan7 min readProduct

Fifteen years ago, I built Video.js to help bring video from Flash to the open web. Since 2010, it's been the default HTML5 video player — used on millions of websites including Amazon, LinkedIn, Instagram, and Dropbox. We know it’s used billions of times every month, though as an open source project, we'll never know how high the actual number goes.

Video.js has had an incredible run. But it's also 15 years old, and some early architectural decisions are impossible to escape without doing something drastic. So instead of letting the project stagnate, I’m bringing my attention back to it with Mux as the new corporate steward, and together with the Video.js community we’re rebuilding it for the next 15 years.

Today, I'm excited to give you a first look at Video.js v10 — a complete ground-up rewrite of the player for the modern web.

LinkWhy now?

Web players need a reboot. Today's players often weigh in at close to a megabyte. They try to support too many things out of the box, creating monolithic cores that can't simultaneously hit the performance goals of short-form video and the feature requirements of complex use cases. They rarely fit naturally into your development stack — instead of being part of your app, they're an app sitting awkwardly inside your app. And when you want to customize them, you're often dropped off a cliff from a simple embed code into some proprietary UI framework.

The most widely used web player tech today was built by people like me, 10-15 years ago, and none of us designed players with any idea of where JavaScript would be today or how many new problems the video industry would create for us. It's time to rebuild with modern tools and modern thinking.

LinkWhat makes v10 different

LinkSmall and composable

We've ripped apart the monolithic architecture. In v10, there's no giant core where everything comes along for the ride. The UI is separated from the underlying media renderer. Every component is independent and works together through open API contracts. We've structured the project for modern JavaScript bundlers to support tree-shaking and intelligent code splitting.

The result? You can start with a small player and only add what you need. We're seeing bundle size reductions of 70-80% for minimal implementations.

We're also building a new streaming engine framework focused on composable, functional units rather than stateful controllers. Early prototypes show we can build specialized engines that do exactly what you need — and nothing more. For example, we built a background video player using this approach that came in at just 9KB (1% the size of Mux’s full-featured player) while still supporting adaptive streaming through Media Source Extensions.

LinkBuilt for your stack

Video.js v10 fits like a glove in your development stack. We've taken cues from projects like BaseUI, shadcn/ui, and Radix — building everything on unstyled UI primitives. Then we've wrapped those with framework-specific components to provide idiomatic experiences in React and HTML, with our sights on Svelte, Vue, and eventually React Native.

The magic behind how we’ll maintain such a significant footprint is that we've built a custom compiler that translates skins from a lingua franca (React + Tailwind) into any combination of JavaScript and CSS frameworks. If you customize a skin in React, all the components will be in React and whichever CSS framework you use. No more stepping outside your app's frontend stack to customize your player.

LinkBeautiful by default

The current Video.js default skin is... okay. This time, we're investing heavily in making the default skin genuinely beautiful — not just visually, but in the interactions, transitions, icons, and animations. We'll ship two versions initially: one with a rich aesthetic design, and a minimal one that makes it easy to override base styles without starting from scratch.

Sam Potts, creator of Plyr (a player beloved for its attention to detail and beautiful aesthetic), has joined the Video.js project as the designer behind our new skins. Plyr itself is used billions of times every month because people love how it looks and feels.

LinkFree, open source, and community-led

This remains a community-driven open source project. Gary Katsevman from NBC, Garrett Singer from Netflix, and many other long-time Video.js contributors continue to help drive the community forward.

On the company front, my company Mux is stepping up as the new Corporate Shepherd for Video.js — contributing learnings from Media Chrome and Mux Player and putting all our player development efforts behind Video.js. We're partnering with Qualabs and Cast Labs, who are supporting development on the new streaming engine framework. A special thank you goes out to Brightcove, who has been the corporate shepherd for Video.js up to this point and has kept it going for many years.

Joining the Video.js crew are:

  • Wes Luyten, who's been leading the Media Chrome project
  • Rahim Alwar, creator of Vidstack, bringing his keen eye for developer experience
  • Sam Potts, creator of Plyr, bringing his eye for aesthetic and interaction detail
  • Christian Pillsbury, leading the new streaming engine framework

LinkWhat's coming

We're taking a phased approach to launch:

October 30, 2025 – Technology Preview (announced at Demuxed)

First public look at the rebuild. Limited feature set, not production-ready, but we want your feedback.

February 2026 – Beta Release

Wider testing with core feature parity: basic controls, adaptive streaming support. Close to stable but API changes still possible.

Mid 2026 – GA Release

Stable release with core feature parity to v8 fundamentals, plus feature parity with Media Chrome, Vidstack, Plyr, and Mux Player. Time to start full migration projects.

End 2026 – Full Feature Parity

Feature parity with Video.js "contrib" plugins like ads and analytics. Further community plugin migration depends on contributions—and we'd love your help.

LinkThe future of players

The new meaning of "player" isn't monolithic — it's a library of composable units. This makes it possible to build not just one player, but many custom players for all the different use cases we're trying to support. It can be both pretty out of the box and deeply customizable in a way that feels natural in your codebase.

We're excited to reboot web players for the modern era. Check out the technology preview at v10.videojs.org, kick the tires, and let us know what you think. This is just the beginning of what we can build together.


Want to get involved? Visit the repo, try the tech preview, and share your feedback. Video.js has always been built by the community, and v10 is no exception.

Written By

Steve Heffernan

Steve Heffernan – Co-founder and Product Architect

Creator of Video.js and co-founder of Zencoder. Semi-professional drummer and apparently drove a Civic lowered more than Mux's live latency in high school.

Leave your wallet where it is

No credit card required to get started.