See which features people love and which they hate, at the feature level, without running a survey.
Per-feature feedback, in five lines of JSX.
"Checkout button: 78% positive (412 reactions, 14 comments, +9 pts week-over-week)." That's a pulse. Wrap a region of your UI with <OpiniPulse> and you get 👍 / 👎 chips, scoped comments, and a sentiment headline on the dashboard — without polluting your triage inbox.
import { OpiniPulse, OpiniReactions, OpiniComment } from "@opini-dev/react"
<OpiniPulse name="checkout-button" projectKey="pk_live_xxx">
<button>Buy now</button>
<OpiniReactions />
<OpiniComment placeholder="Tell us why" />
</OpiniPulse>First reaction with a new name auto-registers the pulse. No dashboard setup before shipping.
One tool, one inbox, one source of truth for product signal.
PostHog Surveys, Hotjar, and Sprig give you reaction widgets. Opini gives you reactions that roll up into the same triage / board / umbrella system your free-text feedback already lives in. A 👎 on the checkout button isn't a number in a separate analytics dashboard — it's tagged on the same feedback row your team is already triaging, threaded into the umbrella you're already shipping against, and visible in the search palette alongside everything else.
Three roles, one primitive.
A/B a redesign and watch sentiment move on the chip in near-real-time — no week-long debrief loop.
Ship a feature flag, see if reactions skew negative the day rollout hits, roll back before the inbox fills.
No-code pulses — tag a CSS selector in the dashboard, no JSX required.
For teams whose product surface is gated by a separate sprint from the Opini integration. Drop a selector (#buy-now), pick a label, and reactions attach client-side without a code change. v1.0 ships JSX-first; the no-code path lands in v1.1.