Skip to content

[Epic] Capture events for Dead Clicks #48259

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Tracked by #45664
bruno-garcia opened this issue May 1, 2023 · 10 comments
Closed
Tracked by #45664

[Epic] Capture events for Dead Clicks #48259

bruno-garcia opened this issue May 1, 2023 · 10 comments
Assignees

Comments

@bruno-garcia
Copy link
Member

bruno-garcia commented May 1, 2023

The goal is to capture an event if a user Click results in no UI change. Giving the impression that the site is broken.

Some considerations:

  • If the button becomes greyed out, there's a DOM mutation change and no detection happens
  • If an HTTP request happens as a result of the click, its latency could be a driver to the issue detection if the UI doesn't have a spinner

This was one of the identified potential Replay Issues:

@cmanallen
Copy link
Member

cmanallen commented May 11, 2023

Update 05/11/23:

  1. Primary SDK work is coming to a close.
    • A schema has been defined (@billyvg may tweak it slightly).
    • Configuration has been added for tuning slowClick capture.
  2. There is some ancillary work being done around breadcrumb throttling and route parameterization that is relevant to this task.
  3. Back end has a logging pull request open so we can analyze the types of slow clicks we receive in production environments.
  4. One area of concern is fingerprinting. What's the best method?
    • URLs aren't reliable since javascript SPAs often don't update their URL to match the page they're on.
    • HTML attributes like #id aren't perfect either since they require developer discipline.
    • The current thinking is to use the nested path div > span > a along with select attributes on the deepest element.
    • This may include text-content. TBD from analysis of the data.

cc: @bruno-garcia @jas-kas

@billyvg
Copy link
Member

billyvg commented May 11, 2023

URLs are also hard because of "dynamic" routes, e.g. IDs, slugs

@cmanallen
Copy link
Member

Update 05/22/23:

  • We are logging dead click events with plans to refine the behavior.
  • Currently waiting on Ops to provision infrastructure for analytical analysis.
  • Decision reached on Replay Issue RFC. We will be creating issues on the back-end.

@bruno-garcia
Copy link
Member Author

@bruno-garcia
Copy link
Member Author

An update from @billyvg

I took a look through a few "dead clicks" they seem to fall into the following categories:

@ryan953
Copy link
Member

ryan953 commented May 31, 2023

We should also look at cases where an invisible div or something is covering your button.

In this case the "Discussion" and "Shipped" buttons are covered:

SCR-20230531-hnfr

elementsFromPoint() might be a way to identify when a div is clicked, was there a button or <a> the real target?

document.getElementsByTagName('body')[0].addEventListener('click', e => {
  const {pageX, pageY} = e;
  console.log(document.elementsFromPoint(pageX, pageY));
});

cmanallen added a commit that referenced this issue Jun 2, 2023
Adds the new slow click replay issue type.

Related: #48259
cmanallen added a commit that referenced this issue Jun 5, 2023
Adds experimental support for creating Replay issues on the
issues-platform. The first issue type is "slow click" and will be
available for Sentry org only. Slow clicks issues are only created for
`timeout` endReasons on `a` and `button` tags.

Depends on: #50148
Related: #48259
@cmanallen
Copy link
Member

Related: #50345

@bruno-garcia
Copy link
Member Author

A lot of dead clicks found so far are false positives or interesting UX issue but not something we'd be alerting on. We'll further dig into Rage Click as an additional insight into these clicks. And reduce some of the false positives:

@cmanallen
Copy link
Member

Update 06/08/23:

  • We've stopped creating dead click issues internally. We're going to scale back our ambitions for now while we log dead click events and refine the dead click detection algorithm.
    • Proposed alternatives have been: indexing dead/rage clicks so they're searchable on the replays index page with a "misery index" score for sorting the output.
  • Customers who have already upgraded to the dead click detecting SDK will detect too many false positives. We will be ignoring these SDKs during dead click ingestion.
    • An SDK upgrade will be required to re-enable dead click detection.

@bruno-garcia
Copy link
Member Author

We continue to detect Dead Clicks in the forms of Breadcrumbs. But we're not at this point creating issues and alerting folks on it. The reason is that even though many of these Dead Clicks are valuable insight, for the most part they can be UX issues , many are false positives hard/impossible to filter out (browser download) so we don't believe are strong enough signal to noise ratio to deserve alerting and managing issue workflows through.

The team will pursue more opportunities to benefit from the Dead Clicks such as allowing search by Replays with Dead Clicks, List of Replays with Dead Clicks for triaging, etc.

We're also further looking into Rage Clicks and the relationship between Rage Clicks and Dead Clicks in search for great signal/noise ratio in order to create issues in Sentry.

@github-actions github-actions bot locked and limited conversation to collaborators Jul 1, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

5 participants