A step-by-step guide to building a SwiftUI GestureButton that handles multiple complex gestures (press, release inside/outside, long press, hold/repeat, double tap, drag start/change/end) using a single DragGesture. The approach uses a GeometryReader as an overlay to avoid layout issues, date-based timing for long press and double tap detection, and a RepeatGestureTimer for hold-press repeating actions. The resulting component is added to the open-source SwiftUIKit library.