UX signals, not vanity metrics
Your analytics saw the drop. Friction shows the break.
Dead clicks, rage clicks, abandoned forms, and user feedback — the signals that tell you where your UX is failing before revenue makes it obvious.
“Add to Cart” button
↑ 34%1 script tag · No cookies · No session replays · 2 min setup1 script tag · No cookies · 2 min setup
“Add to Cart” button
↑ 34%Checkout form
↑ 2.4דCan't find pricing anywhere”
Search results
NewPrioritised by repeated behaviour, not pageviews.
From “something dropped” to “this is broken”
Your dashboard says a number moved. Friction shows the exact field, button, or message that caused it.
Your analytics
Checkout conversion
↓ 18%
Last 7 days
Something changed. The cause is still unclear.
Friction signal
Postcode field
Users type a postcode, get “Invalid format”, retry twice, then leave.
Seen across 214 sessions this week, mostly on mobile.
Your analytics
Checkout conversion
↓ 18%
Last 7 days
Something changed. The cause is still unclear.
Friction signal
Postcode field
Users type a postcode, get “Invalid format”, retry twice, then leave.
Seen across 214 sessions this week, mostly on mobile.
One script tag. Two minutes.
Paste Friction before your closing </body> tag. No config, no build step, no replay setup.
npm i @friction-dev/reactNo cookies. No replays. No keystrokes.
Signals start appearing as users hit broken interactions.
Start free. Upgrade when the issues are worth fixing.
Free is not a trial. Stay on it until Friction is finding enough to matter.
Free
For seeing what Friction catches on one site.
£0/mo
- 1 site
- 1,000 events/mo
- 50 feedback messages/mo
- 7-day retention
Pro
Most teams start hereFor production sites where broken UX costs money.
£12/mo
- 5 sites
- 100,000 events/mo
- 500 feedback messages/mo
- 30-day retention
- AI issue briefs
- Weekly digest
- Email alerts
Still guessing what broke?
Dead clicks, abandoned forms, and feedback you never saw.
Friction catches them with one script tag.