Skip to main content

Lifecycle

These functions manage the lifecycle of the player - setup, configuration, updates, and cleanup.

setupPlayer​

Initializes the player with the given options. This must be called before using any other player functionality.

await TrackPlayer.setupPlayer(options?: SetupOptions): Promise<void>

Parameters​

ParameterTypeRequiredDescription
optionsSetupOptionsNoConfiguration options for the player

SetupOptions​

OptionTypeDefaultDescription
waitForBufferbooleantrueWhether to wait for buffer before playing
updateIntervalnumber1Interval in seconds between progress updates
useMediaSessionbooleantrueWhether to enable MediaSession API integration
capabilitiesCapability[]All capabilitiesList of player capabilities to enable

Example​

import TrackPlayer, { Capability } from "react-track-player-web"

await TrackPlayer.setupPlayer({
updateInterval: 0.5,
useMediaSession: true,
capabilities: [
Capability.Play,
Capability.Pause,
Capability.SkipToNext,
Capability.SkipToPrevious,
Capability.SeekTo
]
})

updateOptions​

Updates the player options after initialization.

await TrackPlayer.updateOptions(options: Partial<SetupOptions>): Promise<void>

Parameters​

ParameterTypeRequiredDescription
optionsPartial<SetupOptions>YesUpdated options for the player

Example​

// Update player options to change update interval or capabilities
await TrackPlayer.updateOptions({
updateInterval: 0.2,
capabilities: [Capability.Play, Capability.Pause, Capability.Stop, Capability.SeekTo]
})

reset​

Resets the player state and clears the queue, but keeps the player initialization.

await TrackPlayer.reset(): Promise<void>

Example​

// Reset the player (clears queue but keeps initialization)
await TrackPlayer.reset()

destroy​

Completely destroys the player instance and releases all resources. After calling this, you must call setupPlayer again before using any other functions.

await TrackPlayer.destroy(): Promise<void>

Example​

// Clean up the player when you're done with it
await TrackPlayer.destroy()

Event Listeners​

addEventListener​

Registers an event handler for the specified event type.

TrackPlayer.addEventListener(event: Event, listener: EventHandler): void

Parameters​

ParameterTypeRequiredDescription
eventEventYesThe event type to listen for
listenerEventHandlerYesThe function to call when the event occurs

Example​

import { Event } from "react-track-player-web"

// Register event listener
const stateChangeHandler = (event) => {
console.log("Player state changed:", event.state)
}
TrackPlayer.addEventListener(Event.PlaybackState, stateChangeHandler)

removeEventListener​

Removes a previously registered event handler.

TrackPlayer.removeEventListener(event: Event, listener: EventHandler): boolean

Parameters​

ParameterTypeRequiredDescription
eventEventYesThe event type to remove the listener from
listenerEventHandlerYesThe function to remove

Return Value​

Returns true if the listener was found and removed, or false otherwise.

Example​

// Remove the event listener when no longer needed
TrackPlayer.removeEventListener(Event.PlaybackState, stateChangeHandler)

Best Practices​

  1. Always setup the player first: Call setupPlayer before using any other functions.

  2. Cleanup when done: In React components, call destroy in the cleanup function of your useEffect hook:

    useEffect(() => {
    const setupPlayer = async () => {
    await TrackPlayer.setupPlayer()
    // Add tracks, etc.
    }

    setupPlayer()

    return () => {
    TrackPlayer.destroy()
    }
    }, [])
  3. Reset between playlists: When changing playlists, use reset to clear the current queue before adding new tracks.

  4. Handle setup errors: Wrap setup code in try/catch blocks to handle potential errors:

    try {
    await TrackPlayer.setupPlayer()
    } catch (error) {
    console.error("Failed to setup player:", error)
    }
  5. Remove event listeners: Always remove event listeners when they're no longer needed to prevent memory leaks.