Initialize once in your root onMount. Works with Svelte 4 and Svelte 5 runes.
The vanilla SDK fits Svelte's no-virtual-DOM model perfectly. Boot it from your root component's onMount and the widget lives outside Svelte's reactivity entirely.
npm install @usero/sdk<script lang='ts'>
import { onMount } from 'svelte'
import { initUseroFeedbackWidget } from '@usero/sdk'
onMount(() => {
const widget = initUseroFeedbackWidget({ clientId: 'YOUR_CLIENT_ID' })
return () => widget.destroy()
})
</script>
<slot />Replace YOUR_CLIENT_ID with the id from your Usero dashboard.
Built for Svelte
The vanilla SDK is plain JavaScript. Svelte 4, Svelte 5 with runes, and SvelteKit all consume the same package.
The widget renders into its own DOM root, so component updates and store changes never trigger a widget re-render.
~12kb gzipped is small compared to typical Svelte page weights, and it is shared across every route.
Returning a teardown from onMount means hot reloads do not leak triggers into the DOM.
Productboard expects a full embed page. Usero is a 12kb script that sits on top of your existing UI.
FAQ
Yes. The widget does not interact with Svelte reactivity at all, so $state and runes are unaffected.
There is no Svelte-specific wrapper because the vanilla SDK is already idiomatic. One import, one function call.
Use the SvelteKit guide. For pure Svelte (vite-svelte) there is no SSR concern.
Yes. Pass a theme object with your brand colors when initializing.
Free tier. No credit card. Two-minute install. Cancel by deleting two lines of code.
Install guides