@remotion/media: Prevent MediaPlayer reinit on Sequence durationInFrames change#6914
Merged
JonnyBurger merged 1 commit intomainfrom Mar 26, 2026
Merged
Conversation
… changes When a parent <Sequence>'s durationInFrames changes, videoConfig.durationInFrames updates via SequenceContext, which was triggering full MediaPlayer dispose+recreate causing a visible blink in preview. Since useCommonEffects already handles durationInFrames updates via mediaPlayer.setDurationInFrames(), the constructor only needs the initial value. Use a ref for the initial value (consistent with trimAfter, trimBefore, playbackRate, etc.) and remove from the useEffect dep array. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Contributor
|
Reviewed PR #6914 — approved. The fix correctly aligns Task list (5/5 completed)
![]() |
@remotion/media: Prevent MediaPlayer reinit on Sequence durationInFrames change
Contributor
There was a problem hiding this comment.
Correct fix. useCommonEffects already handles runtime durationInFrames updates via setDurationInFrames() in a useLayoutEffect, so the full MediaPlayer reinit was unnecessary. The ref pattern is consistent with how trimBefore, trimAfter, playbackRate, and the other constructor-only values are already handled.
Big Pickle (free) | 𝕏
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
<Sequence>'sdurationInFrameschanges,videoConfig.durationInFrames(derived fromSequenceContext) was in theuseEffectdependency array that creates theMediaPlayerinstance, causing a full dispose + recreate and a visible blink in previewuseCommonEffectsalready handlesdurationInFramesupdates viamediaPlayer.setDurationInFrames()in auseLayoutEffect, so full reinit is unnecessaryinitialDurationInFrames) for the constructor's initial value (consistent withtrimAfter,trimBefore,playbackRate, etc.) and removevideoConfig.durationInFramesfrom theuseEffectdep arrayVideoForPreviewAssertedShowingandAudioForPreviewAssertedShowingTest plan
<Sequence>durationInFrames—<Video>should update smoothly without blinkingsetDurationInFrames()inuseCommonEffectskeeps MediaPlayer in sync after duration changes🤖 Generated with Claude Code