Skip to main content

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.

info
  • 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.