Clicks & taps

Every click on web, every tap on React Native, captured with the element and position.

What's captured

FieldExample
Target element pathbody > main > form > button.primary
Element text"Buy now"
Position{ x: 412, y: 280 }
Timestamp1700000000000
Button / fingerleft on web, touch index on RN
Rage click flagtrue if 3+ clicks in the same spot within 1s

On web

Automatic. The SDK attaches a global click listener at init and captures every bubbling click. Use captureClicks: false to turn off — but you rarely want to, since clicks are the core replay signal.

<GalachaProvider projectKey="..." captureClicks={false} />

On React Native

Automatic as long as your tree is wrapped in <TouchCaptureView>:

import Galacha, { TouchCaptureView } from "@galacha/react-native";
 
<TouchCaptureView buffer={Galacha.getBuffer()!}>
  <App />
</TouchCaptureView>

Without the wrapper, you still get screen frames, but taps and swipes won't render in the replay.

Rage clicks

If a user clicks the same spot 3 or more times within 1 second, the SDK emits a rage_click event in addition to the individual clicks. Rage clicks show up as red markers in the dashboard timeline — classic signal of a broken button.

Rendering in the replay

The dashboard overlays a purple ripple at the click position, synced to the timeline. On RN with <TouchCaptureView>, swipes render as fading purple strokes with direction arrows. See Touch trails for the detailed behavior.

Privacy

Clicks on elements inside a <PrivateBlock> are captured as positions but with no element text. You see where the user clicked, not what they clicked. Full masking: wrap in <PrivateBlock block> — the element is dropped from the DOM snapshot entirely, so the click event has no target path.

Related