Overview
Idle wiggle is a timing pattern, not a mascot or empty-state domain. A short transform burst is followed by a long rest so the object asks for attention without constant motion. The rest period is as important as the wiggle itself: without it, the pattern becomes noise instead of a soft nudge.
When to use it
Use it for non-critical reminders, empty states, onboarding affordances, retry hints, and small affordances that may otherwise be missed. It is strongest when the user is idle or scanning, not actively typing or reading. Avoid it near text input, reading flows, high-frequency dashboards, or anything that might be mistaken for an error shake.
How it works
A single keyframe holds the neutral state for most of its duration, then runs a small rotate or translate burst around a tuned transform-origin. The transform origin should match the object: a hanging tag pivots from the top, a card might lift from center, and a small icon can use a scale pulse.
Production gotchas
Low amplitude matters. Large wiggles feel like errors or shake feedback, and constant loops become irritating quickly. Keep controls in the inspector tied to amplitude, rest length, and origin only if they visibly affect the loop; otherwise the UI implies configurability that the animation does not actually have.
Accessibility
The wiggle is decorative feedback. The same message or action needs visible text, a reachable control, or a clear state outside the motion. Reduced motion should freeze the object while preserving any call to action, and the loop should stop once the user has acted or dismissed the nudge.
References
Implementation depth
Idle wiggle is a feedback timing pattern: a short low-amplitude burst followed by a long quiet rest. The useful mechanic is the duty cycle, not the object being wiggled, so the same expression can support empty states, reminders, and soft nudges.
Do not run constant attention motion near primary reading or form entry. Keep the transform origin natural, make the wiggle opt-in for non-critical surfaces, and freeze the object under reduced motion while keeping any message or call to action visible.
A good wiggle spends more time resting than moving. If the loop is always active, users learn to ignore it or read it as an error state; the delay ratio is part of the design, not just timing polish.
Tie the motion to lifecycle. Stop the wiggle after the user interacts, dismisses the nudge, or resolves the empty state so the animation does not keep asking for attention after it has served its purpose.