← Recipe: replay declarative motion

6. Understand the boundaries

luastra/motion · stable UI identity · about 15 minutes
state → render descriptor → host scheduler → final presentation

Motion remains an optional presentation layer over deterministic layout and semantic content.

When to use it

Read this before adding route entrances, feedback motion, or ambient effects.

  • Supported channels are opacity, translateX, translateY, scaleX, scaleY, rotationDeg, and rotationYDeg.
  • Use Motion.tween for one channel, Motion.sequence for ordered Tween/Wait steps, and a named preset when it already fits.
  • Use Timer only when elapsed time must change application state; never use it to drive animation frames.
  • Layout is calculated at the final position. Translation, scale, and rotation do not repair spacing or reserve new bounds.
  • Avoid continuous motion by default. If it is useful, keep it sparse, stop it when inactive, and preserve the same meaning with motion reduced.

Complete inventory

View all pages in Recipe: replay declarative motion
← Previous: 5. Check and run