ISC license Current npm package version Maintenance Semantic Release Downloads Total downloads Follow @JuanSeBestia

This project is based on the no longer maintained

Getting started

$ npm install react-native-wifi-reborn --save


You need use enable Access WIFI Information, with correct profile

iOS 13

You need put "Privacy - Location When In Use Usage Description" or "Privacy - Location Always and When In Use Usage Description" in Settings -> info



Since Android 6, you must request the ACCESS_FINE_LOCATION permission at runtime to use the device's Wi-Fi scanning and managing capabilities. In order to accomplish this, you can use the PermissionsAndroid API or React Native Permissions.


import { PermissionsAndroid } from 'react-native';

const granted = await PermissionsAndroid.request(
        title: 'Location permission is required for WiFi connections',
          'This app needs location permission as this is required  ' +
          'to scan for wifi networks.',
        buttonNegative: 'DENY',
        buttonPositive: 'ALLOW',
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
    // You can now use react-native-wifi-reborn
} else {
    // Permission denied

Autolinking (React Native 60+)

This library is correctly autolinked on React Native 60+ πŸŽ‰.

When using Wix React Native Navigation


While the library is included (via settings.gradle) and added (via build.gradle), you still need to manually added to your MainApplication.

import com.reactlibrary.RNWifiPackage;

public class MainApplication extends NavigationApplication {
    public List<ReactPackage> createAdditionalReactPackages() {
    return Arrays.asList(
        new RNWifiPackage());

React Native Link (for React Native 0.59 and below)

$ react-native link react-native-wifi-reborn

Manual linking


  1. In XCode, in the project navigator, right click Libraries ➜ Add Files to [your project's name]
  2. Go to node_modules ➜ react-native-wifi-reborn and add RNWifi.xcodeproj
  3. In XCode, in the project navigator, select your project. Add libRNWifi.a to your project's Build Phases ➜ Link Binary With Libraries
  4. Run your project (Cmd+R)<


  1. Open up android/app/src/main/java/[...]/
  1. Append the following lines to android/settings.gradle:
    include ':react-native-wifi-reborn'
    project(':react-native-wifi-reborn').projectDir = new File(rootProject.projectDir,   '../node_modules/react-native-wifi-reborn/android')
  2. Insert the following lines inside the dependencies block in android/app/build.gradle:
      implementation project(':react-native-wifi-reborn')


import WifiManager from "react-native-wifi-reborn";

WifiManager.connectToProtectedSSID(ssid, password, isWep).then(
  () => {
    console.log("Connected successfully!");
  () => {
    console.log("Connection failed!");

  ssid => {
    console.log("Your current connected wifi SSID is " + ssid);
  () => {
    console.log("Cannot get current SSID!");


The api documentation is in progress.

Android & iOS

The following methods work on both Android and iOS

connectToProtectedSSID(SSID: string, password: string, isWEP: boolean): Promise

Returns a promise that resolves when connected or rejects with the error when it couldn't connect to the wifi network.


Type: string

The SSID of the wifi network to connect with.


Type: string

The password of the wifi network to connect with.


Type: boolean Used on iOS. If true, the network is WEP Wi-Fi; otherwise it is a WPA or WPA2 personal Wi-Fi network.


getCurrentWifiSSID(): Promise

Only iOS

The following methods work only on iOS

connectToSSID(ssid: string): Promise

connectToSSIDPrefix(ssid: string): Promise

disconnectFromSSID(ssid: string): Promise

connectToProtectedSSIDPrefix(SSIDPrefix: string, password: string, isWep: boolean): Promise

Use this function when you want to match a known SSID prefix, but don’t have a full SSID. If the system finds multiple Wi-Fi networks whose SSID string matches the given prefix, it selects the network with the greatest signal strength.


Type: string A prefix string to match the SSID of a Wi-Fi network.


Type: string The password of the wifi network to connect with.


Type: boolean Used on iOS. If YES, the network is WEP Wi-Fi; otherwise it is a WPA or WPA2 personal Wi-Fi network.


Only Android

The following methods work only on Android

loadWifiList(): Promise<Array<WifiEntry>>

Returns a list of nearby WiFI networks.


reScanAndLoadWifiList(): Promise<Array<string>>

Similar to loadWifiList but it forcefully starts a new WiFi scan and only passes the results when the scan is done.

isEnabled(): Promise<boolean>

Method to check if WiFi is enabled.

const enabled = await WifiManager.isEnabled();
this.setState({wifiIsEnabled: enabled});

setEnabled(enabled: boolean)

Method to set the WiFi on or off on the user's device.

WifiManager.setEnabled(true); //set WiFi ON
WifiManager.setEnabled(false); //set WiFi OFF

connectionStatus(): Promise<boolean>

Returns if the device is currently connected to a WiFi network.


Disconnect currently connected WiFi network.

getBSSID(): Promise<string>

Returns the BSSID (basic service set identifier) of the currently connected WiFi network.

getCurrentSignalStrength(): Promise<number>

Returns the RSSI (received signal strength indicator) of the currently connected WiFi network.

getFrequency(): Promise<number>

Returns the frequency of the currently connected WiFi network.

getIP(): Promise<number>

Returns the IP of the currently connected WiFi network.

isRemoveWifiNetwork(ssid: String): Promise<boolean>

This method will remove the wifi network configuration. If you are connected to that network, it will disconnect.


forceWifiUsage(useWifi: boolean): Promise

Use this to execute api calls to a wifi network that does not have internet access. Useful for commissioning IoT devices. This will route all app network requests to the network (instead of the mobile connection). It is important to disable it again after using as even when the app disconnects from the wifi network it will keep on routing everything to wifi.