Skip to main content

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.


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);
}}

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);
}}