For React

User frustration monitoring for
React apps.

FrictaSolv detects rage clicks, dead clicks from stale or unbound event handlers, failed fetch/XHR calls, and slow renders in React apps. It works through a single script tag with no component instrumentation, no hooks to add, and no provider to wrap your tree.

Why React sites need frustration monitoring

React's render model creates failure modes that look fine in code review but break for users: a handler lost to an incorrect key, a button clickable before hydration finishes, a fetch that rejects without a visible error state. These produce no console error and no crash — just a user who clicks and gets nothing.

FrictaSolv observes the rendered DOM and network layer, so it catches these regardless of how your components are structured or which state library you use.

What FrictaSolv catches on React

Stale event handlers

A re-render with an incorrect key drops the click handler; the button still renders but no longer responds.

Pre-hydration clicks

Server-rendered markup is interactive-looking before client JS hydrates — clicks in that window are silently lost.

Unhandled fetch rejections

A failed data fetch leaves the UI in a loading or empty state with no error surfaced to the user.

Slow renders

Expensive re-renders or large lists block interaction; users tap repeatedly while the main thread is busy.

Installing on React

Add the script tag to your root HTML (e.g. index.html, or the document head in Next.js/Remix). No npm package, no provider, no per-component instrumentation.

<script src="https://api.frictasolv.com/solv.js" data-api-key="YOUR_API_KEY"></script>

Related monitoring

Frequently asked questions

Do I need to wrap my app in a provider or add hooks?
No. FrictaSolv is framework-agnostic — it attaches to the document, not your component tree. There's nothing to import, no provider, and no hooks to add.
How does it detect dead clicks in React?
After each click it watches for DOM mutations, navigation, and state-driven changes within a short window. If nothing changes, the click is flagged dead — which reliably catches stale handlers and pre-hydration clicks.
Does it work with Next.js, Remix, or Vite?
Yes. Anywhere you can place a script tag in the document head, FrictaSolv works — including Next.js, Remix, Vite, and Create React App.
Will it affect my bundle size?
No. It's loaded as an external async script, not bundled with your app, so it adds zero bytes to your JavaScript bundle.

See the friction on your React site.

Free tier. No credit card. Install in under 2 minutes.

Start Monitoring Free →