The catalog at capacitorjs.com/docs/apis (https://capacitorjs.com/docs/apis 243,123 ) lists the official plugins, from Action Sheet and App Launcher through System Bars, Text Zoom and Toast, with newer arrivals such as File Transfer, InAppBrowser and Local LLM. Two sit inside @capacitor/core and need no install: CapacitorHttp (Plugin Configuration) and SystemBars (Status Bar and Splash Screen). Everything else is a separate package whose major version tracks the core: an 8.x plugin for Capacitor 8 243,123 . cap sync wires each one's native code into the Gradle 19,597 build.
npm i @capacitor/camera @capacitor/filesystem @capacitor/geolocation @capacitor/preferences \
@capacitor/device @capacitor/app @capacitor/status-bar @capacitor/splash-screen \
@capacitor/keyboard @capacitor/haptics
npx cap sync android...
[info] Found 10 Capacitor plugins for android:
@capacitor/app@8.1.1
...
[info] Sync finished in 0.258sPlugins release on their own schedules, so minor versions differ. What matters for the manifest is which Android permissions each plugin needs, and whether it merges them for you:
| Plugin | Version | Android permission | Web |
|---|---|---|---|
| Camera | 8.2.4 | None | File input |
| Filesystem | 8.1.3 | None (app folders) | IndexedDB |
| Geolocation | 8.2.2 | Location, by you | Geolocation API |
| Preferences | 8.0.1 | None | localStorage |
| Device | 8.0.3 | None | Partial |
| App | 8.1.1 | None | Partial |
| Status Bar | 8.0.3 | None | No |
| Splash Screen | 8.0.2 | None | No-op |
| Keyboard | 8.0.5 | None | No |
| Haptics | 8.0.2 | VIBRATE, merged | vibrate() |
"Merged" means the permission sits in the plugin's own manifest, which Gradle's manifest merger copies into your APK. Haptics is covered in Haptics, and the full catalog table is Plugin Platform Table. In a browser, a method without a web implementation rejects as unimplemented, so guard native-only calls with Capacitor.isNativePlatform().