ComponentsCore Components
VideoSurface
A thin wrapper around react-native-video that integrates with the toolkit's context and hooks.
Usage
import { VideoSurface } from 'react-native-video-toolkit';
export function CustomSurfaceExample() {
return (
<VideoSurface
source={{ uri: 'https://example.com/video.mp4' }}
resizeMode="cover"
onEnd={() => console.log('Playback finished')}
/>
);
}
Props
All props from react-native-video
are supported.
Prop | Type | Required | Default | Description |
---|---|---|---|---|
source | VideoSource | Yes | – | Video source (uri , local file, or require). |
style | StyleProp<ViewStyle> | No | – | Additional style applied to the <Video> surface. |
...rest | ReactVideoProps | No | – | Any other props from react-native-video are passed through. |
Events
These events are already handled internally and connected to the global store:
onLoad
→ sets duration, clears buffering, deduplicates tracks, and selects the first available track by default.onProgress
→ updates current timeonBuffer
→ updates buffering stateonError
→ dispatches an error message into stateonEnd
→ stops playback, seeks to0
, and shows controlsonLayout
→ updates player layout in state
You can override these if needed, but by default they keep your UI in sync.
Layout & Fullscreen
- Automatically adapts when
fullscreen
is toggled in the global store. - Uses a
16:9
aspect ratio by default in normal mode. - In fullscreen, expands to
Dimensions.get('window')
.
- Typically, you don't use
VideoSurface
directly — it's already included insideVideoPlayer
. - Import it only if you want to replace or deeply customize the rendering of the video element (e.g., special resize modes, advanced performance tuning).