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 guidesInstabug (Luciq) → Mushi

Instabug (Luciq) → Mushi

Hours Low risk

Instabug rebranded to Luciq in 2026. The legacy instabug-reactnative package is archived and points users at luciq-reactnative-sdk. This guide maps both names — pick whichever your app currently uses.

This is a low-risk swap because both products solve the same shape of problem (in-app bug capture) and use very similar config. Most apps land the cutover in an afternoon, including a beta validation pass.

Why switch

  • Pricing. Mushi is open source; Luciq is per-seat enterprise.
  • AI triage. Mushi ships a built-in two-stage classifier (fast-filter + classify-report) that turns raw user reports into triaged tickets without manual review. Luciq’s “Agentic AI” is a recent add-on.
  • Self-host. Mushi can self-host on Supabase / your own Postgres; Luciq is SaaS-only.
  • No vendor rebrand whiplash. You own the bug-capture surface.

API mapping

Instabug / LuciqMushi
Instabug.start(token, [...invocationEvents])Mushi.init({ projectId, apiKey, ... })
Luciq.init({ token })Mushi.init({ projectId, apiKey })
Instabug.show() / Luciq.show()Mushi.openWidget()
Instabug.identifyUser(email, name)Mushi.setUser({ id, email, name })
Instabug.setUserAttribute(k, v)Mushi.setMetadata({ [k]: v })
Instabug.addCustomLog(log)Captured automatically; or Mushi.captureLog(log)
invocationEvents: [InvocationEvent.shake]widget: { trigger: 'shake' }
invocationEvents: [InvocationEvent.floatingButton]widget: { trigger: 'button' }
setReproStepsConfig(...)Captured automatically (console + network + navigation)
Crash reportingStays where it is. Mushi composes with Sentry/Crashlytics; we don’t replace them.

Before / After

Web

// BEFORE — Instabug Web import * as Instabug from 'instabug' Instabug.start('YOUR_TOKEN', { invocationEvents: ['shake', 'floatingButton'] }) Instabug.identifyUser('user@example.com', 'Jane Doe')
// AFTER — Mushi import { Mushi } from '@mushi-mushi/web' Mushi.init({ projectId: 'YOUR_PROJECT_ID', apiKey: 'YOUR_PUBLIC_KEY', widget: { trigger: 'both' }, // shake + button }) Mushi.setUser({ id: 'user-42', email: 'user@example.com', name: 'Jane Doe' })

React Native

// BEFORE — Luciq React Native import Luciq, { LogLevel } from 'luciq-reactnative-sdk' Luciq.init({ token: 'YOUR_TOKEN', invocationEvents: [Luciq.invocationEvent.shake], debugLogsLevel: LogLevel.Verbose, }) Luciq.identifyUser('user@example.com', 'Jane Doe', 'user-42')
// AFTER — Mushi React Native import { MushiProvider } from '@mushi-mushi/react-native' export default function App() { return ( <MushiProvider projectId="YOUR_PROJECT_ID" apiKey="YOUR_PUBLIC_KEY" config={{ widget: { trigger: 'shake' } }} > <RootNavigator /> </MushiProvider> ) } // Inside any screen: import { useMushi } from '@mushi-mushi/react-native' function ProfileScreen() { const mushi = useMushi() useEffect(() => { mushi.setUser({ id: 'user-42', email: 'user@example.com', name: 'Jane Doe' }) }, [mushi]) // ... }

Migration checklist

Migration checklist
9 required steps
  1. Step 01
    Create a Mushi project (or pick an existing one)
  2. Step 02
    Install the right Mushi SDK
  3. Step 03
    Mount Mushi alongside Instabug/Luciq (do NOT remove yet)
  4. Step 04
    Wire setUser / setMetadata for parity
  5. Step 05
    Verify console + network + screenshot capture
  6. Step 06
    Run dual-SDK in beta for ≥ 3 days
  7. Step 07
    Update internal docs / runbooks
  8. Step 08
    Remove Instabug / Luciq SDK
  9. Step 09
    Revoke the Instabug/Luciq token in their dashboard

Feature parity at a glance

CapabilityInstabug / LuciqMushi
Shake to report✅ (widget.trigger: 'shake')
Floating button✅ (widget.trigger: 'button')
Screenshot on report (web)✅ (capture.screenshot: 'on-report')
Console + network capture✅ (default on)
Repro steps timeline✅ (auto from console + network + navigation)
Crash reporting❌ — keep Sentry / Crashlytics for crashes
Surveys / NPS❌ — out of scope
In-app chat✅ (Luciq Chats)❌ — out of scope
Self-hosted option
AI triage built-inAdd-on✅ (default)
Open source

If you actively use Luciq’s surveys or in-app chat, you’d keep those surfaces on Luciq even after migrating bug capture to Mushi — they’re unrelated products in the same SDK.

Rollback

If Mushi doesn’t fit, the rollback is just removing the Mushi package and re-adding Instabug/Luciq. Your Luciq backend doesn’t lose data. Because we recommend ≥ 3 days of dual-ship before removing Luciq, you have a clean snapshot to compare against.

References

Last updated on