Skip to content

Skills: Optimize Studio timeline keyframe rendering - #10055

Merged
JonnyBurger merged 4 commits into
mainfrom
codex/optimize-timeline-keyframe-rendering
Aug 2, 2026
Merged

Skills: Optimize Studio timeline keyframe rendering#10055
JonnyBurger merged 4 commits into
mainfrom
codex/optimize-timeline-keyframe-rendering

Conversation

@JonnyBurger

@JonnyBurger JonnyBurger commented Aug 2, 2026

Copy link
Copy Markdown
Member

Summary

  • memoize the timeline easing line visual to avoid unchanged child renders
  • read the current frame imperatively when constructing temporary drag keyframes
  • stop rebuilding expanded keyframe rows and selectable timeline items on every playback frame
  • replace interaction-only frame subscriptions in keyframe deletion, outline dragging, timeline shortcuts, clipboard handling, and asset drops
  • add the internal /studio-perf skill documenting when timeline position reads can safely be imperative

Validation

  • 23 focused Studio tests covering keyframes, easing selection, splitting, and clipboard data
  • bunx turbo run make lint --filter=@remotion/studio
  • bun run build
  • bun run stylecheck
  • /studio-perf skill validation

@vercel

vercel Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
bugs Ready Ready Preview Aug 2, 2026 8:52am
remotion Ready Ready Preview Aug 2, 2026 8:52am

Request Review

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes one optimization pass across the timeline rendering pipeline:

  • Memoized TimelineKeyframeEasingLineVisual — wraps the simple presentational component in React.memo to skip re-renders when its selected prop hasn't changed.
  • Replaced reactive useTimelinePosition() with imperative getCurrentFrame() in selectableItems (TimelineSelectableItemsProvider) and nodeKeyframes (useExpandedTrackKeyframeRows) — removes the playback-position dependency from two useMemo blocks that were previously recomputing on every frame change during playback.

Pullfrog  | View workflow run | Using DeepSeek Pro (free via Pullfrog for OSS) (Claude Opus not used — the program covers this model; add its provider key to run your pick) | 𝕏

@JonnyBurger JonnyBurger changed the title @remotion/studio: Optimize timeline keyframe rendering Skills: Optimize Studio timeline keyframe rendering Aug 2, 2026
@JonnyBurger
JonnyBurger merged commit 44562ef into main Aug 2, 2026
18 checks passed
@JonnyBurger
JonnyBurger deleted the codex/optimize-timeline-keyframe-rendering branch August 2, 2026 08:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant