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';
await 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, { BackgroundEvent, EventType } from '@rntp/player';
TrackPlayer.registerBackgroundEventHandler(() => async (event: BackgroundEvent) => {
switch (event.type) {
case EventType.RemotePlay: await TrackPlayer.play(); break;
case EventType.RemotePause: await TrackPlayer.pause(); break;
case EventType.RemoteNext: await TrackPlayer.skipToNext(); break;
case EventType.RemotePrevious: await TrackPlayer.skipToPrevious(); break;
}
});3
Configure remote controls
Set which commands appear on the lock screen and in the notification.
import { PlayerCommand } from '@rntp/player';
await TrackPlayer.setCommands({
capabilities: [
PlayerCommand.Play,
PlayerCommand.Pause,
PlayerCommand.SkipToNext,
PlayerCommand.SkipToPrevious,
],
});4
Add tracks and play
await TrackPlayer.setMediaItems([
{
mediaId: 'track-1',
url: 'https://example.com/audio.mp3',
title: 'My Track',
artist: 'Artist Name',
artworkUrl: 'https://example.com/artwork.jpg',
},
]);
await 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