Beta —
@videojs/react is close to stable. Experimental adoption in real projects is welcome.@videojs/react is a comprehensive library for building media players in React applications. It provides a complete set of components, hooks, and utilities for creating feature-rich, accessible video and audio players.
Installation
>=16.8.0 must be installed in your project.
Exports
| Entry point | Description |
|---|---|
. | Main entry — core exports, React primitives, UI components, hooks, and utilities |
./video | Video player preset with default skin and layout |
./audio | Audio player preset |
./background | Background player preset |
./media/* | Individual media component modules |
Quick start
Use a preset for the fastest path to a working player:Key API
Player setup
Hooks
UI components
All standard player controls are available as composable React components:State management
Utilities
Exports reference
Player API
| Export | Type | Description |
|---|---|---|
createPlayer | Function | Creates a player instance with a React Provider component |
Container | Component | Root container that connects child components to the player |
usePlayer | Hook | Returns the player controller |
usePlayerContext | Hook | Returns the full player context value |
useMedia | Hook | Returns current media element state |
useMediaRegistration | Hook | Registers a media element with the player |
UI components
| Export | Description |
|---|---|
PlayButton | Play/pause toggle |
MuteButton | Mute/unmute toggle |
FullscreenButton | Fullscreen toggle |
PiPButton | Picture-in-picture toggle |
SeekButton | Seek forward/backward by a fixed interval |
CaptionsButton | Captions/subtitles toggle |
PlaybackRateButton | Playback speed selector |
TimeSlider | Scrubber/seek bar |
VolumeSlider | Volume control slider |
Slider | Generic accessible slider primitive |
Time | Current time / duration display |
Thumbnail | Preview thumbnail |
BufferingIndicator | Loading/buffering state indicator |
Poster | Video poster image |
Controls | Layout container for grouping controls |
Tooltip | Accessible tooltip |
Popover | Accessible popover |
AlertDialog | Accessible alert dialog |
Utilities
| Export | Description |
|---|---|
mergeProps | Merges multiple prop objects, combining event handlers |
renderElement | Renders a component or render function |
useButton | Hook returning accessible button props |
useSlider | Hook returning accessible slider props |
createSelector | Creates a memoized state selector |
shallowEqual | Shallow equality comparator |
useSelector | React hook for subscribing to store state |
useStore | React hook returning the raw store |
Dependencies
| Package | Role |
|---|---|
@videojs/core | Core player logic and feature definitions |
@videojs/store | Reactive state management |
@videojs/spf | Stream Processing Framework |
@videojs/utils | Shared utility functions |
Related packages
@videojs/core
Runtime-agnostic core used by this package.
@videojs/html
Web Components alternative for framework-free environments.
@videojs/store
Reactive state management powering useSelector and useStore.
@videojs/utils
Shared utilities used across the stack.