React Router 7

Feedback widget
for React Router 7.

Framework mode or library mode. Works in loaders, layouts, and root routes.

Drop the widget into your root route so it persists across navigations. The component is render-safe under React Router 7 framework mode (formerly Remix) and library mode.

~12kb
gzipped
0
config
MIT
license
Install2 steps
> ~ install· bash
npm install @usero/sdk
> app/root.tsx· tsx
import { Outlet, Scripts, ScrollRestoration } from 'react-router'
import { UseroFeedbackWidget } from '@usero/sdk/react'

export default function Root() {
  return (
    <html lang='en'>
      <body>
        <Outlet />
        <UseroFeedbackWidget clientId='YOUR_CLIENT_ID' />
        <ScrollRestoration />
        <Scripts />
      </body>
    </html>
  )
}

Replace YOUR_CLIENT_ID with the id from your Usero dashboard.

Built for React Router 7

Why teams shipping with React Router 7 pick Usero.

Framework mode or library mode

Works under react-router dev (SSR + hydration) and in pure client-side React Router apps.

Stays mounted across loaders

Placed in root.tsx, the widget keeps its state through every loader, action, and navigation.

No clientLoader needed

The widget is a leaf component, so it does not need a clientLoader or hydrateFallback to render.

Cloudflare Workers compatible

No Node-only APIs. The widget renders the same on Workers, Vercel, Netlify, and self-hosted Node.

Frill ships an iframe that loses state on every soft navigation. Usero stays mounted across React Router transitions.
vs Frill iframe

FAQ

Quick answers, React Router 7 edition.

Does it work with React Router 7 framework mode?

Yes. Mount it inside the <body> of your root.tsx, alongside <Outlet />, <ScrollRestoration />, and <Scripts />.

What about library mode (createBrowserRouter)?

Render the widget anywhere outside <RouterProvider />, or inside a root layout route. Either works.

Will it cause hydration mismatches with SSR?

No. The trigger renders identically on server and client. Hydration is a no-op.

How does it interact with loaders and actions?

It does not. The widget has its own POST to /api/feedback at usero.io, separate from your React Router data flow.

Ship a feedback widget in your React Router 7 app today.

Free tier. No credit card. Two-minute install. Cancel by deleting two lines of code.

Get started free