github remotion-dev/remotion v4.0.538

5 hours ago

What's Changed

Many performance improvements in the Studio!

  • @remotion/studio: Preserve pitch when changing playback speed by @JonnyBurger in #12423
  • Upgrade Mediabunny to 1.62.0 by @JonnyBurger in #12450
  • @remotion/media: Add preservePitch to change speed without changing pitch by @alec-watts in #12350
  • remotion: Show notice in <HtmlInCanvas> when not supported instead of crash by @JonnyBurger in #12421
  • remotion: Fix memory leak when replacing <Sequence> children by @alec-watts in #12291
  • remotion: Fix retention of replaced components and callbacks by @JonnyBurger in #12462
  • remotion: Fix Studio sequence prop resubscriptions when seeking by @JonnyBurger in #12401
  • remotion: Speed up sequential spring() calculations by @JonnyBurger in #12516
  • remotion: Speed up interpolateColors() by reusing color matchers by @JonnyBurger in #12525
  • remotion: Speed up Easing.ease() evaluations by @JonnyBurger in #12527
  • remotion: Skip unused premount frame subscriptions by @JonnyBurger in #12531
  • remotion: Skip unchanged Sequence layout wrapper renders by @JonnyBurger in #12533
  • remotion: Avoid redundant Html5Audio volume evaluations by @JonnyBurger in #12535
  • @remotion/agent-plugin: Publish on every release by @JonnyBurger in #12459
  • @remotion/bundler: Avoid repeated sorting while scanning public assets by @JonnyBurger in #12481
  • @remotion/codemods: Speed up getNodes() for large compositions by @JonnyBurger in #12486
  • @remotion/codemods: Speed up updateMultipleNodeProps() for large selections by @JonnyBurger in #12489
  • @remotion/codemods: Skip unnecessary scope lookups for numeric props by @JonnyBurger in #12492
  • @remotion/codemods: Speed up bulk nonnumeric property edits by @JonnyBurger in #12497
  • @remotion/codemods: Speed up deleteNodes() and duplicateNodes() for large selections by @JonnyBurger in #12502
  • @remotion/codemods: Speed up updateMultipleNodeProps() and reorderNodes() for large selections by @JonnyBurger in #12503
  • @remotion/google-fonts: Add font faces to document.fonts in a deterministic order by @serdarucel in #12443
  • @remotion/google-fonts: Share the loader across ESM entry points by @alec-watts in #12476
  • @remotion/lambda: Remove @remotion/serverless and @remotion/serverless-client by @JonnyBurger in #12426
  • @remotion/lambda: Generate default output key when outName.key is omitted by @smartcalsystems-sketch in #12399
  • @remotion/lambda: Don't fail a render when a retried stream replays an artifact by @parbhatkapila4 in #12452
  • @remotion/lambda-client: Accept the raw request body in validateWebhookSignature() by @DeryFerd in #12454
  • @remotion/lambda-php: Add WebhookSignature::validate() by @DeryFerd in #12415
  • @remotion/lambda-ruby: Add validate_webhook_signature() by @DeryFerd in #12396
  • @remotion/media: Fix extra GOP decoded when seeking to fractional MP4 keyframes by @JonnyBurger in #12348
  • @remotion/media: Fix memory growth during audio playback by @alec-watts in #12409
  • @remotion/media: Fix automatic audio selection when the preferred track cannot decode by @alec-watts in #12433
  • @remotion/media: Fix audio decoding errors being replaced by timeouts in web renders by @alec-watts in #12434
  • @remotion/media: Close extracted video frames on parallel audio failures by @alec-watts in #12435
  • @remotion/media: Preserve audio and video decode failure details by @alec-watts in #12437
  • @remotion/media-utils: Fix audio data hooks timing out on errors in web renders by @JonnyBurger in #12442
  • @remotion/paths: Cut cubic curves at the requested arc length in cutPath() by @serdarucel in #12410
  • @remotion/player: Fix audio anchor shifts when durationInFrames changes by @Plastic-time in #12395
  • @remotion/renderer: Honor preservePitch={false} in server-side HTML5/Offthread rendering by @xsalaices in #11777
  • @remotion/renderer: Keep the decimal part of concurrency percentages by @serdarucel in #12417
  • @remotion/renderer: Reject two artifacts with the same filename on the same frame by @parbhatkapila4 in #12446
  • @remotion/studio: Stack timeline layer and asset names by @JonnyBurger in #12520
  • @remotion/studio: Persist timeline waveforms and thumbnails across reloads by @JonnyBurger in #12413
  • @remotion/studio: Show selected item type in inspector title by @JonnyBurger in #12430
  • @remotion/studio: Show the tab close button only on hover by @andriidrok1 in #12398
  • @remotion/studio: Restore the persisted playback rate after a reload by @signalzero-dev in #12418
  • @remotion/studio: Disable child canvas selection while rotating a parent by @JonnyBurger in #12416
  • @remotion/studio: Show error details with syntax colors ready by @JonnyBurger in #12495
  • @remotion/studio: Position context menus relative to the cursor by @JonnyBurger in ec5b00614e
  • @remotion/studio: Align UV coordinate values with numeric fields by @JonnyBurger in f73de38e71
  • @remotion/studio: Fix playback slowdown with many selected or expanded layers by @JonnyBurger in #12456
  • @remotion/studio: Reduce timeline zoom rendering work by @JonnyBurger in #12407
  • @remotion/studio: Reduce timeline work during playback and Series dragging by @JonnyBurger in #12465
  • @remotion/studio: Reduce selection outline work during playback by @JonnyBurger in #12469
  • @remotion/studio: Reduce inspector and timeline re-renders during playback by @JonnyBurger in #12471
  • @remotion/studio: Only rerender edited elements when saving prop changes by @JonnyBurger in #12472
  • @remotion/studio: Speed up canvas outlines and long transition timelines by @JonnyBurger in #12474
  • @remotion/studio: Speed up source remapping when editing large compositions by @JonnyBurger in #12482
  • @remotion/studio: Skip volume curve sampling for offscreen timeline clips by @JonnyBurger in #12488
  • @remotion/studio: Avoid repeated track scans when inspecting multiple sequences by @JonnyBurger in #12490
  • @remotion/studio: Avoid rerendering unchanged source subscribers by @JonnyBurger in #12493
  • @remotion/studio: Avoid repeated scans when selecting many timeline items by @JonnyBurger in #12496
  • @remotion/studio: Avoid repeated scans for timeline selection highlights by @JonnyBurger in #12501
  • @remotion/studio: Reduce memory used by large timeline selections by @JonnyBurger in #12504
  • @remotion/studio: Speed up multi-selection inspector previews by @JonnyBurger in #12506
  • @remotion/studio: Speed up timing edits across large selections by @JonnyBurger in #12509
  • @remotion/studio: Speed up selecting many timeline rows by @JonnyBurger in #12510
  • @remotion/studio: Speed up moving and trimming large clip selections by @JonnyBurger in #12511
  • @remotion/studio: Speed up source updates for compositions with many keyframes by @JonnyBurger in #12512
  • @remotion/studio: Speed up canvas controls for large selections by @JonnyBurger in #12513
  • @remotion/studio: Skip unchanged easing editor renders during playback by @JonnyBurger in #12515
  • @remotion/studio: Skip static effect value renders during playback by @JonnyBurger in #12518
  • @remotion/studio-server: Speed up source lookups for large compositions by @JonnyBurger in #12475
  • @remotion/studio-server: Read source files once per subscription batch by @JonnyBurger in #12477
  • @remotion/studio-server: Reduce stalls when importing many assets by @JonnyBurger in #12478
  • @remotion/studio-server: Avoid scanning JSX siblings during source-path lookups by @JonnyBurger in #12479
  • @remotion/studio-server: Skip file streaming for HEAD requests by @JonnyBurger in #12480
  • @remotion/studio-server: Avoid repeated parsing for multi-file Visual Mode subscriptions by @JonnyBurger in #12483
  • @remotion/studio-server: Speed up bulk keyframe deletion by @JonnyBurger in #12485
  • @remotion/studio-server: Release media streams when requests are cancelled by @JonnyBurger in #12487
  • @remotion/studio-server: Speed up bulk effect edits in large source files by @JonnyBurger in #12491
  • @remotion/studio-server: Bound memory used by cached request URLs by @JonnyBurger in #12494
  • @remotion/studio-server: Skip redundant timing binding analysis by @JonnyBurger in #12499
  • @remotion/studio-server: Reduce time to save bulk effect edits by @JonnyBurger in #12505
  • @remotion/studio-server: Speed up adding keyframes in large compositions by @JonnyBurger in #12507
  • @remotion/studio-server: Release file watchers when undo history is discarded by @JonnyBurger in #12508
  • @remotion/studio-server: Speed up reading keyframed properties in large compositions by @JonnyBurger in #12526
  • @remotion/studio-server: Speed up effect keyframe updates in large compositions by @JonnyBurger in #12532
  • @remotion/timeline-utils: Speed up cached timeline filmstrip filling by @JonnyBurger in #12484
  • @remotion/transitions: Prevent TransitionSeries remounts at transition boundaries by @JonnyBurger in #12397
  • @remotion/web-renderer: Fix renderMediaOnWeb() rejecting before output stream closes by @alec-watts in #12408
  • @remotion/web-renderer: Cancel pending native paint waits by @alec-watts in #12432
  • @remotion/web-renderer: Allow muted video preview with unsupported audio by @alec-watts in #12436
  • @remotion/effects: Add longShadows() for directional shadows by @JonnyBurger in #12458

Elements

Templates

Docs

Internal and Experimental

  • @remotion/studio-protocol: Simplify protocol validation and parsing by @samohovets in #12405
  • @remotion/promo-pages: Fix license animation contrast in dark mode by @samohovets in #12528
  • @remotion/promo-pages: Change homepage customer count to 800 by @samohovets in #12529
  • Homepage: Add parameterization, AI, captions, Effects, Transitions and Color Correction videos by @JonnyBurger in 26dcaf372e
  • Canvas Capture: Bound buffers to the selected area and hide clear selection button while recording by @JonnyBurger in de277907df
  • Upgrade native compiler to TypeScript 7.1 beta by @JonnyBurger in #12445
  • Catch mixed render scopes with ESLint by @JonnyBurger in #12444
  • Reduce local docs build concurrency by @samohovets in #12402
  • CI: Pin the third-party actions by commit, scope the workflow tokens and drop persisted checkout credentials by @Totara-thib in #12315
  • Skills: Keep frame subscriptions local in Remotion markup by @JonnyBurger in #12403
  • Bump vite from 6.4.3 to 6.4.4 in /packages/webcodecs by @dependabot in #12451
  • Bump vite from 7.3.6 to 7.3.7 in /packages/canvas-capture-extension by @dependabot in #12463
  • Bump @modelcontextprotocol/sdk from 1.31.0 to 1.32.0 in /packages/mcp by @dependabot in #12464

Full Changelog: v4.0.537...v4.0.538

Don't miss a new remotion release

NewReleases is sending notifications on new releases.