Nuxt 3

Feedback widget
for Nuxt 3.

Client-only plugin. SSR-safe, auto-imported, works with Nitro.

Nuxt's plugin system makes this a single file. Mark the plugin client-only so it never runs during SSR, then auto-import handles the rest. Compatible with Nuxt 3 and Nuxt 4.

~12kb
gzipped
0
config
MIT
license
Install2 steps
> ~ install· bash
npm install @usero/sdk
> plugins/usero.client.ts· ts
import { initUseroFeedbackWidget } from '@usero/sdk'

export default defineNuxtPlugin(() => {
  const widget = initUseroFeedbackWidget({
    clientId: 'YOUR_CLIENT_ID',
  })

  if (import.meta.hot) {
    import.meta.hot.dispose(() => widget.destroy())
  }
})

Replace YOUR_CLIENT_ID with the id from your Usero dashboard.

Built for Nuxt 3

Why teams shipping with Nuxt 3 pick Usero.

SSR-safe via .client.ts

The plugin filename suffix tells Nuxt to skip it during SSR. Server bundles stay free of widget code.

Auto-imported

No registration step. Drop the file into plugins/ and Nuxt picks it up.

Survives HMR

The widget tears down cleanly during hot reload so you do not pile up triggers in dev.

Works with Nitro presets

Cloudflare, Vercel, Netlify, Bun. The widget runs only in the browser, so the server target does not matter.

Canny ships a Vue module that adds a runtime config requirement. Usero is one client plugin, no config file changes.
vs Canny Vue module

FAQ

Quick answers, Nuxt 3 edition.

Will this run during SSR?

No. The .client.ts filename tells Nuxt to bundle the plugin for the browser only. SSR pages render without it.

Where does the widget appear?

At the end of document.body, outside your Nuxt app root. It is unaffected by page transitions.

Does it work with Nuxt UI or Tailwind?

Yes. The widget has its own scoped styles. It does not pick up your Tailwind classes or design tokens unless you pass a theme.

What about useState and persisted store data?

Pass metadata: { userId: useUser().value?.id } when initializing the widget after login.

Ship a feedback widget in your Nuxt 3 app today.

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

Get started free