Build fully accessible and customizable video players with React hooks
B

Build fully accessible and customizable video players with React hooks

Build fully accessible and customizable video players with React hooks

UI
3,567 stars
N/A forks
N/A contributors

README

Project documentation from GitHub

Build Accessible Video Players in React Without the Headache

Let's be honest, building a good video player from scratch is one of those tasks that seems simple until you're ten hours deep into keyboard navigation, ARIA attributes, and browser media API inconsistencies. You need it to be accessible, customizable, and performant, but rolling your own is a time sink. That's where Vidstack Player comes in.

It's a new open-source library that gives you a set of React hooks and components to build fully-featured, accessible video players. It handles the complex foundation so you can focus on the UI and UX that matters for your project.

What It Does

Vidstack Player provides a headless foundation for building video and audio players. The core is a set of low-level React hooks (like useMediaStore) that give you direct access to the player's state (playing, paused, current time, volume, etc.) and methods (play, pause, seek). On top of that, it offers pre-built, unstyled UI components for things like buttons, sliders, and time displays that are wired up with proper accessibility out of the box.

Think of it as giving you the complete engine and a set of basic, un-painted car parts. You decide how to assemble and style the final vehicle.

Why It's Cool

The real win here is the combination of total control and zero accessibility debt. The library is built with a clear separation of concerns: the media logic is handled by the hooks, and the UI is completely up to you. You can use their pre-built UI components and style them with CSS, or you can build your own components from scratch using the hooks.

Some standout features:

  • Fully Headless: The hooks give you all the state and controls without imposing any UI.
  • Accessibility Built-In: The provided UI components have proper ARIA labels, keyboard navigation, and focus management handled for you.
  • Framework Agnostic Core: While the React hooks are the highlight, the underlying player logic (@vidstack/player) can be used with any framework or vanilla JS.
  • It's Just Media Elements: Under the hood, it uses the native <video> and <audio> elements, so it's standards-compliant and avoids weird proprietary APIs.

How to Try It

Getting started is straightforward. You can install the React-specific package via npm:

npm install @vidstack/react

The quickest way to see it in action is to check out their docs and examples. The GitHub repository has a solid README, but you'll want to head to the official documentation site for comprehensive guides and live demos.

    Did you like this issue?

    Join our weekly newsletter

    Related Projects

    Love discovering amazing projects?

    Help us continue bringing you the best open-source discoveries every week.

    Back to Projects
    Last updated: Jan 26, 2026