Timeline playback lags in the editor when keyed objects are inside a Layout (state machine and ru...
Version: Rive Desktop (BETA 0.9.479), Windows 11
Playing a timeline in the editor is choppy when the animated objects sit inside a LayoutComponent. The same timeline plays smoothly in the state machine, and runtime cost barely changes (CLI bench: ~0.9 ms vs ~0.6 ms per advance).
Setup: One artboard with a background “panorama”: about 50 nodes keyed (x/y/opacity) in long timelines, and about 160 data binds inside (colors and text). It was a plain Node and played smoothly. After my AI agent wrapped it in layouts (fill, bottom-center) for responsive screens, every timeline that includes it started to lag in the editor.
What I’ve tested:
Hiding the layout (eye icon) does not help. Deleting the panorama (this whole object), or deleting many of its bound fields, makes playback smoother.
Removing the only new data bind (margin bottom) from previous file version does not help.
Moving the opacity keys from the layout to a plain group above it does not help.
→ Moving the keyed nodes out of the layout fixes it completely.
I did a workaround, so the keyed content lives in a plain group outside the layouts. A Translation Constraint follows an empty anchor node placed inside the layout, so the content still moves with the layout.
Is this expected? It looks like keyed children inside a layout make the editor recompute the layout and data binds of the whole subtree on every frame during timeline playback.
---> I’ve shared my file if that helps (privately). To make lag, play timeline “screen34” , added screen recording and cannot add fixed .rev bcs od 25MB limit.
Additionally - switching tabs and bind values mode are extremely laggy as well.
Also I bound marginBottom of a few layouts’ styles to a ViewModel number via the Rive MCP (my agent did it). The binds work: changing the value moves the layouts in the editor, and also in a CLI render with --data=. They also show up in listDataBinds. But the inspector’s Padding / Margin panel shows no bind marker for them, and I cannot find them literally anywhere, so they’re impossible to find or edit from the UI. Binds on other properties show normally.