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: AddpreservePitchto change speed without changing pitch by @alec-watts in #12350remotion: Show notice in<HtmlInCanvas>when not supported instead of crash by @JonnyBurger in #12421remotion: Fix memory leak when replacing<Sequence>children by @alec-watts in #12291remotion: Fix retention of replaced components and callbacks by @JonnyBurger in #12462remotion: Fix Studio sequence prop resubscriptions when seeking by @JonnyBurger in #12401remotion: Speed up sequentialspring()calculations by @JonnyBurger in #12516remotion: Speed upinterpolateColors()by reusing color matchers by @JonnyBurger in #12525remotion: Speed upEasing.ease()evaluations by @JonnyBurger in #12527remotion: Skip unused premount frame subscriptions by @JonnyBurger in #12531remotion: Skip unchangedSequencelayout wrapper renders by @JonnyBurger in #12533remotion: Avoid redundantHtml5Audiovolume 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 upgetNodes()for large compositions by @JonnyBurger in #12486@remotion/codemods: Speed upupdateMultipleNodeProps()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 updeleteNodes()andduplicateNodes()for large selections by @JonnyBurger in #12502@remotion/codemods: Speed upupdateMultipleNodeProps()andreorderNodes()for large selections by @JonnyBurger in #12503@remotion/google-fonts: Add font faces todocument.fontsin 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/serverlessand@remotion/serverless-clientby @JonnyBurger in #12426@remotion/lambda: Generate default output key whenoutName.keyis 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 invalidateWebhookSignature()by @DeryFerd in #12454@remotion/lambda-php: AddWebhookSignature::validate()by @DeryFerd in #12415@remotion/lambda-ruby: Addvalidate_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 incutPath()by @serdarucel in #12410@remotion/player: Fix audio anchor shifts whendurationInFrameschanges by @Plastic-time in #12395@remotion/renderer: HonorpreservePitch={false}in server-side HTML5/Offthread rendering by @xsalaices in #11777@remotion/renderer: Keep the decimal part ofconcurrencypercentages 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 forHEADrequests 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: PreventTransitionSeriesremounts at transition boundaries by @JonnyBurger in #12397@remotion/web-renderer: FixrenderMediaOnWeb()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: AddlongShadows()for directional shadows by @JonnyBurger in #12458
Elements
- Redesign catalog layout by @samohovets in #12455
- Simplify third-party library browsing by @samohovets in #12422
- Link sidebar categories to catalog sections by @samohovets in #12394
- Buffer spinning globe until loaded by @samohovets in #12424
- Match globe preview background to other elements by @JonnyBurger in ac4a127eaa
- Fix catalog spacing and redundant heading in iframe mode by @samohovets in #12536
Templates
- Element Library: Add authoring lint rules by @samohovets in #12428
Docs
- Move Element authoring guides into a dedicated section by @samohovets in #12453
- Explain why there is no Remotion app by @JonnyBurger in 8115099fb9
- Link the SDK webhook helpers from the webhook pages by @DeryFerd in #12420
- Link Element Library template from integration guide by @samohovets in #12425
- Scope Element entrance and exit guidance to overlays by @samohovets in #12429
- Terms: Merge client-side and server-side into just Renders by @JonnyBurger in #12441
- Clarify free and company licensing above pricing by @JonnyBurger in 476e3bc99e
- Keep customer counts consistent across website pages by @samohovets in #12534
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