Migration guides
Long-form playbooks for moving an existing app onto Mushi Mushi, or between Mushi-supported runtimes, without losing your project, your API key, or your reports inbox. Every guide ships with an interactive checklist that saves your progress in this browser.
Capacitor → React Native
Full porting plan with EAS Build and GitHub Actions + Fastlane CI/CD recipes, the plugin map, and the Mushi Mushi SDK swap.
Mobile / hybridWeeksRead →Cordova → Capacitor
Replace Cordova with Capacitor in place. Plugin map, build pipeline swap, splash/icon regeneration, and Mushi Mushi widget reconfiguration.
Mobile / hybridDaysRead →Cordova → React Native
Two-hop migration: stabilise on Capacitor first, then port screen-by-screen to React Native. Preserves the Mushi Mushi project the whole way.
Mobile / hybridWeeksRead →React Native CLI ↔ Expo
Both directions. Add Expo modules to a bare CLI app via install-expo-modules, or eject Expo with `expo prebuild`. Mushi Mushi works on both.
Mobile / hybridDaysRead →Native iOS / Android → Hybrid
When and how to wrap an existing native app shell with Capacitor or React Native, keeping the platform Mushi Mushi SDKs in place.
Mobile / hybridWeeksRead →Create React App → Vite
Create React App is deprecated. Run `npx migrate-to-vite@latest cra` for the codemod, then handle the manual changes (env vars, public/, SVG imports, tests).
Web frameworkHoursRead →Next.js Pages → App Router
Page-by-page move to App Router with the right Mushi Mushi `<MushiProvider>` placement and the CSP-aware integration for static export.
Web frameworkDaysRead →Vue 2 → Vue 3
Vue 3 upgrade via the compat build, then the `mushi-mushi/vue` plugin: one `app.use(MushiPlugin, ...)` call.
Web frameworkDaysRead →SPA → SSR (Next.js / Nuxt / SvelteKit)
Move from a Vite SPA to a server-rendered framework. Mushi Mushi env-var prefix mapping (VITE_ → NEXT_PUBLIC_), provider placement, and hydration safety.
Web frameworkWeeksRead →Sentry + Mushi Mushi (enrich or standalone)
Keep Sentry. Mushi Mushi runs alongside it and adds plain-English diagnosis and paste-ready fixes to your errors, or works standalone. Never a rip-out.
Switch to Mushi MushiHoursRead →Instabug (Luciq) → Mushi Mushi
React Native API mapping: `Luciq.init` → `<MushiProvider>`, `identifyUser` → `setUser`, shake-to-report with `expo-sensors`.
Switch to Mushi MushiHoursRead →Shake → Mushi Mushi
`Shake.start(apiKey)` → `Mushi.init`, `Shake.setMetadata` → `setMetadata`, and shake-to-report on React Native and Capacitor.
Switch to Mushi MushiHoursRead →LogRocket Feedback → Mushi Mushi
Collect bug reports with Mushi Mushi and keep LogRocket for session replay. Each report carries the LogRocket session URL in its metadata.
Switch to Mushi MushiHoursRead →BugHerd → Mushi Mushi
Sidebar feedback widget → Mushi Mushi floating button. Pixel-pin comments → Mushi Mushi's element picker and screenshot markup.
Switch to Mushi MushiHoursRead →Pendo Feedback → Mushi Mushi
Pendo retired classic Feedback on 2026-08-01. Move feedback to Mushi Mushi: `pendo.identify` → `setUser`, `pendo.track` → `track`; keep Pendo for analytics and guides.
Switch to Mushi MushiHoursRead →Mushi Mushi SDK upgrades (0.x → 1.x)
draftThe breaking changes each @mushi-mushi package made at 1.0, the version-bump command, and the current versions.
Mushi Mushi SDK upgradeHoursRead →
Don’t see your migration?
We pick guides based on demand. If your stack isn’t covered yet, open a migration request issue with the source framework / vendor and a sentence about why you’re moving. The most-requested ones get written first.
Want a guide picked for you? Run
npx mushi-mushi migrate in your project root (or mushi migrate if you
have @mushi-mushi/cli installed globally) and it points you at the most
relevant guide based on what’s in your package.json. The mushi-mushi
launcher passes migrate and every other non-init command through to
@mushi-mushi/cli.