Skip to content

Commit cb2151d

Browse files
cursor[bot]cursoragentraymondjacobson
authored
Fix mobile playback state listener leak in AudioPlayer (#13849)
Move `TrackPlayer` PlaybackState listener registration into a managed `useEffect` with cleanup so we don't leak listeners on each render during playback. This prevents callback fan-out that can cause crashes/restarts when the app is backgrounded. <p><a href="https://cursor.com/agents/bc-3c64bc2f-8593-4852-9da8-b992eb1c95f8"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a href="https://cursor.com/automations/c63aa103-66df-4558-b31d-675358e5c6a1"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/view-automation-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/view-automation-light.png"><img alt="View Automation" width="141" height="28" src="https://cursor.com/assets/images/view-automation-dark.png"></picture></a>&nbsp;</p> Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Ray Jacobson <raymondjacobson@users.noreply.github.com>
1 parent fd529f3 commit cb2151d

1 file changed

Lines changed: 10 additions & 1 deletion

File tree

packages/mobile/src/components/audio/AudioPlayer.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -593,7 +593,16 @@ export const AudioPlayer = () => {
593593
}
594594
}, [])
595595

596-
TrackPlayer.addEventListener(Event.PlaybackState, handlePlayerStateChange)
596+
useEffect(() => {
597+
const subscription = TrackPlayer.addEventListener(
598+
Event.PlaybackState,
599+
handlePlayerStateChange
600+
)
601+
602+
return () => {
603+
subscription.remove()
604+
}
605+
}, [handlePlayerStateChange])
597606

598607
// Seek handler
599608
useEffect(() => {

0 commit comments

Comments
 (0)