---
description: Capacitor plugin to check the Android System WebView version, detect an outdated WebView, and prompt users to update it. Supports Android.
title: Capacitor System WebView Plugin for Android - Capawesome
image: https://capawesome.io/docs/assets/images/social/sdks/capacitor/system-webview.png
---

<!doctype html> 

[Skip to content ](#capacitor-system-webview-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/)
* [ 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 ](/docs/sdks/capacitor/password-autofill/)
* [ 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 [ System WebView ](/docs/sdks/capacitor/system-webview/)
* [ iOS ](#ios)
* [ Configuration ](#configuration)
* [ Usage ](#usage)
* [ API ](#api)
* [ Why Outdated System WebViews Matter ](#why-outdated-system-webviews-matter)
* [ FAQ ](#faq)
* [ Related Plugins ](#related-plugins)
* [ Newsletter ](#newsletter)
* [ Changelog ](#changelog)
* [ License ](#license)
* [ 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/)
* [ 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/)
* 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)
* [ Why Outdated System WebViews Matter ](#why-outdated-system-webviews-matter)
* [ FAQ ](#faq)
* [ Related Plugins ](#related-plugins)
* [ Newsletter ](#newsletter)
* [ Changelog ](#changelog)
* [ License ](#license)

# Capacitor System WebView Plugin[¶](#capacitor-system-webview-plugin "Permanent link")

Capacitor plugin to detect an outdated Android System WebView and guide users to update it.

[ ![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")

* 🔍 **Detection**: Read the package name and version of the active Android System WebView provider.
* ⚠️ **Outdated check**: Compare the installed Chromium major version against the minimum your app requires.
* 🛒 **Update flow**: Send users straight to the Play Store entry of their active WebView provider.
* 🤝 **Compatibility**: Works alongside the [App Update](https://capawesome.io/docs/sdks/capacitor/app-update/), [Device Info](https://capawesome.io/docs/sdks/capacitor/device-info/) and [Dialog](https://capawesome.io/docs/sdks/capacitor/dialog/) plugins.
* 🔁 **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 System WebView plugin is typically used to protect an app against outdated Android System WebViews, for example:

* **Update checks on app start**: Check with `isUpdateRequired(...)` whether the installed WebView meets the minimum Chromium version your app's bundle requires.
* **Guided update flows**: Prompt the user with a dialog and send them straight to the Play Store entry of their active WebView provider with `openAppStore()`.
* **Support diagnostics**: Read the package name and version of the active WebView provider with `getInfo()` and attach it to bug reports to explain hard-to-diagnose rendering issues.
* **Feature gating**: Only enable web features like CSS `:has()` or container queries when the installed WebView is recent enough to support them.

## 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-system-webview` 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-system-webview
[](#%5F%5Fcodelineno-2-2)npx cap sync
`

This plugin is only available on **Android**. On iOS and Web, all methods reject as unimplemented (see [iOS](#ios) below).

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

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

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

* `$androidxWebkitVersion` version of `androidx.webkit:webkit` (default: `1.14.0`)

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

This plugin has **no iOS implementation** and does not need one. On iOS, the `WKWebView` is part of the operating system and is updated together with iOS itself. It cannot be updated separately, so there is nothing for an app to detect or fix.

All methods reject as unimplemented on iOS.

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

No configuration required for this plugin.

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

The following examples show how to prompt the user to update the WebView and read information about the WebView provider.

### Prompt the user to update the WebView[¶](#prompt-the-user-to-update-the-webview "Permanent link")

The recommended pattern is to check whether an update is required on app start, prompt the user with the [Dialog](https://capawesome.io/docs/sdks/capacitor/dialog/) plugin, and then open the Play Store. Only available on Android:

`[](#%5F%5Fcodelineno-3-1)import { SystemWebview } from '@capawesome/capacitor-system-webview';
[](#%5F%5Fcodelineno-3-2)import { Dialog } from '@capacitor/dialog';
[](#%5F%5Fcodelineno-3-3)
[](#%5F%5Fcodelineno-3-4)const promptForUpdateIfRequired = async () => {
[](#%5F%5Fcodelineno-3-5)  const { required } = await SystemWebview.isUpdateRequired({
[](#%5F%5Fcodelineno-3-6)    minMajorVersion: 105,
[](#%5F%5Fcodelineno-3-7)  });
[](#%5F%5Fcodelineno-3-8)  if (!required) {
[](#%5F%5Fcodelineno-3-9)    return;
[](#%5F%5Fcodelineno-3-10)  }
[](#%5F%5Fcodelineno-3-11)  const { value } = await Dialog.confirm({
[](#%5F%5Fcodelineno-3-12)    title: 'Update required',
[](#%5F%5Fcodelineno-3-13)    message:
[](#%5F%5Fcodelineno-3-14)      'Your Android System WebView is outdated. Please update it to continue using all features of this app.',
[](#%5F%5Fcodelineno-3-15)    okButtonTitle: 'Update',
[](#%5F%5Fcodelineno-3-16)  });
[](#%5F%5Fcodelineno-3-17)  if (value) {
[](#%5F%5Fcodelineno-3-18)    await SystemWebview.openAppStore();
[](#%5F%5Fcodelineno-3-19)  }
[](#%5F%5Fcodelineno-3-20)};
`

> \[!NOTE\] A WebView update only takes effect the next time the app process is started. The currently running app keeps using the old WebView until it is restarted.

### Read information about the WebView provider[¶](#read-information-about-the-webview-provider "Permanent link")

Get the package name, version name and Chromium major version of the active WebView provider, for example to attach it to your support diagnostics. Only available on Android:

`[](#%5F%5Fcodelineno-4-1)import { SystemWebview } from '@capawesome/capacitor-system-webview';
[](#%5F%5Fcodelineno-4-2)
[](#%5F%5Fcodelineno-4-3)const getInfo = async () => {
[](#%5F%5Fcodelineno-4-4)  const info = await SystemWebview.getInfo();
[](#%5F%5Fcodelineno-4-5)  return info;
[](#%5F%5Fcodelineno-4-6)};
`

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

* [getInfo()](#getinfo)
* [isUpdateRequired(...)](#isupdaterequired)
* [openAppStore()](#openappstore)
* [Interfaces](#interfaces)

### getInfo()[¶](#getinfo "Permanent link")

`[](#%5F%5Fcodelineno-5-1)getInfo() => Promise<GetInfoResult>
`

Get information about the active Android System WebView provider.

Only available on Android.

**Returns:** `Promise<[GetInfoResult](#getinforesult)>`

**Since:** 0.1.0

---

### isUpdateRequired(...)[¶](#isupdaterequired "Permanent link")

`[](#%5F%5Fcodelineno-6-1)isUpdateRequired(options: IsUpdateRequiredOptions) => Promise<IsUpdateRequiredResult>
`

Check whether the active Android System WebView is older than the minimum Chromium major version required by your app.

Only available on Android.

| Param       | Type                                                |
| ----------- | --------------------------------------------------- |
| **options** | [IsUpdateRequiredOptions](#isupdaterequiredoptions) |

**Returns:** `Promise<[IsUpdateRequiredResult](#isupdaterequiredresult)>`

**Since:** 0.1.0

---

### openAppStore()[¶](#openappstore "Permanent link")

`[](#%5F%5Fcodelineno-7-1)openAppStore() => Promise<void>
`

Open the Play Store entry of the active Android System WebView provider so the user can update it.

Only available on Android.

**Since:** 0.1.0

---

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

#### GetInfoResult[¶](#getinforesult "Permanent link")

| Prop             | Type           | Description                                                                                                                                                                                                                                             | Since |
| ---------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- |
| **majorVersion** | number \| null | The Chromium major version of the active WebView provider. This is the integer before the first dot of the versionName (e.g. 126 for 126.0.6478.122). null if the versionName is not a Chromium-style version, which can happen with OEM WebView forks. | 0.1.0 |
| **packageName**  | string         | The package name of the active WebView provider.                                                                                                                                                                                                        | 0.1.0 |
| **versionName**  | string         | The version name of the active WebView provider.                                                                                                                                                                                                        | 0.1.0 |

#### IsUpdateRequiredResult[¶](#isupdaterequiredresult "Permanent link")

| Prop         | Type    | Description                                                                             | Since |
| ------------ | ------- | --------------------------------------------------------------------------------------- | ----- |
| **required** | boolean | true if the active WebView is older than the required minimum version, otherwise false. | 0.1.0 |

#### IsUpdateRequiredOptions[¶](#isupdaterequiredoptions "Permanent link")

| Prop                | Type   | Description                                                                                                                                   | Since |
| ------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------- | ----- |
| **minMajorVersion** | number | The minimum Chromium major version your app requires. The active WebView is considered outdated if its majorVersion is lower than this value. | 0.1.0 |

## Why Outdated System WebViews Matter[¶](#why-outdated-system-webviews-matter "Permanent link")

On Android, your Capacitor app runs inside the Android System WebView, which is updated independently of the operating system. Many devices run an ancient WebView because the user has disabled automatic updates, is offline, or uses a custom ROM. When that happens, modern web features your app relies on may simply be missing, causing hard-to-diagnose "the app is broken" support tickets.

Because "outdated" depends on which web features your app's bundle actually needs, this plugin never hardcodes a threshold. Instead, your app declares the minimum Chromium major version it requires via `isUpdateRequired(...)`.

The following table gives a rough idea of when some popular web features became available in Chromium (and therefore the System WebView):

| Chromium major | Rough web-feature baseline                |
| -------------- | ----------------------------------------- |
| 97+            | Array findLast / findLastIndex            |
| 105+           | CSS :has() selector and container queries |
| 112+           | Native CSS nesting                        |
| 114+           | CSS text-wrap: balance                    |

Pick the minimum version based on the features your app uses and pass it as `minMajorVersion`.

## 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 turns a hard-to-diagnose class of Android bugs into something you can detect and fix: read the active WebView provider's package name, version, and Chromium major version, compare it against the minimum your app's bundle needs, and send users straight to the Play Store entry of their own WebView provider to update it. Your app declares the minimum Chromium version it requires, so the check always matches the web features your bundle actually uses. The API is fully typed and kept current with the latest Capacitor version.

### Why is this plugin not available on iOS?[¶](#why-is-this-plugin-not-available-on-ios "Permanent link")

On iOS, the `WKWebView` is part of the operating system and is updated together with iOS itself. It cannot be updated separately, so there is nothing for an app to detect or fix. All methods therefore reject as unimplemented on iOS and Web.

### Which minimum Chromium version should I require?[¶](#which-minimum-chromium-version-should-i-require "Permanent link")

There is no universal threshold, because "outdated" depends on which web features your app's bundle actually needs. Pick the minimum Chromium major version based on the features your app uses (for example, CSS `:has()` and container queries require Chromium 105 or newer) and pass it as `minMajorVersion` to `isUpdateRequired(...)`. See [Why Outdated System WebViews Matter](#why-outdated-system-webviews-matter) for a rough feature baseline table.

### Why is `majorVersion` sometimes `null`?[¶](#why-is-majorversion-sometimes-null "Permanent link")

The `majorVersion` is derived from the integer before the first dot of the WebView provider's `versionName`. If the `versionName` is not a Chromium-style version, which can happen with OEM WebView forks, the `majorVersion` is `null`. In that case, you can still inspect the raw `packageName` and `versionName` returned by `getInfo()`.

### Why does my app still use the old WebView after the user updated it?[¶](#why-does-my-app-still-use-the-old-webview-after-the-user-updated-it "Permanent link")

A WebView update only takes effect the next time the app process is started. The currently running app keeps using the old WebView until it is restarted.

### 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")

* [App Update](https://capawesome.io/docs/sdks/capacitor/app-update/): Assist with native app updates.
* [Device Info](https://capawesome.io/docs/sdks/capacitor/device-info/): Read device information, such as the model, manufacturer, and operating system.
* [Dialog](https://capawesome.io/docs/sdks/capacitor/dialog/): Show native alert, confirm, and prompt dialogs.

## 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/system-webview/CHANGELOG.md).

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

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

July 8, 2026 

Back to top

```json
{"@context": "https://schema.org", "@graph": [{"@type": "TechArticle", "@id": "https://capawesome.io/docs/sdks/capacitor/system-webview/#article", "headline": "Capacitor System WebView Plugin for Android", "name": "Capacitor System WebView Plugin for Android", "description": "Capacitor plugin to check the Android System WebView version, detect an outdated WebView, and prompt users to update it. Supports Android.", "inLanguage": "en", "url": "https://capawesome.io/docs/sdks/capacitor/system-webview/", "mainEntityOfPage": "https://capawesome.io/docs/sdks/capacitor/system-webview/", "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/system-webview/#software"}}, {"@type": "SoftwareSourceCode", "@id": "https://capawesome.io/docs/sdks/capacitor/system-webview/#software", "name": "Capacitor System WebView Plugin for Android", "description": "Capacitor plugin to check the Android System WebView version, detect an outdated WebView, and prompt users to update it. Supports Android.", "url": "https://capawesome.io/docs/sdks/capacitor/system-webview/", "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 turns a hard-to-diagnose class of Android bugs into something you can detect and fix: read the active WebView provider's package name, version, and Chromium major version, compare it against the minimum your app's bundle needs, and send users straight to the Play Store entry of their own WebView provider to update it. Your app declares the minimum Chromium version it requires, so the check always matches the web features your bundle actually uses. The API is fully typed and kept current with the latest Capacitor version."}}, {"@type": "Question", "name": "Why is this plugin not available on iOS?", "acceptedAnswer": {"@type": "Answer", "text": "On iOS, the WKWebView is part of the operating system and is updated together with iOS itself. It cannot be updated separately, so there is nothing for an app to detect or fix. All methods therefore reject as unimplemented on iOS and Web."}}, {"@type": "Question", "name": "Which minimum Chromium version should I require?", "acceptedAnswer": {"@type": "Answer", "text": "There is no universal threshold, because \"outdated\" depends on which web features your app's bundle actually needs. Pick the minimum Chromium major version based on the features your app uses (for example, CSS:has() and container queries require Chromium 105 or newer) and pass it as minMajorVersion to isUpdateRequired(...). See Why Outdated System WebViews Matter for a rough feature baseline table."}}, {"@type": "Question", "name": "Why is majorVersion sometimes null?", "acceptedAnswer": {"@type": "Answer", "text": "The majorVersion is derived from the integer before the first dot of the WebView provider's versionName. If the versionName is not a Chromium-style version, which can happen with OEM WebView forks, the majorVersion is null. In that case, you can still inspect the raw packageName and versionName returned by getInfo()."}}, {"@type": "Question", "name": "Why does my app still use the old WebView after the user updated it?", "acceptedAnswer": {"@type": "Answer", "text": "A WebView update only takes effect the next time the app process is started. The currently running app keeps using the old WebView until it is restarted."}}, {"@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/system-webview/"}
```
