VideoPlayer

The root component of the toolkit that provides video playback, gesture handling, and a flexible API for composing custom control layouts.

VideoPlayer

The VideoPlayer is the root component of the toolkit.
It provides video playback, gesture handling, and a flexible API for composing custom control layouts.

This component uses a compound component pattern:

<VideoPlayer>
  <VideoPlayer.Controls>
    <VideoPlayer.PlayButton />
    <VideoPlayer.ProgressBar />
    <VideoPlayer.TimeDisplay />
  </VideoPlayer.Controls>
</VideoPlayer>

Usage

import { VideoPlayer } from 'react-native-video-toolkit';

export default function App() {
  return (
    <VideoPlayer source={{ uri: 'https://example.com/video.mp4' }} videoProps={{ resizeMode: 'contain' }}>
      <VideoPlayer.Controls>
        <VideoPlayer.PlayButton />
        <VideoPlayer.ProgressBar />
        <VideoPlayer.TimeDisplay />
        <VideoPlayer.VolumeControl />
        <VideoPlayer.FullscreenButton />
        <VideoPlayer.SettingsButton />
      </VideoPlayer.Controls>
      <VideoPlayer.Menu />
    </VideoPlayer>
  );
}

Props

PropTypeRequiredDefaultDescription
sourceVideoSourceYesVideo source (uri, local file, or require). Extends react-native-video.
childrenReactNodeNoOptional custom overlay or controls.
containerStyleStyleProp<ViewStyle>NoStyle applied to the root container.
videoPropsReactVideoPropsNoProps passed to the underlying react-native-video player.
gesturePropsGestureHandlerPropsNoProps for the built-in GestureHandler (e.g. double-tap to seek).

Examples

Minimal Player

<VideoPlayer source={{ uri: 'https://example.com/video.mp4' }} />

With Custom Controls

<VideoPlayer source={{ uri: 'https://example.com/video.mp4' }}>
  <VideoPlayer.Controls style={{ justifyContent: 'space-between' }}>
    <VideoPlayer.PlayButton />
    <VideoPlayer.ProgressBar />
    <VideoPlayer.TimeDisplay />
  </VideoPlayer.Controls>
</VideoPlayer>

Compound Components

The VideoPlayer exports several prebuilt UI primitives:

ComponentDescription
VideoPlayer.ControlsA container for grouping controls (absoluteFill).
VideoPlayer.PlayButtonToggles play/pause.
VideoPlayer.ProgressBarDisplays seekable progress.
VideoPlayer.TimeDisplayShows current time / duration.
VideoPlayer.VolumeControlSlider for adjusting volume.
VideoPlayer.FullscreenButtonToggles fullscreen.
VideoPlayer.MuteButtonToggles mute on/off.
VideoPlayer.LoadingSpinnerSpinner for buffering state.
VideoPlayer.SettingsButtonOpens settings menu.
VideoPlayer.MenuBottom-sheet style menu for settings.

  • The layout automatically adapts when toggling fullscreen (height/width swap based on device orientation). - All controls are theme-aware (colors, sizes come from useVideo provider). - If you don't like the built-in controls, you can compose your own using the hooks and providers.