---
description: Capacitor plugin to save passwords to the platform credential store on Android and iOS after a successful in-app login.
title: Capacitor Password Autofill Plugin - Capawesome
image: https://capawesome.io/docs/assets/images/social/sdks/capacitor/password-autofill.png
---

<!doctype html> 

[Skip to content ](#capacitor-password-autofill-plugin) 

[📲 Introducing **Build Sharing** — get your builds onto testers' devices with a link & QR code. No account required. ](/blog/share-mobile-app-builds-with-testers/) 

* [ SDKs ](/docs/sdks/)
* [ Formbricks ](/docs/sdks/capacitor/formbricks/)
* [ Geocoder ](/docs/sdks/capacitor/geocoder/)
* [ Google Sign-In ](/docs/sdks/capacitor/google-sign-in/)
* [ Grafana Faro ](/docs/sdks/capacitor/grafana-faro/)
* [ Gyroscope ](/docs/sdks/capacitor/gyroscope/)
* [ Haptics ](/docs/sdks/capacitor/haptics/)
* [ Home Indicator ](/docs/sdks/capacitor/home-indicator/)
* [ In-App Browser ](/docs/sdks/capacitor/in-app-browser/)
* [ Install Referrer ](/docs/sdks/capacitor/install-referrer/)
* [ Intercom ](/docs/sdks/capacitor/intercom/)
* [ Intune ](/docs/sdks/capacitor/intune/)
* [ Keep Awake ](/docs/sdks/capacitor/keep-awake/)
* [ libSQL ](/docs/sdks/capacitor/libsql/)
* [ Light Sensor ](/docs/sdks/capacitor/light-sensor/)
* [ Live Update ](/docs/sdks/capacitor/live-update/)
* [ Localization ](/docs/sdks/capacitor/localization/)
* [ Mail Composer ](/docs/sdks/capacitor/mail-composer/)
* [ Managed Configurations ](/docs/sdks/capacitor/managed-configurations/)
* [ Maps Launcher ](/docs/sdks/capacitor/maps-launcher/)
* [ Media Session ](/docs/sdks/capacitor/media-session/)
* [ ML Kit ](/docs/sdks/capacitor/mlkit/)
* [ Navigation Bar ](/docs/sdks/capacitor/navigation-bar/)
* [ Network ](/docs/sdks/capacitor/network/)
* [ NFC ](/docs/sdks/capacitor/nfc/)
* [ Node.js ](/docs/sdks/capacitor/nodejs/)
* [ OAuth ](/docs/sdks/capacitor/oauth/)
* [ Passkeys ](/docs/sdks/capacitor/passkeys/)
* Password Autofill [ Password Autofill ](/docs/sdks/capacitor/password-autofill/)
* [ iOS ](#ios)
* [ Configuration ](#configuration)
* [ Usage ](#usage)
* [ API ](#api)
* [ When to use this plugin vs. the official guide ](#when-to-use-this-plugin-vs-the-official-guide)
* [ FAQ ](#faq)
* [ Related Plugins ](#related-plugins)
* [ Newsletter ](#newsletter)
* [ Changelog ](#changelog)
* [ License ](#license)
* [ PDF Generator ](/docs/sdks/capacitor/pdf-generator/)
* [ PDF Viewer ](/docs/sdks/capacitor/pdf-viewer/)
* [ Pedometer ](/docs/sdks/capacitor/pedometer/)
* [ Permissions ](/docs/sdks/capacitor/permissions/)
* [ Phone Dialer ](/docs/sdks/capacitor/phone-dialer/)
* [ Photo Editor ](/docs/sdks/capacitor/photo-editor/)
* [ Photo Manipulator ](/docs/sdks/capacitor/photo-manipulator/)
* [ PixLive ](/docs/sdks/capacitor/pixlive/)
* [ PostHog ](/docs/sdks/capacitor/posthog/)
* [ Printer ](/docs/sdks/capacitor/printer/)
* [ Privacy Screen ](/docs/sdks/capacitor/privacy-screen/)
* [ Proximity Sensor ](/docs/sdks/capacitor/proximity-sensor/)
* [ Purchases ](/docs/sdks/capacitor/purchases/)
* [ RealtimeKit ](/docs/sdks/capacitor/realtimekit/)
* [ Root Detection ](/docs/sdks/capacitor/root-detection/)
* [ Screen Brightness ](/docs/sdks/capacitor/screen-brightness/)
* [ Screen Orientation ](/docs/sdks/capacitor/screen-orientation/)
* [ Screen Reader ](/docs/sdks/capacitor/screen-reader/)
* [ Screenshot ](/docs/sdks/capacitor/screenshot/)
* [ Secure Preferences ](/docs/sdks/capacitor/secure-preferences/)
* [ Settings Launcher ](/docs/sdks/capacitor/settings-launcher/)
* [ Shake ](/docs/sdks/capacitor/shake/)
* [ Silent Mode ](/docs/sdks/capacitor/silent-mode/)
* [ SIM ](/docs/sdks/capacitor/sim/)
* [ SMS Composer ](/docs/sdks/capacitor/sms-composer/)
* [ Speech Recognition ](/docs/sdks/capacitor/speech-recognition/)
* [ Speech Synthesis ](/docs/sdks/capacitor/speech-synthesis/)
* [ Share Target ](/docs/sdks/capacitor/share-target/)
* [ Square Mobile Payments ](/docs/sdks/capacitor/square-mobile-payments/)
* [ SQLite ](/docs/sdks/capacitor/sqlite/)
* [ Superwall ](/docs/sdks/capacitor/superwall/)
* [ System WebView ](/docs/sdks/capacitor/system-webview/)
* [ Tauri ](/docs/sdks/capacitor/tauri/)
* [ Text Interaction ](/docs/sdks/capacitor/text-interaction/)
* [ Text Zoom ](/docs/sdks/capacitor/text-zoom/)
* [ Thermal State ](/docs/sdks/capacitor/thermal-state/)
* [ Toast ](/docs/sdks/capacitor/toast/)
* [ Torch ](/docs/sdks/capacitor/torch/)
* [ Vault ](/docs/sdks/capacitor/vault/)
* [ Volume ](/docs/sdks/capacitor/volume/)
* [ Wallet ](/docs/sdks/capacitor/wallet/)
* [ Wifi ](/docs/sdks/capacitor/wifi/)
* [ YouTube Player ](/docs/sdks/capacitor/youtube-player/)
* [ Zip ](/docs/sdks/capacitor/zip/)
* [ Cordova ](/docs/sdks/cordova/)
* [ Cloud ](/docs/cloud/)
* [ Integrations ](/docs/cloud/live-updates/integrations/)
* Concepts
* Reference
* [ Troubleshooting ](/docs/cloud/live-updates/troubleshooting/)
* [ FAQ ](/docs/cloud/live-updates/faq/)
* [ Native Builds ](/docs/cloud/native-builds/)
* [ Set Up Environments ](/docs/cloud/native-builds/environments/)
* [ Overwrite Native Configurations ](/docs/cloud/native-builds/native-configurations/)
* [ Auto-Increment Build Numbers ](/docs/cloud/native-builds/auto-incrementing-build-numbers/)
* [ Configure the Web Build Script ](/docs/cloud/native-builds/web-build-script/)
* [ Build from a Monorepo ](/docs/cloud/native-builds/monorepo/)
* [ Use pnpm, Yarn, or bun ](/docs/cloud/native-builds/package-managers/)
* [ Install Private npm Packages ](/docs/cloud/native-builds/npm-private-registry/)
* [ Override the Java Version ](/docs/cloud/native-builds/override-java-version/)
* [ Custom iOS Provisioning Profiles ](/docs/cloud/native-builds/custom-ios-provisioning-profiles/)
* [ Build without Git ](/docs/cloud/native-builds/build-without-git/)
* [ Access Git Behind a Firewall ](/docs/cloud/native-builds/firewall-access/)
* [ Integrations ](/docs/cloud/native-builds/integrations/)
* Reference
* [ Troubleshooting ](/docs/cloud/native-builds/troubleshooting/)
* [ FAQ ](/docs/cloud/native-builds/faq/)
* [ App Store Publishing ](/docs/cloud/app-store-publishing/)
* [ Submit a Build ](/docs/cloud/app-store-publishing/submit-a-build/)
* [ Submit Automatically After a Build ](/docs/cloud/app-store-publishing/submit-automatically/)
* [ Troubleshooting ](/docs/cloud/app-store-publishing/troubleshooting/)
* [ FAQ ](/docs/cloud/app-store-publishing/faq/)
* [ Automations ](/docs/cloud/automations/)
* [ Reference ](/docs/cloud/automations/reference/)
* [ Troubleshooting ](/docs/cloud/automations/troubleshooting/)
* [ FAQ ](/docs/cloud/automations/faq/)
* [ Assist ](/docs/cloud/assist/)
* [ CLI ](/docs/cloud/cli/)
* APIs and SDKs
* [ Webhooks ](/docs/cloud/webhooks/)
* [ Integrations ](/docs/cloud/integrations/)
* Notifications
* Account
* [ Organization ](/docs/cloud/organizations/)
* [ Two-Factor Enforcement ](/docs/cloud/organizations/two-factor-authentication/)
* [ Audit Logs ](/docs/cloud/organizations/audit-logs/)
* [ Billing ](/docs/cloud/organizations/billing/)
* [ License Keys ](/docs/cloud/license-keys/)
* [ AI ](/docs/ai/)
* [ Insiders ](/docs/insiders/)
* [ Billing & Plans ](/docs/insiders/billing-and-plans/)
* [ FAQ ](/docs/insiders/faq/)
* [ License ](https://capawesome.io/legal/eula/)
* [ Support ](/docs/support/)
* [ Contributing ](/docs/contributing/)
* Contributing code
* [ Code of Conduct ](/docs/contributing/code-of-conduct/)
* [ Questions ](https://docs.github.com/en/discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion#creating-a-discussion)
* [ Blog ](/blog/)
* Categories

* [ iOS ](#ios)
* [ Configuration ](#configuration)
* [ Usage ](#usage)
* [ API ](#api)
* [ When to use this plugin vs. the official guide ](#when-to-use-this-plugin-vs-the-official-guide)
* [ FAQ ](#faq)
* [ Related Plugins ](#related-plugins)
* [ Newsletter ](#newsletter)
* [ Changelog ](#changelog)
* [ License ](#license)

# Capacitor Password Autofill Plugin[¶](#capacitor-password-autofill-plugin "Permanent link")

Capacitor plugin for saving passwords to the platform credential store.

This plugin lets you **save into** the platform autofill system (iCloud Keychain on iOS, Google Password Manager on Android) after a successful in-app login. It does **not** fill forms — it solves the well-known problem that WebView-based apps never trigger the native "Save password?" prompt.

[ ![Deliver Live Updates to your Capacitor app with Capawesome Cloud](../../../assets/external/cloud.capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.69628c3f.png) ](https://cloud.capawesome.io/) 

## Features[¶](#features "Permanent link")

The Capacitor Password Autofill plugin is one of the most complete credential saving solutions for Capacitor apps. Here are some of the key features:

* 🖥️ **Cross-platform**: Supports Android and iOS.
* 🔐 **Credential saving**: Save a username and password to the platform credential store.
* 🎯 **Deterministic**: Trigger the save prompt explicitly after a successful login, even for non-form flows.
* 🤝 **Compatibility**: Works alongside the [Biometrics](https://capawesome.io/docs/sdks/capacitor/biometrics/), [Passkeys](https://capawesome.io/docs/sdks/capacitor/passkeys/) and [Secure Preferences](https://capawesome.io/docs/sdks/capacitor/secure-preferences/) plugins.
* 📦 **CocoaPods & SPM**: Supports CocoaPods and Swift Package Manager for iOS.
* 🔁 **Up-to-date**: Always supports the latest Capacitor version.

Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look!

## Use Cases[¶](#use-cases "Permanent link")

The Password Autofill plugin is typically used whenever an app wants credentials to end up in the platform credential store, for example:

* **Save credentials after login**: Trigger the native "Save password?" prompt after a successful in-app login, which WebView-based apps never trigger on their own.
* **Single-page app logins**: Save credentials for login flows based on `fetch()` and `preventDefault()`, which the operating system's form heuristics never detect.
* **Generated passwords**: Save automatically generated passwords, for example during a social signup flow without a login form.
* **Smoother re-logins**: Credentials saved to iCloud Keychain or Google Password Manager can be offered to the user again on future sign-ins.

## Compatibility[¶](#compatibility "Permanent link")

| Plugin Version | Capacitor Version | Status         |
| -------------- | ----------------- | -------------- |
| 0.x.x          | \>=8.x.x          | Active support |

## Installation[¶](#installation "Permanent link")

You can use our **AI-Assisted Setup** to install the plugin. Add the [Capawesome Skills](https://github.com/capawesome-team/skills) to your AI tool using the following command:

`[](#%5F%5Fcodelineno-0-1)npx skills add capawesome-team/skills --skill capacitor-plugins
`

Then use the following prompt:

`` [](#%5F%5Fcodelineno-1-1) Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-password-autofill` plugin in my project.
 ``

If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below:

`[](#%5F%5Fcodelineno-2-1)npm install @capawesome/capacitor-password-autofill
[](#%5F%5Fcodelineno-2-2)npx cap sync
`

This plugin is only available on **Android** and **iOS**. On Web, all methods reject as unimplemented.

### Android[¶](#android "Permanent link")

#### Variables[¶](#variables "Permanent link")

This plugin will use the following project variables (defined in your app's `variables.gradle` file):

* `$androidxCredentialsVersion` version of `androidx.credentials:credentials` and `androidx.credentials:credentials-play-services-auth` (default: `1.5.0`)

No further setup is required. On Android, saving a credential presents the system "Save password?" prompt provided by the active credential provider (e.g. Google Password Manager).

### iOS[¶](#ios "Permanent link")

The Shared Web Credentials API requires the **Associated Domains** capability and a matching `apple-app-site-association` (AASA) file. Without this setup, `savePassword(...)` cannot save the credential.

#### Associated Domains[¶](#associated-domains "Permanent link")

Add the Associated Domains entitlement to your app and include a `webcredentials:` entry for each domain you want to save credentials for:

`[](#%5F%5Fcodelineno-3-1)<key>com.apple.developer.associated-domains</key>
[](#%5F%5Fcodelineno-3-2)<array>
[](#%5F%5Fcodelineno-3-3)  <string>webcredentials:example.com</string>
[](#%5F%5Fcodelineno-3-4)</array>
`

The `domain` you pass to `savePassword(...)` must match one of these entries (without the `webcredentials:` prefix).

#### Apple App Site Association[¶](#apple-app-site-association "Permanent link")

Host an `apple-app-site-association` file at `https://example.com/.well-known/apple-app-site-association` that lists your app under the `webcredentials` service:

`[](#%5F%5Fcodelineno-4-1){
[](#%5F%5Fcodelineno-4-2)  "webcredentials": {
[](#%5F%5Fcodelineno-4-3)    "apps": ["TEAMID.com.example.app"]
[](#%5F%5Fcodelineno-4-4)  }
[](#%5F%5Fcodelineno-4-5)}
`

Replace `TEAMID` with your Apple Developer Team ID and `com.example.app` with your app's bundle identifier. See the [Apple documentation](https://developer.apple.com/documentation/xcode/supporting-associated-domains) for more information.

## Configuration[¶](#configuration "Permanent link")

No configuration required for this plugin.

## Usage[¶](#usage "Permanent link")

The following example shows how to save a username and password to the platform credential store.

### Save a username and password[¶](#save-a-username-and-password "Permanent link")

Call `savePassword(...)` after a successful login to save the credential to the platform credential store. On iOS, the `domain` is required and must match one of the domains in your app's Associated Domains entitlement (see [Installation](#installation)). On Android, the system "Save password?" prompt is presented to the user:

`[](#%5F%5Fcodelineno-5-1)import { PasswordAutofill } from '@capawesome/capacitor-password-autofill';
[](#%5F%5Fcodelineno-5-2)
[](#%5F%5Fcodelineno-5-3)const savePassword = async () => {
[](#%5F%5Fcodelineno-5-4)  await PasswordAutofill.savePassword({
[](#%5F%5Fcodelineno-5-5)    domain: 'example.com',
[](#%5F%5Fcodelineno-5-6)    username: 'jane.doe@example.com',
[](#%5F%5Fcodelineno-5-7)    password: 'super-secret',
[](#%5F%5Fcodelineno-5-8)  });
[](#%5F%5Fcodelineno-5-9)};
`

## API[¶](#api "Permanent link")

* [savePassword(...)](#savepassword)
* [Interfaces](#interfaces)

### savePassword(...)[¶](#savepassword "Permanent link")

`[](#%5F%5Fcodelineno-6-1)savePassword(options: SavePasswordOptions) => Promise<void>
`

Save a username and password to the platform credential store.

On iOS, the credential is saved to the iCloud Keychain via the Shared Web Credentials API. This requires the Associated Domains entitlement with a `webcredentials:` entry and a matching `apple-app-site-association` file hosted on your domain.

On Android, the credential is saved to the Google Password Manager (or another provider) via the Credential Manager API. This presents the system "Save password?" prompt to the user.

Only available on Android and iOS.

| Param       | Type                                        |
| ----------- | ------------------------------------------- |
| **options** | [SavePasswordOptions](#savepasswordoptions) |

**Since:** 0.1.0

---

### Interfaces[¶](#interfaces "Permanent link")

#### SavePasswordOptions[¶](#savepasswordoptions "Permanent link")

| Prop         | Type   | Description                                                                                                                                                                                          | Since |
| ------------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- |
| **domain**   | string | The domain to associate the credential with. This must match one of the domains in your app's Associated Domains entitlement (without the webcredentials: prefix). Only available on iOS (required). | 0.1.0 |
| **password** | string | The password to save.                                                                                                                                                                                | 0.1.0 |
| **username** | string | The username to save.                                                                                                                                                                                | 0.1.0 |

## When to use this plugin vs. the official guide[¶](#when-to-use-this-plugin-vs-the-official-guide "Permanent link")

The [official Capacitor autofill guide](https://capacitorjs.com/docs/guides/autofill-credentials) saves credentials by relying on the operating system's form heuristics. This requires changing `server.hostname` to your real domain, which:

* changes the WebView origin and therefore wipes existing users' `localStorage`, `IndexedDB`, and cookies, and
* can break OAuth redirect allowlists.

It also depends on iOS detecting a form submission followed by a navigation — something typical single-page app logins (`fetch()` \+ `preventDefault()`) never trigger.

This plugin takes a different approach: **deterministic credential saving without changing the WebView origin**. Your app keeps `localhost` as its origin, and you call `savePassword(...)` explicitly after a successful login. This also covers non-form flows such as social signup with generated passwords.

What this plugin does **not** replace:

* The Associated Domains / `apple-app-site-association` setup is required in both approaches.
* Autofill (reading credentials back into a form) still benefits from the `autocomplete` attributes described in the official guide.

## FAQ[¶](#faq "Permanent link")

### How is this plugin different from other similar plugins?[¶](#how-is-this-plugin-different-from-other-similar-plugins "Permanent link")

It saves credentials into the platform credential store — iCloud Keychain on iOS and Google Password Manager on Android — with an explicit `savePassword(...)` call after a successful login. Because saving is triggered by an explicit call, it reliably covers single-page app logins built on `fetch()` and `preventDefault()` as well as non-form flows such as social signups with generated passwords, all without changing your WebView origin. The API is fully typed, supports both CocoaPods and Swift Package Manager on iOS, and is actively maintained against the latest Capacitor version.

### Does this plugin fill login forms with saved credentials?[¶](#does-this-plugin-fill-login-forms-with-saved-credentials "Permanent link")

No, this plugin only saves credentials into the platform autofill system (iCloud Keychain on iOS, Google Password Manager on Android). Filling credentials back into a form is handled by the operating system and still benefits from the `autocomplete` attributes described in the [official Capacitor autofill guide](https://capacitorjs.com/docs/guides/autofill-credentials).

### Why is the credential not saved on iOS?[¶](#why-is-the-credential-not-saved-on-ios "Permanent link")

The Shared Web Credentials API requires the Associated Domains capability with a `webcredentials:` entry and a matching `apple-app-site-association` file hosted on your domain. Without this setup, `savePassword(...)` cannot save the credential. Also make sure that the `domain` option matches one of the entries in your entitlement (without the `webcredentials:` prefix). See the [Installation](#installation) section for the details.

### Do I need to pass the `domain` option on Android?[¶](#do-i-need-to-pass-the-domain-option-on-android "Permanent link")

No, the `domain` option is only used on iOS, where it is required and must match one of the domains in your app's Associated Domains entitlement. On Android, the credential is saved via the Credential Manager API without a domain.

### How is this plugin different from the official Capacitor autofill guide?[¶](#how-is-this-plugin-different-from-the-official-capacitor-autofill-guide "Permanent link")

The [official guide](https://capacitorjs.com/docs/guides/autofill-credentials) relies on the operating system's form heuristics, which requires changing `server.hostname` to your real domain. This changes the WebView origin, wipes existing users' `localStorage`, `IndexedDB`, and cookies, and can break OAuth redirect allowlists. This plugin instead saves credentials deterministically with an explicit `savePassword(...)` call, so your app keeps `localhost` as its origin. See the [comparison section](#when-to-use-this-plugin-vs-the-official-guide) above for more details.

### Is this plugin available on the web?[¶](#is-this-plugin-available-on-the-web "Permanent link")

No, this plugin is only available on Android and iOS. On the web, all methods reject as unimplemented.

### Can I use this plugin with Ionic, React, Vue or Angular?[¶](#can-i-use-this-plugin-with-ionic-react-vue-or-angular "Permanent link")

Yes, the plugin is framework-agnostic. It works in any Capacitor app regardless of the web framework, including Ionic with Angular, React, or Vue, as well as plain JavaScript projects.

## Related Plugins[¶](#related-plugins "Permanent link")

* [Biometrics](https://capawesome.io/docs/sdks/capacitor/biometrics/): Request biometric authentication, such as face or fingerprint recognition.
* [Passkeys](https://capawesome.io/docs/sdks/capacitor/passkeys/): Create and authenticate with passkeys based on the WebAuthn standard.
* [Secure Preferences](https://capawesome.io/docs/sdks/capacitor/secure-preferences/): Securely store key/value pairs such as passwords, tokens or other sensitive information.

## Newsletter[¶](#newsletter "Permanent link")

Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/).

## Changelog[¶](#changelog "Permanent link")

See [CHANGELOG.md](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/password-autofill/CHANGELOG.md).

## License[¶](#license "Permanent link")

See [LICENSE](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/password-autofill/LICENSE).

July 8, 2026 

Back to top

```json
{"@context": "https://schema.org", "@graph": [{"@type": "TechArticle", "@id": "https://capawesome.io/docs/sdks/capacitor/password-autofill/#article", "headline": "Capacitor Password Autofill Plugin", "name": "Capacitor Password Autofill Plugin", "description": "Capacitor plugin to save passwords to the platform credential store on Android and iOS after a successful in-app login.", "inLanguage": "en", "url": "https://capawesome.io/docs/sdks/capacitor/password-autofill/", "mainEntityOfPage": "https://capawesome.io/docs/sdks/capacitor/password-autofill/", "author": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "publisher": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "about": {"@id": "https://capawesome.io/docs/sdks/capacitor/password-autofill/#software"}}, {"@type": "SoftwareSourceCode", "@id": "https://capawesome.io/docs/sdks/capacitor/password-autofill/#software", "name": "Capacitor Password Autofill Plugin", "description": "Capacitor plugin to save passwords to the platform credential store on Android and iOS after a successful in-app login.", "url": "https://capawesome.io/docs/sdks/capacitor/password-autofill/", "programmingLanguage": "TypeScript", "runtimePlatform": "Capacitor", "codeRepository": "https://github.com/capawesome-team", "author": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "publisher": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}}]}
{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "How is this plugin different from other similar plugins?", "acceptedAnswer": {"@type": "Answer", "text": "It saves credentials into the platform credential store — iCloud Keychain on iOS and Google Password Manager on Android — with an explicit savePassword(...) call after a successful login. Because saving is triggered by an explicit call, it reliably covers single-page app logins built on fetch() and preventDefault() as well as non-form flows such as social signups with generated passwords, all without changing your WebView origin. The API is fully typed, supports both CocoaPods and Swift Package Manager on iOS, and is actively maintained against the latest Capacitor version."}}, {"@type": "Question", "name": "Does this plugin fill login forms with saved credentials?", "acceptedAnswer": {"@type": "Answer", "text": "No, this plugin only saves credentials into the platform autofill system (iCloud Keychain on iOS, Google Password Manager on Android). Filling credentials back into a form is handled by the operating system and still benefits from the autocomplete attributes described in the official Capacitor autofill guide."}}, {"@type": "Question", "name": "Why is the credential not saved on iOS?", "acceptedAnswer": {"@type": "Answer", "text": "The Shared Web Credentials API requires the Associated Domains capability with a webcredentials: entry and a matching apple-app-site-association file hosted on your domain. Without this setup, savePassword(...) cannot save the credential. Also make sure that the domain option matches one of the entries in your entitlement (without the webcredentials: prefix). See the Installation section for the details."}}, {"@type": "Question", "name": "Do I need to pass the domain option on Android?", "acceptedAnswer": {"@type": "Answer", "text": "No, the domain option is only used on iOS, where it is required and must match one of the domains in your app's Associated Domains entitlement. On Android, the credential is saved via the Credential Manager API without a domain."}}, {"@type": "Question", "name": "How is this plugin different from the official Capacitor autofill guide?", "acceptedAnswer": {"@type": "Answer", "text": "The official guide relies on the operating system's form heuristics, which requires changing server.hostname to your real domain. This changes the WebView origin, wipes existing users' localStorage, IndexedDB, and cookies, and can break OAuth redirect allowlists. This plugin instead saves credentials deterministically with an explicit savePassword(...) call, so your app keeps localhost as its origin. See the comparison section above for more details."}}, {"@type": "Question", "name": "Is this plugin available on the web?", "acceptedAnswer": {"@type": "Answer", "text": "No, this plugin is only available on Android and iOS. On the web, all methods reject as unimplemented."}}, {"@type": "Question", "name": "Can I use this plugin with Ionic, React, Vue or Angular?", "acceptedAnswer": {"@type": "Answer", "text": "Yes, the plugin is framework-agnostic. It works in any Capacitor app regardless of the web framework, including Ionic with Angular, React, or Vue, as well as plain JavaScript projects."}}], "url": "https://capawesome.io/docs/sdks/capacitor/password-autofill/"}
```
