SeekBar component is an interactive progress control that provides media navigation capabilities. It extends beyond a basic progress bar by offering advanced playback control features commonly used in TV media players.
Usage scenarios
TheSeekBar component is ideal for apps requiring media navigation, such as:
- Video/audio players
- Timeline scrubbing
- Content preview systems
- Progress tracking interfaces
- Interactive media navigation
User experience
Core props
currentValue
Required The current position value of the content progress.
Type number
Must be between 0 and totalValue (inclusive).
totalValue
Required The maximum value for the seek bar, representing the total duration or range.
Type number
step
The value to increment or decrement when using D-Pad navigation. Values can be positive or negative.numberDefault 10
Interaction control props
disabled
Enables or disables all user interactions with the remote events.booleanDefault
false
disabledWhenNotFocused
Whentrue, disables user interaction when the seek bar is not focused. This prop is important for TV interfaces where focus management is critical, and ideal when you want the component to handle focus management automatically rather than managing it manually in your app code.
booleanDefault
false
disableThumbnail
Enables or disables the preview thumbnail image functionality. To display thumbnail images, use thethumbnailImageSource prop.
booleanDefault
false
trapFocus
Controls focus navigation behavior for theSeekBar component.
booleanDefault
false
When enabled, traps focus for left or right within the SeekBar. Up or down navigation to controls above or below the SeekBar remain available.
partialDisablingConfiguration
Provides control over which specific user interactions to disable.PartialDisablingConfiguration
When provided, this prop overrides the global disabled and disabledWhenNotFocused settings.
The prop is useful for disabling only specific buttons. For example, you can disable skipForward >> or skipBackward << while maintain seek behavior (right and left D-pad) or removing default behavior for custom handling.
Available actions:
playPauseskipBackwardskipForwardleftrightselectback
PartialDisablingConfiguration object, all default values for the actions are set to false.
Note Disabling the back button only affects the SeekBar’s internal usage, not external navigation or other interactions outside the component.
Callback props
onValueChange
Callback fired when the value changes while sliding.(value: number) => void
onSlidingStart
Callback fired when sliding interaction begins. For D-Pad, the callback is triggered on initial left or right press (key down).() => void
onSlidingEnd
Callback fired when sliding interaction ends. For D-Pad navigation, triggers on the left or right release (key up).() => void | undefined
onRewindPress
Callback fired when a user triggers the rewind action. By default, pressing this button simulates a interaction that seeks backward through the content. For the rewind button in the RCU<<, triggered on release (key up).
() => void
Related props: longPressIntervalDuration, stepMultiplierFactor,enableSkipForwardBackwardAcceleration.
onFastForwardPress
Callback fired when a user triggers the fast forward action. By default, pressing this button simulates a long press interaction that seeks forward through the content. For the fast forward button in the RCU>>, triggered on release (key up).
() => void
Related props: longPressIntervalDuration, stepMultiplierFactor, enableSkipForwardBackwardAcceleration.
onPress
Callback fired when the user presses the select button on the remote.(seekBarThumbValue: number) => void
onPlayPause
Callback fired when a user presses the play or pause button on the remote.(seekBarThumbValue: number) => void
onFocus
Callback fired when the seekbar receives focus.() => void
onBlur
Callback fired when the seekbar loses focus.() => void
onSeekInteractionChange
Callback fired during seeking interactions with the D-Pad. The event object contains the direction property which indicates the seeking direction:'forward': Right D-Pad navigation seeking (initial press)'rewind': Left D-Pad navigation seeking (initial press)'fast_forward': Long press right D-Pad navigation'fast_rewind': Long press left D-Pad navigationnull: Send when the seeking interaction has ended (when the user releases the D-pad after seeking)
(event: InteractionEventPayload) => void
Event sequence
TheonSeekInteractionChange callback fires in a specific sequence during D-pad interactions.
Right D-Pad example
- Initial press (key down):
event.direction = 'forward' - If held long enough (after
longPressDelay):event.direction = 'fast_forward' - When released (key up):
event.direction = null
- Initial press (key down):
event.direction = 'rewind' - If held long enough (after
longPressDelay):event.direction = 'fast_rewind' - When released (key up):
event.direction = null
Complete event flow
The complete sequence for a long press interaction is:Visual customization props
Markers
Array of to display on the seek bar. Supports three types of markers:ReactNodeMarker[] | BreakMarker[]
Marker types
- ReactNode markers: Custom React components for complex visual elements.
- Point markers: Colored points that break the seekbar into , commonly used for ad markers.
- Segment markers: Break markers that divide the bar into distinct segments.
- ReactNode markers cannot be combined with Point or Segment markers
- Point and Segment markers can be used together
- Point markers should have at least 3% space between them
- Point markers can only be placed up to 97% of the total SeekBar width
Example 2
Segment markers
displayAboveThumb
Custom content to render above the seek bar thumb. You can use a render function or React Node. Render function receives props:{ mode, stepValue, multiplier, focused }.
DisplayAboveThumbType | React.ReactNode
displayBelowThumb
Custom content to render below the seek bar thumb. You can use a render function or React Node.(() => React.ReactNode) | React.ReactNode
thumbIcon
A custom thumb icon component. You can use a render function or React Node. Render function receives{ focused } prop.
((props: ThumbIconProps) => React.ReactNode) | React.ReactNode
Note When using the dynamic icon with the focused callback argument, set disabledWhenNotFocused={true} for correct focus behavior.
currentValueIndicatorColor
The color for the filled portion of the progress indicator. You can use a static color or a function that returns a color based on focus state.
Type ColorValue | ((isFocused: boolean) => ColorValue)
barTrackColor
The color for the unfilled portion of the slider.
Type ColorValue
segmentColors
The color configuration for segments.SegmentColorsConfig
segmentColors seekColor won’t be applied. If there are no break markers, segment colors won’t apply to the bar.
Usage examples
Yellow segment colors
Red segment colors
Style props
barStyle
Style overrides for the slider bar.
Type StyleProp<ViewStyle>
currentValueIndicatorStyle
Style overrides for the progress indicator.StyleProp<ViewStyle>
timeShiftIndicatorStyle
Style overrides for the .
Type StyleProp<ViewStyle>
Thumbnail props
thumbnailStyle
Style overrides for the thumbnail container.StyleProp<ViewStyle>
thumbnailImageSource
The image source for the thumbnail preview. Accepts a render prop for dynamic sources.((thumbValue: number) => ImageSourcePropType) | ImageSourcePropType
thumbnailImageStyle
Style overrides for the thumbnail image.StyleProp<ImageStyle>
thumbnailImageResizeMode
Resize mode for the thumbnail image.ImageResizeModeDefault
"cover"
thumbnailLabel
Label to display in the thumbnail. Accepts a render prop for dynamic content.((thumbValue: number) => string) | string
thumbnailLabelTextStyle
Style overrides for the thumbnail label text.StyleProp<TextStyle>
thumbnailLabelContainerStyle
Style overrides for the thumbnail label container.StyleProp<ViewStyle>
Interaction timing props
longPressIntervalDuration
Interval duration in milliseconds for D-Pad long press actions. Controls how frequently the seeking action updates while holding the direction key. It’s recommended to keep the default value as it matches the frequency of events sent by the remote control.numberDefault
200
Example 1
Long press interval duration: 200
Example 2
Long press interval duration: 400
longPressDelay
The amount of time in milliseconds before a user triggers the long press action. For D-Pad inputs, a user triggers a long press by holding the left or right key.numberDefault
250
Example 1
Long press delay: 200
Example 2
Long press delay: 3000
keyDownThrottleDelay
Delay for throttling key down events. Helps prevent excessive event handling during rapid key presses.numberDefault
0
animationDuration
Duration of the animation in milliseconds whenenableAnimations is true. Controls how long the thumb and progress transitions take. To have a better animation perception in long press and fast-forward or rewind interactions, use the same value in both longPressIntervalDuration and animationDuration. Has no effect if enableAnimations is false.
numberDefault
200
Seeking behavior props
maxStepValue
Maximum step value for progressive seeking during long press. Limits how large the seeking steps can become during .numberDefault
160
stepMultiplierFactor
Multiplication factor for progressive seeking steps. Determines how quickly the seeking speed increases during acceleration. Thestep value is multiplied by this factor. Only applied when enableLongPressAcceleration or enableSkipForwardBackwardAcceleration is enabled.
numberDefault
1
Examples
stepMultiplierFactor={1}: Consistent acceleration -1x → 2x → 3x → 4x, ..stepMultiplierFactor={2}: Fast acceleration - speed doubles over time1x → 2x → 4x → 8x, ..stepMultiplierFactor={3}: Fast acceleration - speed triples over time1x → 3x → 6x → 12x, ..
stepMultiplierFactorInterval
Time interval between step multiplier increases. Controls how frequently the seeking speed increases during D-Pad left or right long press acceleration (in milliseconds).stepMultiplierFactor handles speed increases.
numberDefault
1000
lowerSeekLimit
Minimum seekable value in the seekbar range. Prevents seeking to positions before this value.numberDefault
0
upperSeekLimit
Maximum seekable value in the seekbar range. Prevents seeking to positions after this value.numberDefault
totalValue
enableLongPressAcceleration
Enables progressive acceleration during long press interactions. When enabled, the step multiplier increases over time (for example, 1x, 2x, 3x, 4x) based on thestepMultiplierFactor and stepMultiplierFactorInterval settings. The step value is multiplied by the current multiplier. Affects the seeking speed when holding down left or right keys or buttons.
booleanDefault
false
enableSkipForwardBackwardAcceleration
Enables progressive acceleration during skip forward or backward interactions. When enabled, consecutive skip forward (>>) or skip backward (<<) button presses increase the skip multiplier (for example, 1x, 2x, 3x, 4x, 5x) based on the stepMultiplierFactor setting. The step value is multiplied by the current multiplier.
booleanDefault
false
enableAnimations
Enables or disables animations for the seek bar’s thumb and progress movements. Whentrue, the seek bar animates position changes smoothly and thetimeShiftIndicatorStyle prop isn’t applied. When false, the position changes instantly and all visual elements are rendered.
booleanDefault
false

