JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 232
  • Score
    100M100P100Q94173F
  • License MIT

Capacitor plugin for Mushi Mushi — shake-to-report, screenshot capture, offline queue, and bottom-sheet widget for iOS/Android Capacitor apps.

Package Exports

  • @mushi-mushi/capacitor

Readme

@mushi-mushi/capacitor

Capacitor plugin for Mushi Mushi — the open-source, LLM-driven bug intake, classification, and autofix platform.

One-command setup: npx mushi-mushi auto-detects Capacitor and installs this package.

Other frameworks: @mushi-mushi/react · @mushi-mushi/vue · @mushi-mushi/svelte · @mushi-mushi/angular · @mushi-mushi/react-native · @mushi-mushi/web (vanilla JS)

Status: V0.2.0 (Wave C C4). Surface stable; minor changes still possible before V1.0.

The plugin reuses our standalone iOS and Android SDKs (MushiMushi / mushi-android) for the native side, so you get one canonical implementation across pure-native, React Native, Flutter, and Capacitor apps.

Install

npm install @mushi-mushi/capacitor
npx cap sync

Quickstart

import { Mushi } from '@mushi-mushi/capacitor';

await Mushi.configure({
  projectId: 'proj_...',
  apiKey: 'mush_pk_...',
  triggerMode: 'both',
  captureScreenshot: true,
  minDescriptionLength: 20,
});

// Programmatic report:
await Mushi.report({
  description: 'Profile photo upload spinner never stops on tablets',
  category: 'bug',
});

// Listen for successful submissions (e.g. to mirror into Sentry):
const handle = await Mushi.addListener('reportSubmitted', (payload) => {
  console.log('Mushi submitted', payload);
});

// Native widget:
await Mushi.showWidget();

Web fallback

When the app runs in a browser preview (ionic serve), the plugin falls back to a pure-TS implementation that calls the same @mushi-mushi/core API client used by the standalone web SDK. Behaviour matches production exactly.

Permissions

No runtime permissions required. iOS uses motionShake; Android uses the accelerometer (no permission needed). The widget is rendered via the native bottom sheet from the standalone SDKs.

Configuration

Field Default Notes
projectId required Project UUID
apiKey required Public ingest key (mush_pk_...)
endpoint https://api.mushimushi.dev Override for self-hosting
triggerMode 'shake' 'shake' / 'button' / 'both' / 'none'
captureScreenshot true Disable for HIPAA-sensitive flows
minDescriptionLength 20 Matches the web/native SDK contracts
useNativeWidget false When true, uses the bottom-sheet from the native SDK

License

MIT — see LICENSE at the repo root.