Skip to main content
Beta — Video.js v10 is close to stable. The API may evolve with feedback. See the Changelog and Roadmap for details.
Video.js v10 is a ground-up rewrite built around three ideas: composable features, multi-platform support (React and HTML custom elements), and a TypeScript-first API that tree-shakes down to only what you use.

Quickstart

Get a working player in under 5 minutes with React or HTML custom elements.

Core Concepts

Understand features, presets, skins, and the three-part architecture.

React Guide

Build a fully custom player with React hooks and components.

HTML Guide

Use framework-free custom elements in any web project.

What’s new in v10

Video.js v10 is a complete rewrite that addresses the architectural constraints of v7/v8. The key changes:

Composable features

Features are self-contained units of state and actions. Only include what your player needs — playback, volume, time, fullscreen, PiP, text tracks, and more.

React-native support

First-class React components with hooks, context, and TypeScript generics. Minimal re-renders via selector-based subscriptions.

HTML custom elements

Framework-free web components that work in any environment. Use the CDN or npm, with automatic state reflection via data attributes.

TypeScript-first

Full type safety across the entire API surface. Generic player types inferred from your feature set.

Tree-shakeable

Import only the features and components you use. No global registrations, no side effects unless you want them.

HLS & DASH built-in

First-class HLS (via hls.js) and DASH (via dash.js) support without additional plugins.

Install

npm install @videojs/react
Or use the CDN for HTML custom elements:
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/html/cdn/video/player.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@videojs/html/cdn/video/skin.css" />

Quick example

import { createPlayer } from '@videojs/react';
import { videoFeatures, VideoSkin, Video } from '@videojs/react/video';
import '@videojs/react/video/skin.css';

const Player = createPlayer({ features: videoFeatures });

export function MyPlayer() {
  return (
    <Player.Provider>
      <VideoSkin>
        <Video src="https://stream.mux.com/example.m3u8" />
      </VideoSkin>
    </Player.Provider>
  );
}

Packages

@videojs/react

React components, hooks, and context for building players in React.

@videojs/html

HTML custom elements for framework-free player development.

@videojs/core

Runtime-agnostic core logic, features, and DOM bindings.

@videojs/store

Reactive state management with selector-based subscriptions.

@videojs/spf

Stream Processing Framework for HLS and DASH.

@videojs/utils

Shared utilities for DOM, events, and type predicates.

Community

Discord

Join the Video.js community for help and discussion.

GitHub

Report issues, request features, or contribute to the project.