Quick Start
Get audio playing in five steps.
1
Set up the player
Call setupPlayer once when your app starts — in your root component or entry point.
import TrackPlayer from '@rntp/player';
TrackPlayer.setupPlayer({
contentType: 'music',
});2
Register a background event handler (optional)
By default, the system handles remote control events natively — you don’t need this for basic playback. Register a handler when you want to intercept events yourself, such as to update metadata or implement custom logic.
If registered, it must be called before setupPlayer.
import TrackPlayer, { Event, type BackgroundEvent } from '@rntp/player';
TrackPlayer.registerBackgroundEventHandler(() => async (event: BackgroundEvent) => {
switch (event.type) {
case Event.RemotePlay: TrackPlayer.play(); break;
case Event.RemotePause: TrackPlayer.pause(); break;
case Event.RemoteNext: TrackPlayer.skipToNext(); break;
case Event.RemotePrevious: TrackPlayer.skipToPrevious(); break;
}
});3
Configure remote controls
Set which commands appear on the lock screen and in the notification.
import { PlayerCommand } from '@rntp/player';
TrackPlayer.setCommands({
capabilities: [
PlayerCommand.PlayPause,
PlayerCommand.Next,
PlayerCommand.Previous,
],
});4
Add tracks and play
TrackPlayer.setMediaItems([
{
mediaId: 'track-1',
url: 'https://example.com/audio.mp3',
title: 'My Track',
artist: 'Artist Name',
artworkUrl: 'https://example.com/artwork.jpg',
},
]);
TrackPlayer.play();5
Use hooks in your UI
import { useIsPlaying, useProgress } from '@rntp/player';
function PlayerControls() {
const playing = useIsPlaying();
const { position, duration } = useProgress();
return (
<>
<Slider value={position} maximumValue={duration} />
<Button onPress={() => playing ? TrackPlayer.pause() : TrackPlayer.play()}>
{playing ? 'Pause' : 'Play'}
</Button>
</>
);
}If you use a background event handler, register it in a file loaded at app startup — not inside a component. A common pattern is
index.js or a service file imported at the root.Next steps
- Player Setup — full configuration options
- Queue — managing your track queue
- Hooks — all available React hooks