After some discussion, we landed on implementing the following logic/behavior for slow/rage click detection in Replay:

- Clicks generate
ui.click breadcrumbs immediately
- these are debounced by 1s, so any further click on the same element within 1s does not generate a further
ui.click breadcrumb!
- Whenever a
ui.click breadcrumb is captured, we start looking for 7s for a) further clicks on the same element and b) if the click is a slow click
- After 7s...
- if no mutation happened in the meanwhile, we create a
ui.slowClickDetected breadcrumb with a clickCount counting all clicks on the same element in the last 7s
- if a mutation happened and more than 1 click in total happened in the last 7s on the element, we create a
ui.multiClick breadcrumb with the clickCount
- If only this one click happened, we create no more breadcrumbs
This means that:
- We always get slow/multi click breadcrumbs after 7s, never before. This means we may loose some, but this is worth it to us so we have better data.
- We count all clicks that happened in the 7s period. The idea is, that if a slow click happens, then after 3s the user starts rage clicking on the same button - we can detect this by seeing that this slow click had a lot of clicks in this 7s.
- There may still be false positives, think a
continue button that is clicked a few times in 7s because the user is moving forward fast - but this we can figure out eventually.
One thing to note is that the ui.slowClick / ui.multiClick breadcrumbs will be created with the same timestamp & message as the original ui.click breadcrumb.
After some discussion, we landed on implementing the following logic/behavior for slow/rage click detection in Replay:
ui.clickbreadcrumbs immediatelyui.clickbreadcrumb!ui.clickbreadcrumb is captured, we start looking for 7s for a) further clicks on the same element and b) if the click is a slow clickui.slowClickDetectedbreadcrumb with aclickCountcounting all clicks on the same element in the last 7sui.multiClickbreadcrumb with theclickCountThis means that:
continuebutton that is clicked a few times in 7s because the user is moving forward fast - but this we can figure out eventually.One thing to note is that the
ui.slowClick/ui.multiClickbreadcrumbs will be created with the same timestamp & message as the originalui.clickbreadcrumb.