---
description: Capacitor plugin to manage Wi-Fi connectivity, including adding, connecting, and disconnecting networks. Supports both Android and iOS.
title: Capacitor Wifi Plugin for Android & iOS - Capawesome
image: https://capawesome.io/docs/assets/images/social/sdks/capacitor/wifi.png
---

<!doctype html> 

[Skip to content ](#capacitor-wifi-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 ](/docs/sdks/capacitor/system-webview/)
* [ 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 [ Wifi ](/docs/sdks/capacitor/wifi/)
* [ iOS ](#ios)
* [ Configuration ](#configuration)
* [ Usage ](#usage)
* [ API ](#api)
* [ Type Aliases ](#type-aliases)
* [ Enums ](#enums)
* [ FAQ ](#faq)
* [ Related Plugins ](#related-plugins)
* [ Newsletter ](#newsletter)
* [ Changelog ](#changelog)
* [ Breaking Changes ](#breaking-changes)
* [ License ](#license)
* [ 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)
* [ Type Aliases ](#type-aliases)
* [ Enums ](#enums)
* [ FAQ ](#faq)
* [ Related Plugins ](#related-plugins)
* [ Newsletter ](#newsletter)
* [ Changelog ](#changelog)
* [ Breaking Changes ](#breaking-changes)
* [ License ](#license)

# Capacitor Wifi Plugin[¶](#capacitor-wifi-plugin "Permanent link")

Capacitor plugin to manage Wi-Fi connectivity, including adding, connecting, and disconnecting networks. Supports both Android and iOS.[1](#fn:1)[2](#fn:2)

[ ![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 Wifi plugin is one of the most complete Wi-Fi management solutions for Capacitor apps. Here are some of the key features:

* 🖥️ **Cross-platform**: Supports Android and iOS.
* 🌐 **Network Management**: Add, connect and disconnect networks.
* 🔍 **Network Scan**: Perform scans for available networks.
* 📟 **Device Info**: Retrieve essential device information like IP address.
* 🔁 **Up-to-date**: Always supports the latest Capacitor version.
* ⭐️ **Support**: Priority support from the Capawesome Team.
* ✨ **Handcrafted**: Built from the ground up with care and expertise, not forked or AI-generated.

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 Wifi plugin is typically used whenever an app needs to interact with Wi-Fi networks, for example:

* **IoT device onboarding**: Connect to the access point of a smart home device, camera, or other IoT hardware to configure it.
* **Guest Wi-Fi access**: Add a Wi-Fi network to the device's list of known networks via a system dialog, for example in hotel or event apps.
* **Network diagnostics**: Display the SSID, IP address, and signal strength (RSSI) of the current network.
* **Network discovery**: Scan for nearby Wi-Fi networks and present them to the user, for example in a setup wizard.

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

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

## Demo[¶](#demo "Permanent link")

| Android                                                                                   | iOS                                                                               |
| ----------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| ![Android Demo](https://capawesome.io/docs/assets/images/gifs/capacitor-wifi-android.gif) | ![iOS Demo](https://capawesome.io/docs/assets/images/gifs/capacitor-wifi-ios.gif) |

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

This plugin is only available to [Capawesome Insiders](https://capawesome.io/insiders/). First, make sure you have the Capawesome npm registry set up. You can do this by running the following commands:

`[](#%5F%5Fcodelineno-0-1)npm config set @capawesome-team:registry https://npm.registry.capawesome.io
[](#%5F%5Fcodelineno-0-2)npm config set //npm.registry.capawesome.io/:_authToken <YOUR_LICENSE_KEY>
`

**Attention**: Replace `<YOUR_LICENSE_KEY>` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/insiders/).

Next, 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-1-1)npx skills add capawesome-team/skills --skill capacitor-plugins
`

Then use the following prompt:

`` [](#%5F%5Fcodelineno-2-1)Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-wifi` 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-3-1)npm install @capawesome-team/capacitor-wifi
[](#%5F%5Fcodelineno-3-2)npx cap sync
`

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

#### Permissions[¶](#permissions "Permanent link")

This API requires the following elements be added to your `AndroidManifest.xml` before or after the `application` tag:

`[](#%5F%5Fcodelineno-4-1)<!-- Required if you want retrieve information about nearby Wi-Fi networks. -->
[](#%5F%5Fcodelineno-4-2)<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
`

#### Proguard[¶](#proguard "Permanent link")

If you are using Proguard, you need to add the following rules to your `proguard-rules.pro` file:

`[](#%5F%5Fcodelineno-5-1)-keep class io.capawesome.capacitorjs.plugins.** { *; }
`

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

#### Entitlements[¶](#entitlements "Permanent link")

Ensure `Access Wi-Fi Information` and `Hotspot` capabilities have been enabled in your application in Xcode. See [Add a capability to a target](https://help.apple.com/xcode/mac/current/#/dev88ff319e7) for more information.

#### Privacy Descriptions[¶](#privacy-descriptions "Permanent link")

Add the `NSLocationWhenInUseUsageDescription` and `NSLocationAlwaysAndWhenInUseUsageDescription` keys to the `ios/App/App/Info.plist` file, which tells the user why your app is requesting location information:

`[](#%5F%5Fcodelineno-6-1)<key>NSLocationWhenInUseUsageDescription</key>
[](#%5F%5Fcodelineno-6-2)<string>We need your location to request Wi-Fi information.</string>
[](#%5F%5Fcodelineno-6-3)<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
[](#%5F%5Fcodelineno-6-4)<string>We need your location to request Wi-Fi information.</string>
`

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

| Prop               | Type    | Description                                                                                                                                         | Default | Since |
| ------------------ | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- |
| **useWifiManager** | boolean | Whether or not to use the **deprecated** WifiManager API for connecting to Wi-Fi networks using the connect(...) method. Only available on Android. | false   | 6.3.0 |

### Examples[¶](#examples "Permanent link")

In `capacitor.config.json`:

`[](#%5F%5Fcodelineno-7-1){
[](#%5F%5Fcodelineno-7-2)  "plugins": {
[](#%5F%5Fcodelineno-7-3)    "Wifi": {
[](#%5F%5Fcodelineno-7-4)      "useWifiManager": undefined
[](#%5F%5Fcodelineno-7-5)    }
[](#%5F%5Fcodelineno-7-6)  }
[](#%5F%5Fcodelineno-7-7)}
`

In `capacitor.config.ts`:

`[](#%5F%5Fcodelineno-8-1)/// <reference types="@capawesome-team/capacitor-wifi" />
[](#%5F%5Fcodelineno-8-2)
[](#%5F%5Fcodelineno-8-3)import { CapacitorConfig } from '@capacitor/cli';
[](#%5F%5Fcodelineno-8-4)
[](#%5F%5Fcodelineno-8-5)const config: CapacitorConfig = {
[](#%5F%5Fcodelineno-8-6)  plugins: {
[](#%5F%5Fcodelineno-8-7)    Wifi: {
[](#%5F%5Fcodelineno-8-8)      useWifiManager: undefined,
[](#%5F%5Fcodelineno-8-9)    },
[](#%5F%5Fcodelineno-8-10)  },
[](#%5F%5Fcodelineno-8-11)};
[](#%5F%5Fcodelineno-8-12)
[](#%5F%5Fcodelineno-8-13)export default config;
`

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

The following examples show how to connect to and disconnect from a Wi-Fi network, scan for available networks, read information about the current network, and check whether Wi-Fi is enabled.

### Connect to a Wi-Fi network[¶](#connect-to-a-wi-fi-network "Permanent link")

Connect to a network by providing its SSID and password. On Android, the network will not be added to the device's list of known networks and no traffic will be routed through it; use `addNetwork(...)` instead if you want that. On iOS, `connect(...)` behaves the same as `addNetwork(...)`. Only available on Android and iOS:

`[](#%5F%5Fcodelineno-9-1)import { Wifi } from '@capawesome-team/capacitor-wifi';
[](#%5F%5Fcodelineno-9-2)
[](#%5F%5Fcodelineno-9-3)const connect = async () => {
[](#%5F%5Fcodelineno-9-4)    await Wifi.connect({
[](#%5F%5Fcodelineno-9-5)        ssid: 'MyNetwork',
[](#%5F%5Fcodelineno-9-6)        password: 'MyPassword',
[](#%5F%5Fcodelineno-9-7)        isHiddenSsid: false
[](#%5F%5Fcodelineno-9-8)    });
[](#%5F%5Fcodelineno-9-9)}
`

### Disconnect from a Wi-Fi network[¶](#disconnect-from-a-wi-fi-network "Permanent link")

On iOS, you can only disconnect from networks that you connected to using the plugin. This also removes the network from the list of known networks. Only available on Android and iOS:

`[](#%5F%5Fcodelineno-10-1)import { Wifi } from '@capawesome-team/capacitor-wifi';
[](#%5F%5Fcodelineno-10-2)
[](#%5F%5Fcodelineno-10-3)const disconnect = async () => {
[](#%5F%5Fcodelineno-10-4)    await Wifi.disconnect();
[](#%5F%5Fcodelineno-10-5)}
`

### Scan for available Wi-Fi networks[¶](#scan-for-available-wi-fi-networks "Permanent link")

Start a scan with `startScan()` and retrieve the results with `getAvailableNetworks()`. You can also listen for the `networksScanned` event to be notified when the scan results are available. Note that scan requests may be throttled if you scan too often. Only available on Android:

`[](#%5F%5Fcodelineno-11-1)import { Wifi } from '@capawesome-team/capacitor-wifi';
[](#%5F%5Fcodelineno-11-2)
[](#%5F%5Fcodelineno-11-3)const startScan = async () => {
[](#%5F%5Fcodelineno-11-4)    await Wifi.startScan();
[](#%5F%5Fcodelineno-11-5)}
[](#%5F%5Fcodelineno-11-6)
[](#%5F%5Fcodelineno-11-7)const getAvailableNetworks = async () => {
[](#%5F%5Fcodelineno-11-8)    const result = await Wifi.getAvailableNetworks();
[](#%5F%5Fcodelineno-11-9)    return result.networks;
[](#%5F%5Fcodelineno-11-10)}
`

### Get information about the current network[¶](#get-information-about-the-current-network "Permanent link")

Retrieve the SSID and IP address of the current network on Android and iOS. The signal strength (RSSI) is only available on Android:

`[](#%5F%5Fcodelineno-12-1)import { Wifi } from '@capawesome-team/capacitor-wifi';
[](#%5F%5Fcodelineno-12-2)
[](#%5F%5Fcodelineno-12-3)const getSsid = async () => {
[](#%5F%5Fcodelineno-12-4)    const result = await Wifi.getSsid();
[](#%5F%5Fcodelineno-12-5)    return result.ssid;
[](#%5F%5Fcodelineno-12-6)}
[](#%5F%5Fcodelineno-12-7)
[](#%5F%5Fcodelineno-12-8)const getIpAddress = async () => {
[](#%5F%5Fcodelineno-12-9)    const result = await Wifi.getIpAddress();
[](#%5F%5Fcodelineno-12-10)    return result.address;
[](#%5F%5Fcodelineno-12-11)}
[](#%5F%5Fcodelineno-12-12)
[](#%5F%5Fcodelineno-12-13)const getRssi = async () => {
[](#%5F%5Fcodelineno-12-14)    const result = await Wifi.getRssi();
[](#%5F%5Fcodelineno-12-15)    return result.rssi;
[](#%5F%5Fcodelineno-12-16)}
`

### Check if Wi-Fi is enabled[¶](#check-if-wi-fi-is-enabled "Permanent link")

Check whether Wi-Fi is turned on. Only available on Android:

`[](#%5F%5Fcodelineno-13-1)import { Wifi } from '@capawesome-team/capacitor-wifi';
[](#%5F%5Fcodelineno-13-2)
[](#%5F%5Fcodelineno-13-3)const isEnabled = async () => {
[](#%5F%5Fcodelineno-13-4)    const result = await Wifi.isEnabled();
[](#%5F%5Fcodelineno-13-5)    return result.enabled;
[](#%5F%5Fcodelineno-13-6)}
`

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

* [addNetwork(...)](#addnetwork)
* [connect(...)](#connect)
* [disconnect(...)](#disconnect)
* [getAvailableNetworks()](#getavailablenetworks)
* [getIpAddress()](#getipaddress)
* [getRssi()](#getrssi)
* [getSsid()](#getssid)
* [isEnabled()](#isenabled)
* [startScan()](#startscan)
* [checkPermissions()](#checkpermissions)
* [requestPermissions(...)](#requestpermissions)
* [addListener('networksScanned', ...)](#addlistenernetworksscanned-)
* [removeAllListeners()](#removealllisteners)
* [Interfaces](#interfaces)
* [Type Aliases](#type-aliases)
* [Enums](#enums)

### addNetwork(...)[¶](#addnetwork "Permanent link")

`[](#%5F%5Fcodelineno-14-1)addNetwork(options: AddNetworkOptions) => Promise<void>
`

Show a system dialog to add a Wi-Fi network to the device.

If the user accepts, the network will be added to the device's list of known networks and the traffic will be routed through it.

Only available on Android (SDK 30+) and iOS.

| Param       | Type                                    |
| ----------- | --------------------------------------- |
| **options** | [AddNetworkOptions](#addnetworkoptions) |

**Since:** 7.1.0

---

### connect(...)[¶](#connect "Permanent link")

`[](#%5F%5Fcodelineno-15-1)connect(options: ConnectOptions) => Promise<void>
`

Connect to a Wi-Fi network.

On **Android**, the network will NOT be added to the device's list of known networks and NO traffic will be routed through it. If you want to route traffic through the network, use `addNetwork(...)` instead.

On **iOS**, this is the same as `addNetwork()`.

Only available on Android and iOS.

| Param       | Type                              |
| ----------- | --------------------------------- |
| **options** | [ConnectOptions](#connectoptions) |

**Since:** 6.0.0

---

### disconnect(...)[¶](#disconnect "Permanent link")

`[](#%5F%5Fcodelineno-16-1)disconnect(options?: DisconnectOptions | undefined) => Promise<void>
`

Disconnect from a Wi-Fi network.

On **iOS**, you can only disconnect from networks that you connected to using the plugin. This also removes the Wi-Fi network from the list of known networks.

Only available on Android and iOS.

| Param       | Type                                    |
| ----------- | --------------------------------------- |
| **options** | [DisconnectOptions](#disconnectoptions) |

**Since:** 6.0.0

---

### getAvailableNetworks()[¶](#getavailablenetworks "Permanent link")

`[](#%5F%5Fcodelineno-17-1)getAvailableNetworks() => Promise<GetAvailableNetworksResult>
`

Get a list of Wi-Fi networks found during the last scan.

The returned networks are the most recently updated results, which may be from a previous scan if your current scan has not completed or succeeded.

Only available on Android.

**Returns:** `Promise<[GetAvailableNetworksResult](#getavailablenetworksresult)>`

**Since:** 6.0.0

---

### getIpAddress()[¶](#getipaddress "Permanent link")

`[](#%5F%5Fcodelineno-18-1)getIpAddress() => Promise<GetIpAddressResult>
`

Get the current IP address of the device.

Only available on Android and iOS.

**Returns:** `Promise<[GetIpAddressResult](#getipaddressresult)>`

**Since:** 6.0.0

---

### getRssi()[¶](#getrssi "Permanent link")

`[](#%5F%5Fcodelineno-19-1)getRssi() => Promise<GetRssiResult>
`

Get the received signal strength indicator (RSSI) of the current network in dBm.

Only available on Android.

**Returns:** `Promise<[GetRssiResult](#getrssiresult)>`

**Since:** 6.0.0

---

### getSsid()[¶](#getssid "Permanent link")

`[](#%5F%5Fcodelineno-20-1)getSsid() => Promise<GetSsidResult>
`

Get the service set identifier (SSID) of the current network.

Only available on Android and iOS.

**Returns:** `Promise<[GetSsidResult](#getssidresult)>`

**Since:** 6.0.0

---

### isEnabled()[¶](#isenabled "Permanent link")

`[](#%5F%5Fcodelineno-21-1)isEnabled() => Promise<IsEnabledResult>
`

Check if Wi-Fi is enabled.

Only available on Android.

**Returns:** `Promise<[IsEnabledResult](#isenabledresult)>`

**Since:** 6.0.0

---

### startScan()[¶](#startscan "Permanent link")

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

Start a scan for Wi-Fi networks.

This call may fail for any of the following reasons: - Scan requests may be throttled because of too many scans in a short time. - The device is idle and scanning is disabled. - Wi-Fi hardware reports a scan failure.

Only available on Android.

**Since:** 6.0.0

---

### checkPermissions()[¶](#checkpermissions "Permanent link")

`[](#%5F%5Fcodelineno-23-1)checkPermissions() => Promise<PermissionStatus>
`

Check permissions for the plugin.

Only available on Android and iOS.

**Returns:** `Promise<[PermissionStatus](#permissionstatus)>`

**Since:** 6.0.0

---

### requestPermissions(...)[¶](#requestpermissions "Permanent link")

`[](#%5F%5Fcodelineno-24-1)requestPermissions(options?: RequestPermissionsOptions | undefined) => Promise<PermissionStatus>
`

Request permissions for the plugin.

Only available on Android and iOS.

| Param       | Type                                                    |
| ----------- | ------------------------------------------------------- |
| **options** | [RequestPermissionsOptions](#requestpermissionsoptions) |

**Returns:** `Promise<[PermissionStatus](#permissionstatus)>`

**Since:** 6.0.0

---

### addListener('networksScanned', ...)[¶](#addlistenernetworksscanned "Permanent link")

`[](#%5F%5Fcodelineno-25-1)addListener(eventName: 'networksScanned', listenerFunc: (event: NetworksScannedEvent) => void) => Promise<PluginListenerHandle>
`

Called when the scan results are available.

Only available on Android.

| Param            | Type                                                           |
| ---------------- | -------------------------------------------------------------- |
| **eventName**    | 'networksScanned'                                              |
| **listenerFunc** | (event: [NetworksScannedEvent](#networksscannedevent)) => void |

**Returns:** `Promise<[PluginListenerHandle](#pluginlistenerhandle)>`

**Since:** 6.0.0

---

### removeAllListeners()[¶](#removealllisteners "Permanent link")

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

Remove all listeners for this plugin.

**Since:** 6.0.0

---

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

#### AddNetworkOptions[¶](#addnetworkoptions "Permanent link")

| Prop             | Type                                                                                               | Description                                                                                                                                                                                                           | Default                 | Since |
| ---------------- | -------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | ----- |
| **ssid**         | string                                                                                             | The SSID of the network to add.                                                                                                                                                                                       |                         | 7.1.0 |
| **isHiddenSsid** | boolean                                                                                            | Whether or not the SSID is hidden. Only available on Android.                                                                                                                                                         | false                   | 6.0.0 |
| **password**     | string                                                                                             | The password of the network to add.                                                                                                                                                                                   |                         | 7.1.0 |
| **securityType** | [NetworkSecurityType.PSK](#networksecuritytype) \| [NetworkSecurityType.SAE](#networksecuritytype) | The security type of the network to add. Use [NetworkSecurityType.PSK](#networksecuritytype) for WPA/WPA2 networks. Use [NetworkSecurityType.SAE](#networksecuritytype) for WPA3 networks. Only available on Android. | NetworkSecurityType.PSK | 7.1.0 |

#### ConnectOptions[¶](#connectoptions "Permanent link")

| Prop             | Type    | Description                                                   | Default | Since |
| ---------------- | ------- | ------------------------------------------------------------- | ------- | ----- |
| **ssid**         | string  | The SSID of the network to connect to.                        |         | 6.0.0 |
| **isHiddenSsid** | boolean | Whether or not the SSID is hidden. Only available on Android. | false   | 6.0.0 |
| **password**     | string  | The password of the network to connect to.                    |         | 6.0.0 |

#### DisconnectOptions[¶](#disconnectoptions "Permanent link")

| Prop     | Type   | Description                                                                                                                              | Since |
| -------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------- | ----- |
| **ssid** | string | The SSID of the network to disconnect from. If not provided, the device will disconnect from the current network. Only available on iOS. | 6.0.0 |

#### GetAvailableNetworksResult[¶](#getavailablenetworksresult "Permanent link")

| Prop         | Type        | Description                                            | Since |
| ------------ | ----------- | ------------------------------------------------------ | ----- |
| **networks** | Network\[\] | The list of Wi-Fi networks found during the last scan. | 6.0.0 |

#### Network[¶](#network "Permanent link")

| Prop              | Type                    | Description                                                                            | Since |
| ----------------- | ----------------------- | -------------------------------------------------------------------------------------- | ----- |
| **rssi**          | number                  | The received signal strength indicator (RSSI) of the network in dBm.                   | 6.1.0 |
| **securityTypes** | NetworkSecurityType\[\] | The service set identifier (SSID) of the network. Only available on Android (SDK 33+). | 6.1.0 |
| **ssid**          | string                  | The service set identifier (SSID) of the network.                                      | 6.0.0 |

#### GetIpAddressResult[¶](#getipaddressresult "Permanent link")

| Prop        | Type   | Description                   | Since |
| ----------- | ------ | ----------------------------- | ----- |
| **address** | string | The IP address of the device. | 6.0.0 |

#### GetRssiResult[¶](#getrssiresult "Permanent link")

| Prop     | Type   | Description                                                                  | Since |
| -------- | ------ | ---------------------------------------------------------------------------- | ----- |
| **rssi** | number | The received signal strength indicator (RSSI) of the current network in dBm. | 6.0.0 |

#### GetSsidResult[¶](#getssidresult "Permanent link")

| Prop     | Type   | Description                                                                                                                                                                                                        | Since |
| -------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----- |
| **ssid** | string | The service set identifier (SSID) of the current network. On **iOS 14+**, the SSID can only be retrieved if the network was connected to using the plugin or if the app has permission to access precise location. | 6.0.0 |

#### IsEnabledResult[¶](#isenabledresult "Permanent link")

| Prop        | Type    | Description                      | Since |
| ----------- | ------- | -------------------------------- | ----- |
| **enabled** | boolean | Whether or not Wi-Fi is enabled. | 6.0.0 |

#### PermissionStatus[¶](#permissionstatus "Permanent link")

| Prop         | Type                                | Since |
| ------------ | ----------------------------------- | ----- |
| **location** | [PermissionState](#permissionstate) | 6.0.0 |

#### RequestPermissionsOptions[¶](#requestpermissionsoptions "Permanent link")

| Prop            | Type           | Description                 | Default        | Since |
| --------------- | -------------- | --------------------------- | -------------- | ----- |
| **permissions** | 'location'\[\] | The permissions to request. | \["location"\] | 6.0.0 |

#### PluginListenerHandle[¶](#pluginlistenerhandle "Permanent link")

| Prop       | Type                |
| ---------- | ------------------- |
| **remove** | () => Promise<void> |

#### NetworksScannedEvent[¶](#networksscannedevent "Permanent link")

| Prop         | Type        | Description                                       | Since |
| ------------ | ----------- | ------------------------------------------------- | ----- |
| **networks** | Network\[\] | The list of Wi-Fi networks found during the scan. | 6.0.0 |

### Type Aliases[¶](#type-aliases "Permanent link")

#### PermissionState[¶](#permissionstate "Permanent link")

`'prompt' | 'prompt-with-rationale' | 'granted' | 'denied'`

#### PermissionType[¶](#permissiontype "Permanent link")

`'location'`

### Enums[¶](#enums "Permanent link")

#### NetworkSecurityType[¶](#networksecuritytype "Permanent link")

| Members                             | Value | Description                                                                                | Since |
| ----------------------------------- | ----- | ------------------------------------------------------------------------------------------ | ----- |
| **UNKNOWN**                         | \-1   | Unknown security type.                                                                     | 6.1.0 |
| **OPEN**                            | 0     | Open network.                                                                              | 6.1.0 |
| **WEP**                             | 1     | WEP network.                                                                               | 6.1.0 |
| **PSK**                             | 2     | PSK (Pre-Shared Key) network. This includes WPA/WPA2/WPA3-Personal networks.               | 6.1.0 |
| **EAP**                             | 3     | EAP (Extensible Authentication Protocol) network.                                          | 6.1.0 |
| **SAE**                             | 4     | SAE (Simultaneous Authentication of Equals) network.                                       | 6.1.0 |
| **EAP\_WPA3\_ENTERPRISE\_192\_BIT** | 5     | WPA3-Enterprise in 192-bit security network.                                               | 6.1.0 |
| **OWE**                             | 6     | OWE network.                                                                               | 6.1.0 |
| **WAPI\_PSK**                       | 7     | WAPI PSK network.                                                                          | 6.1.0 |
| **WAPI\_CERT**                      | 8     | WAPI Certificate network.                                                                  | 6.1.0 |
| **WPA3\_ENTERPRISE**                | 9     | WPA3-Enterprise network.                                                                   | 6.1.0 |
| **OSEN**                            | 10    | OSEN network.                                                                              | 6.1.0 |
| **PASSPOINT\_R1\_R2**               | 11    | Passpoint R1/R2 network, where TKIP and WEP are not allowed.                               | 6.1.0 |
| **PASSPOINT\_R3**                   | 12    | Passpoint R3 network, where TKIP and WEP are not allowed, and PMF must be set to Required. | 6.1.0 |
| **DPP**                             | 13    | Easy Connect (DPP) network.                                                                | 6.1.0 |

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

### Why is the SSID not returned on iOS?[¶](#why-is-the-ssid-not-returned-on-ios "Permanent link")

On iOS 14 and later, the SSID can only be retrieved if the network was connected to using the plugin or if the app has permission to access precise location. Make sure the `Access Wi-Fi Information` capability and the location privacy descriptions are set up as described in the [Installation](#installation) section, and request the location permission at runtime using `requestPermissions(...)`.

### What is the difference between `connect` and `addNetwork`?[¶](#what-is-the-difference-between-connect-and-addnetwork "Permanent link")

On Android, `connect(...)` establishes a connection without adding the network to the device's list of known networks and without routing traffic through it. `addNetwork(...)` shows a system dialog and, if the user accepts, adds the network to the list of known networks and routes traffic through it. On iOS, both methods behave identically. Note that `addNetwork(...)` requires Android SDK 30 or later.

### Why does `startScan` fail on Android?[¶](#why-does-startscan-fail-on-android "Permanent link")

The call may fail because scan requests are throttled after too many scans in a short time, because the device is idle and scanning is disabled, or because the Wi-Fi hardware reports a scan failure. In that case, you can still call `getAvailableNetworks()` to get the most recently updated results from a previous scan.

### What permissions does this plugin require?[¶](#what-permissions-does-this-plugin-require "Permanent link")

On Android, the `ACCESS_FINE_LOCATION` permission is required if you want to retrieve information about nearby Wi-Fi networks. On iOS, the `Access Wi-Fi Information` and `Hotspot` capabilities must be enabled and the location privacy descriptions must be added to your `Info.plist` file. You can check and request the location permission at runtime using `checkPermissions()` and `requestPermissions(...)`. See [Installation](#installation) for details.

### Does this plugin work on the Web?[¶](#does-this-plugin-work-on-the-web "Permanent link")

No, the plugin only supports Android and iOS, since web browsers do not expose APIs for managing Wi-Fi connectivity. The supported platforms for each method are documented in the [API](#api) section.

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

* [Network](https://capawesome.io/docs/sdks/capacitor/network/): Access network information such as the connection type and status.
* [Bluetooth Low Energy](https://capawesome.io/docs/sdks/capacitor/bluetooth-low-energy/): Communicate with Bluetooth Low Energy devices in the central and peripheral role.
* [NFC](https://capawesome.io/docs/sdks/capacitor/nfc/): Read, write, and emulate NFC tags.
* [SIM](https://capawesome.io/docs/sdks/capacitor/sim/): Read SIM card and carrier 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/wifi/CHANGELOG.md).

## Breaking Changes[¶](#breaking-changes "Permanent link")

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

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

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

---

1. This project is not affiliated with, endorsed by, sponsored by, or approved by Wi-Fi Alliance or any of their affiliates or subsidiaries. [↩](#fnref:1 "Jump back to footnote 1 in the text")
2. `Wi-Fi` is a registered trademark of Wi-Fi Alliance. [↩](#fnref:2 "Jump back to footnote 2 in the text")

July 8, 2026 

Back to top

```json
{"@context": "https://schema.org", "@graph": [{"@type": "TechArticle", "@id": "https://capawesome.io/docs/sdks/capacitor/wifi/#article", "headline": "Capacitor Wifi Plugin for Android & iOS", "name": "Capacitor Wifi Plugin for Android & iOS", "description": "Capacitor plugin to manage Wi-Fi connectivity, including adding, connecting, and disconnecting networks. Supports both Android and iOS.", "inLanguage": "en", "url": "https://capawesome.io/docs/sdks/capacitor/wifi/", "mainEntityOfPage": "https://capawesome.io/docs/sdks/capacitor/wifi/", "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/wifi/#software"}}, {"@type": "SoftwareSourceCode", "@id": "https://capawesome.io/docs/sdks/capacitor/wifi/#software", "name": "Capacitor Wifi Plugin for Android & iOS", "description": "Capacitor plugin to manage Wi-Fi connectivity, including adding, connecting, and disconnecting networks. Supports both Android and iOS.", "url": "https://capawesome.io/docs/sdks/capacitor/wifi/", "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": "Why is the SSID not returned on iOS?", "acceptedAnswer": {"@type": "Answer", "text": "On iOS 14 and later, the SSID can only be retrieved if the network was connected to using the plugin or if the app has permission to access precise location. Make sure the Access Wi-Fi Information capability and the location privacy descriptions are set up as described in the Installation section, and request the location permission at runtime using requestPermissions(...)."}}, {"@type": "Question", "name": "What is the difference between connect and addNetwork?", "acceptedAnswer": {"@type": "Answer", "text": "On Android, connect(...) establishes a connection without adding the network to the device's list of known networks and without routing traffic through it. addNetwork(...) shows a system dialog and, if the user accepts, adds the network to the list of known networks and routes traffic through it. On iOS, both methods behave identically. Note that addNetwork(...) requires Android SDK 30 or later."}}, {"@type": "Question", "name": "Why does startScan fail on Android?", "acceptedAnswer": {"@type": "Answer", "text": "The call may fail because scan requests are throttled after too many scans in a short time, because the device is idle and scanning is disabled, or because the Wi-Fi hardware reports a scan failure. In that case, you can still call getAvailableNetworks() to get the most recently updated results from a previous scan."}}, {"@type": "Question", "name": "What permissions does this plugin require?", "acceptedAnswer": {"@type": "Answer", "text": "On Android, the ACCESS_FINE_LOCATION permission is required if you want to retrieve information about nearby Wi-Fi networks. On iOS, the Access Wi-Fi Information and Hotspot capabilities must be enabled and the location privacy descriptions must be added to your Info.plist file. You can check and request the location permission at runtime using checkPermissions() and requestPermissions(...). See Installation for details."}}, {"@type": "Question", "name": "Does this plugin work on the Web?", "acceptedAnswer": {"@type": "Answer", "text": "No, the plugin only supports Android and iOS, since web browsers do not expose APIs for managing Wi-Fi connectivity. The supported platforms for each method are documented in the API section."}}, {"@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/wifi/"}
```
