Skip to main content
Read-only — tracks buffered and seekable time ranges from the media element. Used by TimeSlider to render the buffer progress indicator.

Import

import { buffer, selectBuffer } from '@videojs/react';
// or
import { buffer, selectBuffer } from '@videojs/html';

Usage

import { createPlayer, buffer } from '@videojs/react';

const Player = createPlayer({
  features: [buffer],
});

State

buffered
[number, number][]
Buffered time ranges as an array of [start, end] tuples in seconds.
seekable
[number, number][]
Seekable time ranges as an array of [start, end] tuples in seconds.

Selector

Use selectBuffer to subscribe to only the buffer slice of state. Returns undefined if the buffer feature is not configured.
import { selectBuffer, usePlayer } from '@videojs/react';

function BufferBar() {
  const buffer = usePlayer(selectBuffer);
  if (!buffer) return null;

  const firstRange = buffer.buffered[0];
  const bufferedEnd = firstRange ? firstRange[1] : 0;

  return (
    <div style={{ width: `${bufferedEnd}px` }} />
  );
}
This feature is read-only — there are no actions. Buffer state is updated automatically as the media element loads data.

Build docs developers (and LLMs) love