---
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 the **Capacitor Vault** plugin — store secrets behind biometrics or a device passcode. ](/blog/announcing-the-capacitor-vault-plugin/) 

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

## 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/).

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

`[](#%5F%5Fcodelineno-3-1)import { Dialog } from '@capacitor/dialog';
[](#%5F%5Fcodelineno-3-2)import { SystemWebView } from '@capawesome/capacitor-system-webview';
[](#%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)};
[](#%5F%5Fcodelineno-3-21)
[](#%5F%5Fcodelineno-3-22)const getInfo = async () => {
[](#%5F%5Fcodelineno-3-23)  const info = await SystemWebView.getInfo();
[](#%5F%5Fcodelineno-3-24)  return info;
[](#%5F%5Fcodelineno-3-25)};
`

> \[!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.

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

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

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

`[](#%5F%5Fcodelineno-4-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-5-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-6-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`.

## 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 7, 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"}}}]}
```
