Spring curves do not suit frequently triggered motion
Aliases: overshoot · spring curve · elastic bounce
What it is
A spring curve overshoots and oscillates after arrival before it comes to rest. The first time can look good, because it performs mass. Bind the same curve to a control that fires in bursts — like, toggle, stepper — and each rebound fights the next input for position. Springs fail at high frequency not because the look went out of fashion, but because the oscillation period collides with the inter-trigger gap.
Why it happens
A second-order system takes longer to settle than to first reach the target. Overshoot sends the hit region through the target on both sides, so pointing either waits out the ring-down or lands on a momentarily wrong coordinate. Trigger again before the rebound finishes and the new spring starts from a mid-state with leftover velocity; phases add and the object beats against itself.
A large, one-shot object (a panel opened for the first time) can afford one overshoot: the loop already contains a pause, and the oscillation happens once. Small, high-frequency objects cannot: the inter-trigger gap is often shorter than settling time, so the curve’s “character” becomes ongoing disturbance. This is not the same as queueing several clips — even if each trigger interrupts the last, a spring mid-state still carries velocity, and the interrupt itself throws an extra flick.
Studying it
On a repeatedly tappable control, compare decelerating arrival with spring overshoot. Independent variables: inter-trigger interval, damping ratio, overshoot amplitude. Dependent variables: success rate of rapid taps, positional variance between taps, reports of “still wobbling.” A spectrum of post-tap position should show a decaying oscillation if the spring is visible.
Report whether triggers come from the user or from a staggered list entrance: staggered springs turn oscillation into a chorus and interfere more than a single clip.
Where it stops holding
- One-shot success feedback, or snap-back after a drag release, can keep a spring’s physicality if nothing fires again for a few seconds.
- An over-damped spring approaches ordinary deceleration and the high-frequency harm drops; the harmful case is under-damped, visible rebound.
- Under reduced motion, drop the spring entirely. Do not keep overshoot at a shorter duration — short-and-wobbly is worse than short-and-still.
Applying it
- Keep springs for release snap-back, first-time display and rare success feedback. Toggles, likes, list rows and steppers want overshoot-free deceleration.
- If a spring must stay, raise damping until rebound is invisible, or refuse the next trigger until settled.
- Check: tap ten times at the product’s real burst rate and watch whether the object oscillates around the target. If it is still moving, that curve should not be bound to that control.