capacitor-plugins ยท diff
git:20261010.4300a14 to git:20261011.86834d4
129 added, 114 removed. Audit A to A.
---
name: capacitor-plugins
- description: Official Capacitor package guide plus Capgo ecosystem plugin recommendations. Use this skill when users need native functionality, want the right official Capacitor package, or need a stronger Capgo/community plugin when the official package is missing or too limited.
+ description: Pick, install, and wire up Capacitor plugins for native features (camera, filesystem, geolocation, biometrics, in-app purchases, social login, SQLite, calendar, contacts, health, BLE, NFC, etc.). Covers official @capacitor/* packages (Capacitor 8.5 stable, 9 alpha on next) plus the 145-package @capgo/* index, native permission keys (Info.plist, AndroidManifest, variables.gradle minSdk), npx cap sync / cap ls verification, and errors like '"Camera" plugin is not implemented on ios', 'unable to find plugin', UNIMPLEMENTED, and OS-PLUG-* codes. Use for "which plugin should I use for X", adding a plugin, or a plugin call failing after install. Do not use for push setup (capacitor-push-notifications), splash assets (capacitor-splash-screen), keyboard layout (capacitor-keyboard), deep links (capacitor-deep-linking), OTA updates (capgo-live-updates), upgrading plugin source code (capacitor-plugin-upgrades), or adding SPM to a plugin (capacitor-plugin-spm-support).
---
- # Capacitor Plugins Directory
-
- This skill covers both official Capacitor packages and the broader Capgo plugin ecosystem.
-
- ## When to Use This Skill
+ # Capacitor Plugins
- - User asks "which plugin should I use for X?"
- - User needs native functionality (camera, biometrics, payments, etc.)
- - User is building a new Capacitor feature
- - User wants to compare plugin options
+ Choose the right plugin, install it correctly, and prove it is linked natively.
- ## Decision Process
+ ## When to Use
- ### Step 1: Check for an Official Capacitor Package First
+ TRIGGER when:
- If the feature exists in the official Capacitor package set, use that as the default recommendation unless the user has a concrete gap the official package does not cover.
+ - User asks "which plugin should I use for X?" or compares plugin options.
+ - User needs a native capability (camera, files, location, biometrics, payments, auth, sensors, storage, media, calendar, contacts, health, on-device LLM).
+ - A plugin call fails after install: `"X" plugin is not implemented on ios|android|web`, `UNIMPLEMENTED`, `unable to find plugin`, or an `OS-PLUG-*` code.
+ - User needs the right `Info.plist` / `AndroidManifest.xml` / `variables.gradle` entries for a plugin.
- Open the matching file in `references/` before answering:
+ Do not use (load the sibling skill instead):
- - `capacitor-action-sheet.md`
- - `capacitor-app-launcher.md`
- - `capacitor-app.md`
- - `capacitor-background-runner.md`
- - `capacitor-barcode-scanner.md`
- - `capacitor-browser.md`
- - `capacitor-camera.md`
- - `capacitor-clipboard.md`
- - `capacitor-cookies.md`
- - `capacitor-device.md`
- - `capacitor-dialog.md`
- - `capacitor-file-transfer.md`
- - `capacitor-file-viewer.md`
- - `capacitor-filesystem.md`
- - `capacitor-geolocation.md`
- - `capacitor-google-maps.md`
- - `capacitor-haptics.md`
- - `capacitor-http.md`
- - `capacitor-inappbrowser.md`
- - `capacitor-keyboard.md`
- - `capacitor-local-notifications.md`
- - `capacitor-motion.md`
- - `capacitor-network.md`
- - `capacitor-preferences.md`
- - `capacitor-privacy-screen.md`
- - `capacitor-push-notifications.md`
- - `capacitor-screen-orientation.md`
- - `capacitor-screen-reader.md`
- - `capacitor-share.md`
- - `capacitor-splash-screen.md`
- - `capacitor-status-bar.md`
- - `capacitor-system-bars.md`
- - `capacitor-text-zoom.md`
- - `capacitor-toast.md`
- - `capacitor-watch.md`
+ - Push notification setup, FCM/APNs keys: `capacitor-push-notifications`
+ - Splash screen assets and timing: `capacitor-splash-screen`
+ - Keyboard overlap, accessory bar, resize: `capacitor-keyboard`
+ - Universal Links / App Links: `capacitor-deep-linking`
+ - OTA live updates: `capgo-live-updates`
+ - Migrating plugin *source code* across Capacitor majors: `capacitor-plugin-upgrades` (and `capacitor-plugin-upgrade-v8-to-v9`)
+ - Adding Swift Package Manager support to a plugin: `capacitor-plugin-spm-support`; moving an app to SPM: `cocoapods-to-spm`
+ - AppDelegate/SceneDelegate lifecycle changes: `capacitor-uiscene-migration`
+ - Upgrading the app's Capacitor major: `capacitor-app-upgrades`
+ - SQL storage migrations: `sqlite-to-fast-sql`
- These references already contain the install flow, setup notes, and common gotchas for the official packages.
+ ## Version Facts (October 2026)
- ### Step 2: Escalate to Capgo or Community Plugins When Needed
+ - Capacitor stable: 8.5.x (`latest`). Capacitor 9 is `9.0.0-alpha` on the `next` dist-tag. Official plugins follow: most v8 plugins are `8.x` on `latest` and `9.0.0-alpha` on `next`.
+ - Plugin major must match the app's Capacitor major. Plugins for older majors use `latest-<major>` tags, e.g. `npm install @capacitor/camera@latest-7`.
+ - Some official plugins have independent versions (file-transfer 2.x, file-viewer 2.x, inappbrowser 4.x, privacy-screen 2.x, barcode-scanner 3.x, background-runner 3.x, calendar/contacts/health-fitness 1.x). Check `npm view <pkg> peerDependencies` instead of matching the number.
+ - `@capgo/*` plugins use the Capacitor major as their own major (8.x for Capacitor 8). LTS tags such as `lts-v7` exist on some packages.
+ - Capacitor 9: iOS 16 min, Android minSdk 26. Plugins that previously needed `minSdkVersion = 26` (inappbrowser, barcode-scanner) stop needing a bump.
- Recommend a Capgo or community plugin when:
+ ## Procedure
- - no official Capacitor package exists
- - the official package is too limited for the requested behavior
- - the user needs a hosted Capgo workflow around the plugin
- - the user is migrating away from Ionic Enterprise or older community plugins
+ 1. **Inspect first.** Read `package.json` (`@capacitor/core` version), `capacitor.config.*`, and check whether iOS uses SPM (`ios/App/CapApp-SPM/Package.swift`) or CocoaPods (`ios/App/Podfile`). Run `npx cap ls` to see what is already linked.
+ 2. **Pick the package.**
+ - An official `@capacitor/*` package exists and covers the need: default to it. Load its reference from the index below.
+ - No official package, or it lacks a required feature: load `references/capgo-plugin-index.md` and pick the exact `@capgo/*` name. State why it fits better.
+ - Never recommend a package name that is not in a reference file without checking `npm view <pkg> version` first.
+ 3. **Install with the matching major:**
- Open `references/capgo-plugin-index.md` before recommending a Capgo plugin. The index is generated from Cap-go GitHub `package.json` and `src/definitions.ts` metadata and covers every public non-archived Capgo Capacitor plugin package.
+ ```bash
+ npm install @capacitor/<name> # or @capgo/<name>
+ npx cap sync
+ ```
- When recommending a non-official plugin, explain why it is a better fit than the official option and include the exact package name from the index.
+ 4. **Add native config** from the reference: usage-description keys, manifest permissions, `variables.gradle` minSdk/library versions, capabilities/entitlements, AppDelegate hooks. Missing iOS usage strings crash the app on first access.
+ 5. **Ask the user** before raising `minSdkVersion`, adding entitlements (HealthKit, Push), or enabling exact alarms: these affect store review and device reach.
+ 6. **Verify** (next section), then run on a real device for anything involving camera, health, LLM, BLE, or push.
## Capgo Plugin Index
- Use `references/capgo-plugin-index.md` as the complete Capgo plugin source. It includes npm package names, one-line purpose, install commands, supported platforms, key API methods, documentation links, and repository links for every Capgo plugin package.
-
- Use `references/capgo-plugin-catalog.md` for a compact table view of the same package set.
+ `references/capgo-plugin-index.md` is the complete Capgo plugin source, generated from Cap-go GitHub `package.json` and `src/definitions.ts`: npm name, purpose, install command, platforms, key API methods, docs and repo links for every public non-archived package. `references/capgo-plugin-catalog.md` is the compact table of the same set. Load the index before recommending any `@capgo/*` package and use the exact name from it.
- Regenerate both files after Cap-go org changes:
+ Regenerate both after Cap-go org changes (repository maintainers only):
```bash
GITHUB_TOKEN=$(gh auth token) node scripts/generate-capgo-plugin-index.mjs
```
- Set `GITHUB_TOKEN` (or `GH_TOKEN`) so the generator can list monorepo packages without GitHub API rate limits.
-
- Fast starting points:
-
- | Need | Package |
- |------|---------|
- | Live updates | `@capgo/capacitor-updater` |
- | Background geolocation | `@capgo/background-geolocation` |
- | Camera overlay preview | `@capgo/camera-preview` |
- | Social sign-in | `@capgo/capacitor-social-login` |
- | Biometrics | `@capgo/capacitor-native-biometric` |
- | In-app purchases | `@capgo/native-purchases` |
- | Native SQLite performance | `@capgo/capacitor-fast-sql` |
- | Native file operations | `@capgo/capacitor-file` |
- | File picking | `@capgo/capacitor-file-picker` |
- | Native payments | `@capgo/capacitor-pay` |
- | Push-safe WebView recovery | `@capgo/capacitor-webview-guardian` |
- | App integrity checks | `@capgo/capacitor-app-attest` |
-
- ## Installation
-
- For official Capacitor packages, follow the package-specific instructions from `references/`.
-
- For Capgo plugins, install the exact package from `references/capgo-plugin-index.md`:
+ ## Verification
```bash
- npm install <exact-package-name>
- npx cap sync
+ npx cap sync # must finish without "[error]" lines
+ npx cap ls # lists "Found N Capacitor plugins for ios/android"; plugin must appear for each platform
```
- ## Choosing the Right Plugin
- ### Prefer Official Capacitor For
+ - Android: `android/app/capacitor.build.gradle` contains `implementation project(':capacitor-<name>')` and `android/capacitor.settings.gradle` has the matching `include`. Then `cd android && ./gradlew assembleDebug`.
+ - iOS SPM: `ios/App/CapApp-SPM/Package.swift` lists the plugin package. iOS CocoaPods: `ios/App/Podfile` has the pod and `pod install` succeeded. Build in Xcode or `npx cap run ios`.
+ - Grep for leftovers when replacing a plugin: `grep -rn "<old-package>" src android ios package.json`.
+ - Feature-detect at runtime: `Capacitor.isPluginAvailable('Camera')` and `Capacitor.getPlatform()`.
- - app lifecycle, browser, camera, clipboard, device, dialog
- - filesystem, geolocation, haptics, keyboard, network
- - notifications, share sheet, splash screen, status bar
+ ## Error Handling
- ### For Authentication
+ | Error | Cause | Fix |
+ |-------|-------|-----|
+ | `"Camera" plugin is not implemented on ios` (or `android`/`web`) | Native side not linked, or no web implementation | `npx cap sync`, rebuild the native app (live reload does not pick up new native code), check `npx cap ls`. On web, guard with `Capacitor.isNativePlatform()`. |
+ | `"Camera.takePhoto()" is not implemented on ios` | Plugin linked but JS and native versions differ, or method is platform-specific | Align JS and native versions, `npx cap sync`, clean build. Check the reference for platform-only methods. |
+ | `UNIMPLEMENTED` error code | Method not available on this platform/OS version | Branch on platform; see reference "Notes". |
+ | Android log `unable to find plugin : X` | Plugin class not registered/included | Confirm `capacitor.build.gradle` entry, re-sync, Gradle sync in Android Studio. |
+ | iOS log `Error loading plugin X for call. Check that the pluginId is correct` | Plugin not in the iOS build | Re-sync; check `Package.swift` (SPM) or Podfile; clean build folder. |
+ | App crashes on first camera/contacts/calendar/location access (iOS) | Missing `NS*UsageDescription` key | Add the key listed in the reference to `Info.plist`. |
+ | `Manifest merger failed : uses-sdk:minSdkVersion 24 cannot be smaller than version 26 declared in library [...]` | Plugin needs higher minSdk | Raise `minSdkVersion` in `android/variables.gradle` (ask the user first). |
+ | `OS-PLUG-*` codes (e.g. `OS-PLUG-CAMR-0003`) | Structured native errors in OutSystems-based official plugins | Look up the code in the plugin reference (camera, file-transfer, calendar, contacts list the common ones). |
+ | npm `ERESOLVE` peer `@capacitor/core` conflict | Plugin major does not match app major | Install the matching tag (`@latest-7`, `@next` for v9 alpha) or upgrade the app with `capacitor-app-upgrades`. |
- - **Biometric login**: Use `@capgo/capacitor-native-biometric`
- - **Social sign-in**: Use `@capgo/capacitor-social-login`
- - **Password autofill**: Use `@capgo/capacitor-autofill-save-password`
+ ## Reference Index
- ### For Media
+ Only load a reference when its plugin is in play.
- - **Camera with overlay**: Use `@capgo/camera-preview`
- - **Simple photo access**: Use `@capgo/capacitor-photo-library`
- - **Video playback**: Use `@capgo/capacitor-video-player`
- - **Document scanning**: Use `@capgo/capacitor-document-scanner`
+ Official `@capacitor/*` packages (install, native config, usage, gotchas):
- ### For Payments
+ | Need | Reference |
+ |------|-----------|
+ | Action sheet | `references/capacitor-action-sheet.md` |
+ | Open other apps / check installed | `references/capacitor-app-launcher.md` |
+ | App state, back button, URL open events | `references/capacitor-app.md` |
+ | JS tasks in background | `references/capacitor-background-runner.md` |
+ | Barcode / QR scan | `references/capacitor-barcode-scanner.md` |
+ | OAuth-safe in-app browser (SFSafariViewController / Custom Tabs) | `references/capacitor-browser.md` |
+ | Calendar events | `references/capacitor-calendar.md` |
+ | Camera, gallery, video (8.1+ API, `getPhoto` migration) | `references/capacitor-camera.md` |
+ | Clipboard | `references/capacitor-clipboard.md` |
+ | Contacts | `references/capacitor-contacts.md` |
+ | Native cookies (core) | `references/capacitor-cookies.md` |
+ | Device info / id / battery | `references/capacitor-device.md` |
+ | Native alert/confirm/prompt | `references/capacitor-dialog.md` |
+ | Upload/download with progress | `references/capacitor-file-transfer.md` |
+ | Open/preview documents | `references/capacitor-file-viewer.md` |
+ | File read/write | `references/capacitor-filesystem.md` |
+ | Location (foreground) | `references/capacitor-geolocation.md` |
+ | Google Maps | `references/capacitor-google-maps.md` |
+ | HealthKit / Health Connect | `references/capacitor-health-fitness.md` |
+ | Haptics | `references/capacitor-haptics.md` |
+ | Native HTTP (core, CORS bypass) | `references/capacitor-http.md` |
+ | WebView / system / external browser | `references/capacitor-inappbrowser.md` |
+ | Keyboard API basics | `references/capacitor-keyboard.md` |
+ | On-device LLM (experimental) | `references/capacitor-local-llm.md` |
+ | Local notifications | `references/capacitor-local-notifications.md` |
+ | Accelerometer / orientation | `references/capacitor-motion.md` |
+ | Connectivity | `references/capacitor-network.md` |
+ | Key/value storage | `references/capacitor-preferences.md` |
+ | Hide app switcher snapshot / block screenshots | `references/capacitor-privacy-screen.md` |
+ | Push API summary | `references/capacitor-push-notifications.md` |
+ | Orientation lock | `references/capacitor-screen-orientation.md` |
+ | TalkBack / VoiceOver state, TTS | `references/capacitor-screen-reader.md` |
+ | Share sheet | `references/capacitor-share.md` |
+ | Splash API summary | `references/capacitor-splash-screen.md` |
+ | Status bar (legacy) | `references/capacitor-status-bar.md` |
+ | Edge-to-edge system bars (core, preferred on Android 16+) | `references/capacitor-system-bars.md` |
+ | WebView text zoom | `references/capacitor-text-zoom.md` |
+ | Toast | `references/capacitor-toast.md` |
+ | Apple Watch UI (experimental) | `references/capacitor-watch.md` |
- - **Subscriptions/IAP**: Use `@capgo/native-purchases`
- - **Apple Pay/Google Pay**: Use `@capgo/capacitor-pay`
+ Capgo plugins: `references/capgo-plugin-index.md` (145 packages: install, platforms, key APIs, docs) and `references/capgo-plugin-catalog.md` (compact table).
- ### For Live Updates
+ ## Capgo Quick Picks
- - **Production OTA**: Use `@capgo/capacitor-updater`
- - **Development hot reload**: Use `@capgo/capacitor-live-reload`
+ | Need | Package |
+ |------|---------|
+ | Background geolocation, geofencing | `@capgo/background-geolocation` |
+ | Custom camera preview / overlays | `@capgo/camera-preview` |
+ | Biometric login + secure credentials | `@capgo/capacitor-native-biometric` |
+ | Apple/Google/Facebook sign-in | `@capgo/capacitor-social-login` |
+ | Subscriptions / IAP | `@capgo/native-purchases` (revenue strategy: `subscription-app-revenue`) |
+ | Apple Pay / Google Pay | `@capgo/capacitor-pay` |
+ | Fast native SQLite | `@capgo/capacitor-fast-sql` |
+ | Native file ops / picking | `@capgo/capacitor-file`, `@capgo/capacitor-file-picker` |
+ | In-app browser with JS injection, `postMessage`, screenshots | `@capgo/capacitor-inappbrowser` |
+ | WebView killed in background, relaunch | `@capgo/capacitor-webview-guardian` |
+ | App Attest / Play Integrity | `@capgo/capacitor-app-attest` |
+ | OTA live updates | `@capgo/capacitor-updater` (setup: `capgo-live-updates`) |
+ | Dev live reload | `@capgo/capacitor-live-reload` |
- ### For Native SQL Storage
+ Traps:
- - **Encrypted SQL, large result sets, high write throughput**: Use `@capgo/capacitor-fast-sql`
- - **Migrating from another SQL plugin**: Use the `sqlite-to-fast-sql` skill
+ - Do not install two plugins that own the same native surface (e.g. two in-app browsers or two biometric plugins) without a reason; they can conflict on delegates and manifest entries.
+ - Firebase: install the individual `@capgo/capacitor-firebase-*` packages; there is no umbrella `@capgo/capacitor-firebase` package on npm.
+ - Cordova plugins still work but on Capacitor 9 they pull in the Cordova runtime; prefer a Capacitor-native equivalent (`cordova-to-capacitor`).
## Resources
- - Documentation: https://capgo.app/docs
- - GitHub: https://github.com/Cap-go
- - Discord: https://discord.gg/capgo
+ - Official plugin docs: https://capacitorjs.com/docs/apis
+ - Capgo plugin docs: https://capgo.app/docs/plugins/
+ - Capgo GitHub: https://github.com/Cap-go