Playback
Basic controls
await TrackPlayer.play();
await TrackPlayer.pause();
await TrackPlayer.stop(); stop() halts playback and releases the media resource, while pause() retains position.
Seeking
// Seek to an absolute position in seconds
await TrackPlayer.seekTo(30);
// Seek relative to current position
await TrackPlayer.seekBy(10); // forward 10s
await TrackPlayer.seekBy(-10); // back 10s Skipping
await TrackPlayer.skipToNext();
await TrackPlayer.skipToPrevious();
await TrackPlayer.skipToIndex(2); // zero-based index Speed and volume
await TrackPlayer.setPlaybackSpeed(1.5); // 1.0 = normal
await TrackPlayer.setVolume(0.8); // 0.0 – 1.0 Repeat mode
import { RepeatMode } from '@rntp/player';
await TrackPlayer.setRepeatMode(RepeatMode.Track); // repeat current track
await TrackPlayer.setRepeatMode(RepeatMode.Queue); // repeat queue
await TrackPlayer.setRepeatMode(RepeatMode.Off); // no repeat Shuffle
await TrackPlayer.setShuffleEnabled(true);
await TrackPlayer.setShuffleEnabled(false); Sleep timer
Set a countdown timer that pauses playback after a duration. The timer uses wall clock time — it keeps counting even if playback is paused.
// Pause after 30 minutes
TrackPlayer.sleepAfterTime(30 * 60);
// Pause after 30 minutes with a 30-second volume fade-out
TrackPlayer.sleepAfterTime(30 * 60, { fadeOutSeconds: 30 }); You can also pause after a specific track finishes:
// Pause after the current track ends
TrackPlayer.sleepAfterMediaItemAtIndex();
// Pause after the track at index 5 ends
TrackPlayer.sleepAfterMediaItemAtIndex(5); Only one sleep timer can be active at a time — setting a new one cancels the previous.
Cancel an active timer with:
TrackPlayer.cancelSleepTimer(); If a volume fade is in progress, cancelling restores the original volume immediately.
Note:
fadeOutSecondsis only available withsleepAfterTime. The media-item-based timer has no fade-out since the remaining time is unknown. IffadeOutSecondsexceeds the timer duration, it is clamped to fit.
Error recovery
If a track fails to load, the player enters an error state. Call retry() to re-attempt:
await TrackPlayer.retry(); Background playback
Background playback is enabled automatically when you configure the UIBackgroundModes capability in iOS and set up a background event handler.
The player continues running when:
- The app is backgrounded
- The screen is turned off
- The user switches apps
No additional configuration is needed beyond the Installation setup.
Remote controls
Remote controls (lock screen, notification, headphone buttons, Bluetooth) are handled via the background event handler registered with registerBackgroundEventHandler.
See Quick Start for the full example.
Customize which controls are visible with setCommands. See Player Setup.