Skip to content
Back to skills

Capacitor Plugins

BSecurity

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...

  • 72 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 11, 2026
ai-agentsgoswiftbashsqlnodegitapi

Works with

  • cli
  • api

Security analysis

B80/100
  • criticalSends environment variables or credentials to an external URL
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 19 files and shows the line behind each finding

Scanned October 11, 2026

npx -y skills add Cap-go/capgo-skills --skill capacitor-plugins --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Capacitor Plugins?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Capacitor Plugins
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/cap-go-capacitor-plugins/badge)](https://www.skillsdirectory.com/skills/cap-go-capacitor-plugins)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: capacitor-plugins
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

Choose the right plugin, install it correctly, and prove it is linked natively.

## When to Use

TRIGGER when:

- 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.

Do not use (load the sibling skill instead):

- 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`

## Version Facts (October 2026)

- 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.

## Procedure

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:**

   ```bash
   npm install @capacitor/<name>        # or @capgo/<name>
   npx cap sync
   ```

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

`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 after Cap-go org changes (repository maintainers only):

```bash
GITHUB_TOKEN=$(gh auth token) node scripts/generate-capgo-plugin-index.mjs
```

## Verification

```bash
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
```

- 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()`.

## Error Handling

| 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`. |

## Reference Index

Only load a reference when its plugin is in play.

Official `@capacitor/*` packages (install, native config, usage, gotchas):

| 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` |

Capgo plugins: `references/capgo-plugin-index.md` (145 packages: install, platforms, key APIs, docs) and `references/capgo-plugin-catalog.md` (compact table).

## Capgo Quick Picks

| 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` |

Traps:

- 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

- Official plugin docs: https://capacitorjs.com/docs/apis
- Capgo plugin docs: https://capgo.app/docs/plugins/
- Capgo GitHub: https://github.com/Cap-go

Files in this skill

  • SKILL.md12.4 KB
  • references/capacitor-action-sheet.md1.2 KB
  • references/capacitor-app-launcher.md877 B
  • references/capacitor-app.md1.2 KB
  • references/capacitor-background-runner.md2.3 KB
  • references/capacitor-barcode-scanner.md1.5 KB
  • references/capacitor-browser.md649 B
  • references/capacitor-calendar.md2 KB
  • references/capacitor-camera.md3 KB
  • references/capacitor-clipboard.md444 B
  • references/capacitor-contacts.md1.6 KB
  • references/capacitor-cookies.md890 B
  • references/capacitor-device.md598 B
  • references/capacitor-dialog.md565 B
  • references/capacitor-file-transfer.md1.5 KB
  • references/capacitor-file-viewer.md667 B
  • references/capacitor-filesystem.md1.7 KB
  • references/capacitor-geolocation.md1.1 KB
  • references/capacitor-google-maps.md1.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.