From 93ca4f9712b591f5186df90a5456e9870f8c66f2 Mon Sep 17 00:00:00 2001 From: James Skarzinskas Date: Sat, 13 Dec 2025 06:49:57 +0200 Subject: [PATCH 1/4] feat: allow some common setting props to optionally remain uncontrolled --- src/Player.tsx | 15 +++++++++++---- src/props.ts | 4 ---- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/Player.tsx b/src/Player.tsx index c88fab27..3cd87608 100644 --- a/src/Player.tsx +++ b/src/Player.tsx @@ -10,7 +10,7 @@ type Player = React.ForwardRefExoticComponent< >; const Player: Player = React.forwardRef((props, ref) => { - const { playing, pip } = props; + const { playing, pip, playbackRate, volume, muted, src } = props; const Player = props.activePlayer; const playerRef = useRef(null); @@ -27,9 +27,16 @@ const Player: Player = React.forwardRef((props, ref) => { playerRef.current.pause(); } - playerRef.current.playbackRate = props.playbackRate ?? 1; - playerRef.current.volume = props.volume ?? 1; - }); + if (playbackRate !== undefined && playerRef.current.playbackRate !== playbackRate) { + playerRef.current.playbackRate = playbackRate; + } + if (volume !== undefined && playerRef.current.volume !== volume) { + playerRef.current.volume = volume; + } + if (muted !== undefined && playerRef.current.muted !== muted) { + playerRef.current.muted = muted; + } + }, [muted, playbackRate, playing, src, volume]); useEffect(() => { if (!playerRef.current || !globalThis.document) return; diff --git a/src/props.ts b/src/props.ts index ec93c019..2602ec90 100644 --- a/src/props.ts +++ b/src/props.ts @@ -16,10 +16,6 @@ export const defaultProps: ReactPlayerProps = { width: '320px', height: '180px', - // native video props - volume: 1, - playbackRate: 1, - // custom props // playing: undefined, // pip: false, From 13d1ca456ff9f35b0f53c8469d0f6244bbf69c9a Mon Sep 17 00:00:00 2001 From: James Skarzinskas Date: Sat, 13 Dec 2025 06:59:14 +0200 Subject: [PATCH 2/4] fix: remove unnecessary effect dep --- src/Player.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Player.tsx b/src/Player.tsx index 3cd87608..3148074a 100644 --- a/src/Player.tsx +++ b/src/Player.tsx @@ -36,7 +36,7 @@ const Player: Player = React.forwardRef((props, ref) => { if (muted !== undefined && playerRef.current.muted !== muted) { playerRef.current.muted = muted; } - }, [muted, playbackRate, playing, src, volume]); + }, [muted, playbackRate, playing, volume]); useEffect(() => { if (!playerRef.current || !globalThis.document) return; From 5af2ac14d6e00d72ca0fa1e0589acfe1cc4bfe6c Mon Sep 17 00:00:00 2001 From: James Skarzinskas Date: Sat, 13 Dec 2025 07:01:29 +0200 Subject: [PATCH 3/4] style: consistent formatting --- src/Player.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Player.tsx b/src/Player.tsx index 3148074a..64d9fec8 100644 --- a/src/Player.tsx +++ b/src/Player.tsx @@ -30,9 +30,11 @@ const Player: Player = React.forwardRef((props, ref) => { if (playbackRate !== undefined && playerRef.current.playbackRate !== playbackRate) { playerRef.current.playbackRate = playbackRate; } + if (volume !== undefined && playerRef.current.volume !== volume) { playerRef.current.volume = volume; } + if (muted !== undefined && playerRef.current.muted !== muted) { playerRef.current.muted = muted; } From b7346bb13fd566f6b2acc067fc0f1fd13a9888d1 Mon Sep 17 00:00:00 2001 From: James Skarzinskas Date: Sat, 13 Dec 2025 07:02:09 +0200 Subject: [PATCH 4/4] style: consistent formatting --- src/Player.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Player.tsx b/src/Player.tsx index 64d9fec8..b1923166 100644 --- a/src/Player.tsx +++ b/src/Player.tsx @@ -23,6 +23,7 @@ const Player: Player = React.forwardRef((props, ref) => { if (playerRef.current.paused && playing === true) { playerRef.current.play(); } + if (!playerRef.current.paused && playing === false) { playerRef.current.pause(); }