Feel · Invisible details
Responsive gestures

Responsive gestures

“Truly fluid gestures are immediately responsive.” That sentence from Rauno Freiberg’s Invisible Details of Interaction Design is the whole of this section; the rest is what it rules out. A gesture can have an explicit trigger threshold, as the last section showed, but that does not mean the interface may simply play an animation from 0 to 1 once the threshold is crossed. track the finger from the first millimetre.

His example is pinching a card. A naive implementation would do nothing until some threshold and then zoom the card in, all at once. Rauno is fair to it: pinching an adequate amount and getting the animation does not feel exactly broken. But the interface gives zero affordance, and zero confidence, that the card is pinchable at all when you move more slowly, and the gesture is not satisfying to perform. The better version applies the scale delta immediately, so the card grows under your fingers from the start, and then performs the animation once the threshold is passed. The first part is feedback; the second is the commit.

He finds the counterexample inside iOS itself. Navigating Settings does not feel as responsive as the App Switcher. A layer slides in from the right, which correctly tells you it can be dismissed by swiping left. But if you mistap and immediately swipe back, the animation does not interrupt. You have to wait for it to finish. Compare that with the App Switcher, where, as the previous section showed, you can drag, reverse, and peek freely. Same platform, same gesture vocabulary, and a noticeable difference in how much the interface listens.

Emil Kowalski makes the same demand of pointer interfaces. In Train Your Judgement he compares two sidebar hover highlights: one fades in smoothly and looks more polished, and one is instant. Move the mouse quickly and the smooth version trails behind the cursor, “always one step behind.” The instant version tracks the pointer perfectly: “There’s no delay between your intention and the interface’s response.” Rauno’s pinch and Emil’s hover are the same lesson on two input devices. Feedback that arrives after the threshold is not feedback; it is a result.

Which raises the point Rauno makes in his Scrolling section: the input device is part of the gesture. On most operating systems you can scroll any scrollable region even when its window is not active, which is great until another window scrolls by accident. With the Magic Mouse, he can scroll one window, move the pointer over a second window to click or find something, and the scroll events do not register on the second window. Scrolling is cancelled explicitly, by focusing another window. With a traditional mouse like the Logitech MX Master 3, the first window’s scroll is cancelled and hijacked by the second, and he finds it frustrating when it happens daily. The Magic Trackpad and Magic Mouse also unlock direct manipulation on the desktop: beyond swiping between apps, you can directly manipulate a slider by scrolling over it, in a single interaction.

For your own work the rule splits into two habits. First, wire the continuous part of a gesture to the continuous part of the input: scale follows the pinch distance, offset follows the drag, opacity follows the scroll, before any threshold logic runs. Second, make every in-flight animation interruptible by the gesture that started it, so a mistap costs one reversed motion rather than a wait. The Settings back-swipe shows how small the failure can be and still be felt.