Skip to main content

Events

All events are passed as callback props on BBPlayerView. They fire when the native player triggers the corresponding action.

<BBPlayerView
jsonUrl="..."
onDidTriggerPlay={() => console.log('Playing')}
onDidTriggerPause={() => console.log('Paused')}
onDidTriggerStateChange={(state) => console.log('State:', state)}
/>

Setup & Lifecycle​

EventPayloadDescription
onDidSetupWithJsonUrlurl: stringPlayer initialized with URL
onDidTriggerApiReady—Player API is ready for method calls
onDidFailWithErrorerror: stringPlayer setup failed

Playback​

EventPayloadDescription
onDidTriggerPlay—Playback started
onDidTriggerPause—Playback paused
onDidTriggerPlaying—Actively playing (after buffering)
onDidTriggerEnded—Playback reached the end
onDidTriggerCanPlay—Enough data buffered to play
onDidTriggerSeeking—Seek operation started
onDidTriggerSeekedposition: numberSeek completed
onDidTriggerStall—Playback stalled (buffering)
onDidTriggerDurationChangeduration: numberMedia duration available/changed
onDidTriggerVolumeChangevolume: number, muted: booleanVolume or mute state changed

State Changes​

EventPayloadDescription
onDidTriggerStateChangestate: StatePlayer state changed
onDidTriggerPhaseChangephase: PhasePlayer phase changed
onDidTriggerModeChangemode: stringPlayer mode changed

State Values​

type State = "IDLE" | "LOADING" | "PLAYING" | "PAUSED" | "ERROR";
StateDescription
IDLENo media loaded
LOADINGMedia is loading
PLAYINGActively playing
PAUSEDPlayback paused
ERRORAn error occurred

Phase Values​

type Phase = "INIT" | "PRE" | "MAIN" | "POST" | "EXIT";
PhaseDescription
INITPlayer initializing
PREPre-roll ads playing
MAINMain content playing
POSTPost-roll ads playing
EXITPlayback session ended

Media Loading​

EventPayloadDescription
onDidTriggerMediaClipLoadedclip: MediaClipMedia clip loaded successfully
onDidTriggerMediaClipFailed—Media clip failed to load
onDidTriggerProjectLoadedproject: ProjectProject data loaded

View Events​

EventPayloadDescription
onDidTriggerViewStarted—View session started (for analytics)
onDidTriggerViewFinished—View session completed

Fullscreen​

EventPayloadDescription
onDidTriggerFullscreen—Entered fullscreen
onDidTriggerRetractFullscreen—Exited fullscreen (any method)

Layout​

EventPayloadDescription
onDidRequestCollapse—Player requests collapse (outstream)
onDidRequestExpand—Player requests expand (outstream)
onDidRequestOpenUrlurl: stringPlayer requests opening a URL (ad click-through)

Auto-Pause​

EventPayloadDescription
onDidTriggerAutoPausewhy: stringPlayback auto-paused (reason provided)
onDidTriggerAutoPausePlaywhy: stringAuto-pause resumed

Ads​

EventPayloadDescription
onDidTriggerAdLoadStart—Ad request started
onDidTriggerAdLoaded—Ad loaded successfully
onDidTriggerAdStarted—Ad playback began
onDidTriggerAdFinished—Single ad completed
onDidTriggerAdNotFound—No ad returned from server
onDidTriggerAdErrorerror: stringAd playback failed
onDidTriggerAdQuartile1—Ad reached 25%
onDidTriggerAdQuartile2—Ad reached 50%
onDidTriggerAdQuartile3—Ad reached 75%
onDidTriggerAllAdsCompleted—All scheduled ads completed
onDidShowCompanionAd{ width: number, height: number }An outstream companion ad became the exit screen after the ad finished (once per ad break). Payload is the matched companion-slot size (not the on-screen rendered size); there is no image or clickthrough URL — the IMA SDK owns the rendering and the click. iOS only, and requires BBNativePlayerKit 8.56.0 or newer — this package vendors 8.56.0. Not implemented on Android — the RN bridge for this event has not been written (ADO #19723).

Custom Statistics​

EventPayloadDescription
onDidTriggerCustomStatisticsstats: CustomStatisticsCustom analytics event from native SDK
type CustomStatistics = {
ident: string; // Event identifier
ev: string; // Event type/name
aux: Record<string, string>; // Additional data
};

See Analytics Guide for integration examples.