Skip to content

fix: treat Vue useIds as generated and leave old trackers' form-field clicks out of frustration_by_page - #1125

Open
izadoesdev wants to merge 2 commits into
mainfrom
izadoesdev/frustration-followups-release
Open

izadoesdev wants to merge 2 commits into
mainfrom
izadoesdev/frustration-followups-release

Conversation

@izadoesdev

@izadoesdev izadoesdev commented Oct 11, 2026 •

Copy link
Copy Markdown
Member

What

Two follow-ups from the post-deploy check of tracker v10.

  • Tracker: Vue useId values (v-0-1, also as the tail of Reka ids like reka-dropdown-menu-trigger-v-0-1) are treated as generated, so they no longer become click labels. Ids that only mention a version (pricing-v2-toggle) keep their name.
  • AI frustration_by_page: rage and dead clicks whose target is a native form field (select:, textarea:, label:, input: other than button-like types) are left out of the rates and top targets. Only trackers older than October 2026 record those, and they keep running for days in long-lived tabs and caches.

Why

The v10 check found Reka trigger ids as labels (button:reka-dropdown-menu-trigger-v-#-#). Old trackers still send form-field dead clicks, which skewed frustration rankings: on one store a size dropdown (select:size) topped the list.

Evidence

Old vs new query, read-only on prod for 2026-10-04 to 2026-10-11:

  • baggyclothing: the top page's frustration came from select:size and it drops out of the top three; /products/black-tee goes from 3% to 1% dead clicks, with button:unnamed as the top target instead of the dropdown.
  • coinstash: /mplx/buy dead click rate goes from 83.3% to 66.7%.

Local: tracker unit 86; interaction and privacy specs on Chromium and WebKit 190; AI query tests 980; tsc clean for tracker and AI.

After merge

Deploy Tracker waits for tracker-cdn approval. The AI change ships with the API from main.


Summary by cubic

Tracks Vue and Reka useId values as generated names and keeps old trackers' form-field clicks out of the frustration_by_page query.

  • Vue's useId values (v-0-1) and Reka ids ending in them are no longer used as click labels, so button:reka-dropdown-menu-trigger-v-0-1 becomes button:unnamed; ids that only mention a version, like pricing-v2-toggle, keep their name.
  • frustration_by_page ignores rage and dead clicks whose target is a native form field (select:, textarea:, label:, and input: other than button-like types). Only trackers older than October 2026 record those, and they skew rates and top targets.
  • The Tracker deployment waits for tracker-cdn approval; the AI change ships with the API from main.

Written for commit b6876d6. Summary will update on new commits.

View guided diff Turn on auto-fix

Reka components on Vue sites showed up as labels like
button:reka-dropdown-menu-trigger-v-#-#.

(cherry picked from commit a138aac)
…page

Trackers older than October 2026 still run in long-lived tabs and caches
and count focusing a field or opening a select as a dead or rage click, so
a size dropdown could top a store's frustration ranking.

(cherry picked from commit 15c2872)
@vercel

vercel Bot commented Oct 11, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
databuddy-status Ready Ready Preview Oct 11, 2026 3:14pm UTC
documentation Ready Ready Preview Oct 11, 2026 3:14pm UTC
1 Skipped Deployment
Project Deployment Actions Updated
dashboard Skipped Skipped Oct 11, 2026 3:14pm UTC

@unkey-deploy

unkey-deploy Bot commented Oct 11, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Unkey Deploy

Name Status Preview Inspect Updated (UTC)
links (preview) Ready Visit Preview Inspect Oct 11, 2026 3:13pm

@vercel
vercel Bot temporarily deployed to Preview – dashboard October 11, 2026 15:13 Inactive
@coderabbitai

coderabbitai Bot commented Oct 11, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: ad2200d4-381d-4cac-98f1-ce0ce21794f0

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

Observability score · 31

poor · unchanged against main · no regression

1 instrumented · 0 partial · 8 dark

Fix first (3)

evlog map v0.8.0 · how the score works · what each check expects

@greptile-apps

greptile-apps Bot commented Oct 11, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 4/5

[Medium impact] Adjusts frustration metrics to exclude old tracker form-field clicks.

Fix the rate calculation before merging; it can hide real button failures in page views that end with a form-field click.

Findings

  1. P1 Last click hides earlier failures ▶
  2. P2 Input buttons lose their failures ▶

Summary

This PR hides Vue/Reka-generated click labels and removes old form-field targets from frustration_by_page.

  • Vue-generated ids no longer become click labels.
  • Older trackers’ form-field clicks no longer shape page frustration results.

Reviews (1) · Last reviewed commit: "fix(ai): leave old trackers' form-field ..." · Reviewed by Greptile

Comment on lines +63 to +64
ROUND(100 * countIf(rage_click_count > 0 AND NOT ${isOldTrackerFormField("rage_click_target")}) / COUNT(*), 1) as rage_click_rate,
ROUND(100 * countIf(dead_click_count > 0 AND NOT ${isOldTrackerFormField("dead_click_target")}) / COUNT(*), 1) as dead_click_rate,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Last click hides earlier failures

The new rate filters use the last target to decide whether any valid failure happened during the page view. An older tracker can record a dead click on a broken button, then one on select:size, leaving dead_click_count = 2 and dead_click_target = 'select:size'. The query now excludes that page view from the rate, hiding the real button failure. Rage clicks have the same problem.

The stored target cannot support exact per-click filtering. Avoid presenting this approximation as the share of page views with a valid frustration event.

import type { SimpleQueryConfig } from "../types";

const isOldTrackerFormField = (column: string) =>
`(match(${column}, '^(select|textarea|label):') OR (startsWith(${column}, 'input:') AND NOT match(${column}, '^input:(button|submit|reset|image):')))`;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Input buttons lose their failures

The button-input exception only accepts lowercase native types, but describeTarget uses the raw type attribute or the element's role. A valid <input type="SUBMIT"> can produce input:SUBMIT:unnamed; a button input with role="switch" produces input:switch:unnamed. Both can record frustration events, but this filter removes them from the rates and top targets.

Account for these emitted forms when deciding which inputs to exclude.

This branch was successfully deployed

3 active and 1 inactive deployments
Preview – documentation — b6876d6f Deployed Oct 11, 2026 by vercel[bot]
Preview – databuddy-status — b6876d6f Deployed Oct 11, 2026 by vercel[bot]
Preview – dashboard — b6876d6f Deployed Oct 11, 2026 by vercel[bot]
links - preview — b6876d6f Deployed Oct 11, 2026 by unkey-deploy[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant