System gestures are decided before the app sees touch events
Aliases: system preemption · swallowed touches · compositor claim
What it is
Edge back, home-indicator swipe, status-bar pulldown and their cousins are classified by the window server or a system recognizer before the app process sees the touch. The app cannot turn them off “first” in touchesBegan. Priority is an architectural seat, not a rule an in-app recognizer order can rewrite.
Why it happens
Touches enter the system compositor first. When a system-gesture hotspot and shape match, events are claimed or copied to the system; the app gets a delayed, truncated, or empty stream. That keeps back and home alive in every app, including a frozen one. The cost is that the app is powerless over the same motion: a left-edge swipe may be system back or an app drawer, and the app does not know if it will get a chance until the system gives up. “We never saw began” in a debug log is often this layer, not a business-logic bug.
Studying it
On overlaps of system and app hotspots, align system logs with app logs and mark the system-claim frame versus the app’s first frame. Compare system-success / app-success / both-fail. Do not instrument only inside the app—that treats system-eaten gestures as “the user did nothing.”
Where it stops holding
Mice, keyboards, and external trackpads may skip this gate. A web page sits behind the browser’s own gestures as well. An app granted full-screen exclusivity (some kiosk or game modes) may see the system yield the edges, but that is the system allowing it, not the app intercepting. This leaf is “the app cannot block”; it is not how to request an exemption.
Applying it
- Keep critical app gestures out of system hotspots, or move them to a motion that is not system-shaped.
- Do not write “if this is back, cancel the system” in
began—that branch never runs. - Swipe from the left edge: if the system went back and the app log has no began, treat that as expected and change layout, not interception.
Related
- Same group: C3.31.2 Opting out of a system gesture is an explicit declaration users may not know about · C3.31.3 Priority rules move with OS versions and can break old apps · C3.31.4 Ties should keep the user’s way out
- Adjacent: C3.13 Edge swipe gestures · C3.16 Swipe up to close and home
- Search:
system gesture·event preemption·window server