Rage clicks

A rage click is a burst of rapid clicks on the same spot. It usually means a visitor expected something to happen and it did not.

How Replayowl detects them

A burst counts as one rage click when all of these hold:

  • At least 3 clicks.
  • Each click comes within 0.5 seconds of the previous one.
  • The whole burst fits within 2 seconds.
  • Every click lands within 32 pixels of the first.

The rule is in src/shared/analyze.ts and runs the same way on the server, for search, and in the player, for the timeline. A burst that spans two uploads is still caught.

Double-clicks to select a word do not count, since they are only two clicks.

What usually causes them

  • Something looks clickable but is not. A product image, a card, an underlined heading.
  • The click works but nothing visible happens. The cart updates off screen, or a request is slow and there is no loading state.
  • An error. The button’s handler threw. In Replayowl, look for a red diamond on the timeline near the rage click; the console panel shows the stack trace.
  • Layout shift. The button moved just as the visitor clicked, and they keep trying.
  • Disabled controls with no explanation. A submit button that stays disabled until a hidden field is valid.

Finding them

In the Replayowl dashboard, filter the session list by Rage clicks. Combine it with a page filter, such as /checkout, to focus on the pages that matter most. In a replay, rage clicks are red dots on the timeline, and the cursor shows a red ripple at the spot.

Over the API: GET /api/sessions?rage=1&url=/checkout.

Try it

In the live demo, click one spot in the shop three or four times quickly, then press Replay. You will see the red dot on the timeline.