Recreated prompt — Tested Product UI morph — one shape, many states
by MotionPrompts (own run)
Prompt
Banned list ✓Beat grid ✓Build method ✓Self-review ✓
<direction>
A 10-second UI motion piece for a habit tracker app. One rounded shape, never cut: it morphs through button, loader, music player, slider, toggle, chart, toast, changing size, radius and fill while its inner marks swap with a short blur. Light warm-grey canvas, black and white components, one accent: orange. One spring-like curve everywhere, tiny overshoot at most. The last frame equals the first, so it loops.
Banned: bouncy easing, particle bursts, glows, gradients on chrome, mismatched strokes, dead time.
</direction>
<structure>
One change per beat at 120 BPM. A simple cursor dot drives each change with a click pulse. The chart state draws itself left to right; the final morph returns to the starting button.
</structure>
<build>
One HyperFrames composition, 1080x1080 square, every frame computed from time. Morphs are width/height/radius tweens on a single element — no cuts, no hidden swaps except the blurred content change. Render at 30fps.
</build>
<gotchas>
If the shape's radius animates on a different spring than its size, corners wobble — drive both from the same tween. Keep the cursor ahead of the morph, never inside it.
</gotchas>
Videos like this circulate with no prompt at all, or a single line. We rebuilt the prompt from the video's behaviour and tested it — the render above is ours.
Run log
| Model | Claude (agent build) |
| Renderer / stack | HyperFrames + GSAP |
| Iterations to final | 2 |
| Render time | 33s (final render) |
| Format | 1080×1080 · square |
| Published | 2026-10-25 |
What broke (and the fix)
- The opening button rendered EMPTY in the first render: the button's own later fade-in (a GSAP fromTo) applied its starting opacity at build time and hid the first state. Fixed with immediateRender: false on every content fade — after that, the loop's first and last frames match exactly.
- The linter flagged the repeated cursor-pulse fromTo tweens for the same reason; the pulse now always returns to a fixed resting scale of 1.
Related videos