SaySift

Add a Feedback Widget to Your React App in 5 Minutes

July 20, 2026

There's no npm install step here, and that's deliberate — the SaySift widget is a single <script> tag that works the same way in React, Vue, or a plain HTML page. Here's the fastest way to wire it into a React app.

The script tag

Grab your public key from your project's setup page, then add this once, anywhere it'll render on every page (your root layout component, or public/index.html if you're on Create React App):

<script
  src="https://saysift.com/widget/feedback-widget.js"
  data-project-key="YOUR_PUBLIC_KEY"
  data-locale="auto"
></script>

If you're using Vite or CRA and want it loaded via React instead of the static HTML file, drop it into a useEffect in your root component:

useEffect(() => {
  const script = document.createElement("script");
  script.src = "https://saysift.com/widget/feedback-widget.js";
  script.dataset.projectKey = "YOUR_PUBLIC_KEY";
  document.body.appendChild(script);
}, []);

Either way, this adds a compact feedback tab fixed to the edge of the screen. No component library, no CSS to import, nothing to keep in sync with your build.

Opening it from your own UI

If you'd rather trigger the widget from an existing button instead of the default edge tab, add data-launcher="inline" to the script tag and call the global API:

<button onClick={() => window.SaySift.open({ type: "idea" })}>
  Send feedback
</button>

SaySift.open() accepts an optional type (bug, idea, question, general), a pre-filled title, and a context object for extra metadata — useful if you want to tag which part of your React app the feedback came from.

Attaching the logged-in user

If your app has auth, call SaySift.identify() once the user's session is known (e.g. after your auth provider resolves) so submissions carry their identity:

window.SaySift.identify({
  externalId: user.id,
  traits: { name: user.name, plan: user.plan },
});

That's the whole integration — one script tag, optionally one identify() call. Full configuration options and the complete JavaScript API are in the widget documentation.

For the Next.js-specific version of this (App Router considerations, next/script), see Next.js Feedback Widget Integration.

Start for free — no credit card required.

Confirm action

This action cannot be undone.