Events
All events are received as props on the BBChannel (or BBChannelWithPlayer) component.
Lifecycle
onReady
Fired when the channel has finished loading and is ready for interaction.
<BBChannel
channelUrl="..."
onReady={() => {
console.log('Channel is ready');
}}
/>
onError
Fired when an error occurs.
<BBChannel
channelUrl="..."
onError={(error: BBErrorEvent) => {
console.error(`[${error.code}] ${error.message}`);
}}
/>
See BBErrorEvent for the full type and common error codes.
Navigation
onNavigate
Fired when the user navigates to a different page.
onNavigate={(event: BBNavigationEvent) => {
console.log('Page:', event.pageType);
console.log('Can go back:', event.canGoBack);
console.log('Stack depth:', event.stackDepth);
}}
onNavigationStateChange
Fired whenever the navigation state changes. Useful for persisting or restoring state.
onNavigationStateChange={(state: BBNavigationState) => {
console.log('New state:', state.pageType, state.contentId);
}}
onCanGoBackChange
Fired when back navigation availability changes. Useful for enabling/disabling a back button.
onCanGoBackChange={(canGoBack: boolean) => {
setBackButtonEnabled(canGoBack);
}}
Media
onMediaPlay
Fired when a video starts playing.
onMediaPlay={(media: BBMediaInfo) => {
console.log('Playing:', media.title, media.jsonUrl);
}}
onMediaPause
Fired when a video is paused.
onMediaPause={(media: BBMediaInfo) => {
console.log('Paused:', media.title);
}}
onMediaEnd
Fired when a video finishes playing.
onMediaEnd={(media: BBMediaInfo) => {
console.log('Ended:', media.title);
}}
onFirstPlayerMedia
Fired when the first auto-playing video loads. Useful for showing a native player or updating UI before playback begins.
onFirstPlayerMedia={(media: BBMediaInfo) => {
console.log('First video ready:', media.title);
}}
Player
onPlayerStateChange
Fired when the player state changes (play, pause, seek, volume, fullscreen, etc.).
onPlayerStateChange={(state: BBPlayerState) => {
console.log('Playing:', state.isPlaying, 'Time:', state.currentTime);
}}
onPlayerEvent
Fired for raw player events. The event shape depends on the underlying player.
onPlayerEvent={(event) => {
console.log('Player event:', event);
}}
onTimeUpdate
Fired periodically during playback with the current time.
onTimeUpdate={(event) => {
console.log('Time:', event.currentTime);
}}
onClipLoaded
Fired when a new clip is loaded into the player.
onClipLoaded={(event) => {
console.log('Clip loaded:', event);
}}
onAdStart
Fired when an ad begins playing.
onAdStart={(event) => {
console.log('Ad started:', event);
}}
onAdEnd
Fired when an ad finishes playing.
onAdEnd={(event) => {
console.log('Ad ended:', event);
}}
Multi-player
onPlayersChange
Fired when the set of registered players changes (e.g., a new player appears on a detail page).
onPlayersChange={(players) => {
console.log('Players:', players.length);
}}
onActivePlayerChange
Fired when the active player changes.
onActivePlayerChange={(player) => {
console.log('Active player:', player);
}}
Other
onSearch
Fired when the user performs a search.
onSearch={(event: BBSearchEvent) => {
console.log('Search:', event.query, 'Results:', event.resultCount);
}}
onExternalLink
Fired when an external link is clicked within the channel. If this callback is not provided, external links are silently blocked.
onExternalLink={(url: string) => {
Linking.openURL(url);
}}
onAnalyticsEvent
Fired for analytics events (impressions, plays, etc.).
onAnalyticsEvent={(event) => {
analytics.track(event);
}}