DETERMINISTIC MOTION
No per-frame mutation
The renderer computes transforms without writing coordinates back into your Signal.
CANVAS · PARTICLES
Particle fields
Build animated atmospheres from independent retained commands whose position and opacity derive from one monotonic clock.
DETERMINISTIC MOTION
No per-frame mutation
The renderer computes transforms without writing coordinates back into your Signal.
ADVANCED EXAMPLE
Mix velocity, pulse, opacity, and z-order
Each particle has its own speed and pulse frequency. The central rule and title draw last, so moving circles always travel underneath the label.
signal particles value:[
{ type:"circle" x:30 y:40 radius:9 fill:"primary" opacity:0.7 motion:{ vx:22 vy:14 pulse:0.7 wrap:true } },
{ type:"circle" x:220 y:90 radius:7 fill:"tertiary" opacity:0.8 motion:{ vx:-28 vy:20 pulse:1.2 wrap:true } },
{ type:"text" x:320 y:188 text:"MOTION FIELD" fill:"surfaceText" size:26 align:"center" },
]
Canvas scene:particles viewWidth:640 viewHeight:360 fps:60 label:"Animated particle field" w:"full" h:96TIMING
Animation honors user and app state
Monotonic time
Velocity uses elapsed seconds, so dropped frames do not slow the scene.
Reduced motion
A reduced-motion preference freezes every command at elapsed time zero.
Route lifecycle
Frame callbacks stop when the Canvas route leaves the active view.
STATIC PREVIEW
Freeze the same scene at time zero
Set autoplay:false for deterministic posters, snapshots, or compositions that reuse motion-ready scene data without starting a frame timeline.