Quick answer: Unity Input System reusing a touch ID for a different finger? OS-level touch IDs recycle quickly - bind gestures to the touch instance, not the ID.

Two-finger zoom: finger 1 releases; finger 3 starts and gets finger 1's ID; zoom logic incorrectly continues.

Track touch start time

Each touch's first-seen timestamp. ID + timestamp uniquely identifies; recycling has a new timestamp.

Or use TouchControl

InputSystem's TouchControl provides phase. Began/Stationary/Moved distinguish; recycle = new Began.

Validate gesture state per frame

If gesture's tracked touches no longer all exist, invalidate. Recovery from edge case.

“Touch IDs are not unique forever. Tracking needs uniqueness elsewhere.”

If your touch handling assumes ID = identity, the recycle bug is hidden. Defensive code is the cure.

Related reading