diff --git a/src/YouTube.js b/src/YouTube.js
index d928093..552201a 100644
--- a/src/YouTube.js
+++ b/src/YouTube.js
@@ -54,7 +54,9 @@ function filterResetOptions(opts) {
* @param {Object} props
*/
function shouldResetPlayer(prevProps, props) {
- return !isEqual(filterResetOptions(prevProps.opts), filterResetOptions(props.opts));
+ return (
+ prevProps.videoId !== props.videoId || !isEqual(filterResetOptions(prevProps.opts), filterResetOptions(props.opts))
+ );
}
/**
diff --git a/src/Youtube.test.js b/src/Youtube.test.js
index c14ba8b..0454c2e 100644
--- a/src/Youtube.test.js
+++ b/src/Youtube.test.js
@@ -129,6 +129,43 @@ describe('YouTube', () => {
// player is destroyed & rebound, despite the changes
expect(playerMock.destroy).toHaveBeenCalled();
+ // and the video is updated
+ expect(playerMock.loadVideoById).toHaveBeenCalled();
+ });
+
+ it('should not create and bind a new YouTube player when only playerVars.autoplay, playerVars.start, or playerVars.end change', () => {
+ const { rerender } = render(
+ ,
+ );
+
+ rerender(
+ ,
+ );
+
+ // player is destroyed & rebound, despite the changes
+ expect(playerMock.destroy).not.toHaveBeenCalled();
// instead only the video is updated
expect(playerMock.loadVideoById).toHaveBeenCalled();
});