Repository navigation
fix: treat Vue useIds as generated and leave old trackers' form-field clicks out of frustration_by_page - #1125
izadoesdev wants to merge 2 commits into
Conversation
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)
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
The latest updates on your projects. Learn more about Unkey Deploy
|
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
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. Comment |
Observability score · 31poor · unchanged against 1 instrumented · 0 partial · 8 dark Fix first (3)
evlog map v0.8.0 · how the score works · what each check expects |
|
| 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, |
There was a problem hiding this comment.
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):')))`; |
There was a problem hiding this comment.
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.
What
Two follow-ups from the post-deploy check of tracker v10.
useIdvalues (v-0-1, also as the tail of Reka ids likereka-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.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:
select:sizeand it drops out of the top three;/products/black-teegoes from 3% to 1% dead clicks, withbutton:unnamedas the top target instead of the dropdown./mplx/buydead 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-cdnapproval. The AI change ships with the API from main.Summary by cubic
Tracks Vue and Reka
useIdvalues as generated names and keeps old trackers' form-field clicks out of thefrustration_by_pagequery.useIdvalues (v-0-1) and Reka ids ending in them are no longer used as click labels, sobutton:reka-dropdown-menu-trigger-v-0-1becomesbutton:unnamed; ids that only mention a version, likepricing-v2-toggle, keep their name.frustration_by_pageignores rage and dead clicks whose target is a native form field (select:,textarea:,label:, andinput:other than button-like types). Only trackers older than October 2026 record those, and they skew rates and top targets.tracker-cdnapproval; the AI change ships with the API from main.Written for commit b6876d6. Summary will update on new commits.