Skip to Content
v0.8.0 · shippedNative iOS / Android / Flutter / Capacitor SDKs, A2A discovery, SOC 2 readiness, residency, BYO storage, BYOK. Read the changelog →
Migration guidesLogRocket Feedback → Mushi

LogRocket Feedback → Mushi

Hours Low risk

LogRocket bundles session replay and bug feedback in one SDK. This guide moves the feedback widget to Mushi while you keep LogRocket for session replay (or migrate replay separately later — that’s not Mushi’s job).

You can run both SDKs side by side indefinitely. LogRocket records the session; Mushi captures the user’s report. Mushi can attach a LogRocket session URL to every report via metadata, so triagers get one-click access to the replay.

Why switch (the feedback piece)

  • Replay-coexistence by design. LogRocket’s strength is session replay; its bug-feedback widget is a thin add-on. Mushi is feedback-first with a Shadow-DOM widget that doesn’t interfere with replay.
  • AI triage. Mushi’s two-stage classifier and judge loop turn raw reports into triaged tickets without a human pass.
  • Self-host. Mushi runs on Supabase / your own Postgres; LogRocket is SaaS-only.
  • Privacy. Mushi’s capture is localized (one report at a time, on user trigger). LogRocket records continuously by default — even after switching the feedback widget, you’ll still want LogRocket’s privacy controls.

API mapping

LogRocketMushi
LogRocket.init('app/id')Mushi.init({ projectId, apiKey }) (mounted separately)
LogRocket.identify(uid, traits)Mushi.setUser({ id: uid, ...traits })
LogRocket.captureMessage(msg)Submit a report via the widget OR Mushi.report({ description: msg })
LogRocket.captureException(err)Mushi.report({ description: err.message }) (or hook into your error boundary)
LogRocket.track(name, props)Mushi.setMetadata({ lastEvent: name, ...props })
<FeedbackButton /> (React)<MushiProvider> widget OR your own button calling mushi.openWidget()
LogRocket.sessionURLAttach as metadata on Mushi reports — see below

Linking LogRocket session URLs into Mushi reports

This is the killer recipe — every Mushi report includes a one-click “Open session in LogRocket” link, so triagers can watch the replay without leaving the Mushi dashboard.

import LogRocket from 'logrocket' import { Mushi } from '@mushi-mushi/web' LogRocket.init('your-app/id') Mushi.init({ projectId: 'YOUR_PROJECT_ID', apiKey: 'YOUR_PUBLIC_KEY' }) LogRocket.getSessionURL((sessionUrl) => { Mushi.setMetadata({ logrocketSession: sessionUrl }) }) LogRocket.identify('user-42', { email: 'jane@example.com' }) Mushi.setUser({ id: 'user-42', email: 'jane@example.com' })

Now every Mushi report carries the LogRocket session URL in its metadata. In the admin console, the metadata viewer renders it as a clickable link.

Migration checklist

Migration checklist
8 required steps
  1. Step 01
    Create a Mushi project
  2. Step 02
    Install Mushi alongside LogRocket
  3. Step 03
    Mount Mushi (LogRocket stays as-is)
  4. Step 04
    Wire LogRocket session URL into Mushi metadata
  5. Step 05
    Mirror LogRocket.identify into Mushi.setUser
  6. Step 06
    Disable the LogRocket feedback widget
  7. Step 07
    Update internal runbooks
  8. Step 08
    Submit a test report and verify the LogRocket link works

Feature parity (feedback only — replay is its own product)

CapabilityLogRocket FeedbackMushi
User-triggered report widget
Screenshot capture✅ (web)
Console + network capture✅ (also covers replay)
AI triage
Self-host
Open source
Session replay❌ — keep LogRocket
Heatmaps
Funnels / analytics

The takeaway: Mushi replaces the feedback widget, not the replay. Keep LogRocket for what it’s best at; use Mushi where bug capture benefits from AI triage + open source + self-host.

References

Last updated on