Quick answer: Construct 3 multi-finger pinch gesture events arriving in wrong order? Browser fires touchmove per finger; order varies - sort by touch ID before processing.

Two-finger zoom: zoom factor wrong because finger updates out of order.

Sort by touch ID

Process events in ID order. Consistent regardless of browser dispatch.

Or use combined gesture state

Track active touches; compute pinch from snapshot. Order-independent.

Use Pinch behavior

Construct 3's built-in handles ordering. Less custom code.

“Browser event order is undefined. Snapshot is safer.”

If you build gestures from scratch, the snapshot pattern is the standard. Document.

Related reading