Skip to main content

expo-network

Version: 55.0.6 Provides useful information about the device’s network such as its IP address, MAC address, and airplane mode status.

Installation

npx expo install expo-network

Usage

import * as Network from 'expo-network';

// Get IP address
const ip = await Network.getIpAddressAsync();
console.log('IP:', ip);

// Get network state
const state = await Network.getNetworkStateAsync();
console.log('Connected:', state.isConnected);
console.log('Type:', state.type);

// Check airplane mode
const airplaneMode = await Network.isAirplaneModeEnabledAsync();
console.log('Airplane mode:', airplaneMode);

API Reference

Methods

getIpAddressAsync()
() => Promise<string>
Gets device IP address
const ip = await Network.getIpAddressAsync();
// Returns: "192.168.1.100"
getNetworkStateAsync()
() => Promise<NetworkState>
Gets network connection state
const state = await Network.getNetworkStateAsync();
console.log(state.isConnected); // true/false
console.log(state.isInternetReachable); // true/false
console.log(state.type); // NetworkStateType enum
isAirplaneModeEnabledAsync()
() => Promise<boolean>
Checks if airplane mode is enabled
const enabled = await Network.isAirplaneModeEnabledAsync();

Types

NetworkState

type
NetworkStateType
Network type: NONE, UNKNOWN, CELLULAR, WIFI, BLUETOOTH, ETHERNET, WIMAX, VPN, OTHER
isConnected
boolean
Whether device is connected to network
isInternetReachable
boolean
Whether internet is reachable

Examples

Check Connection

import * as Network from 'expo-network';

async function checkConnection() {
  const state = await Network.getNetworkStateAsync();
  
  if (!state.isConnected) {
    alert('No network connection');
    return false;
  }
  
  if (!state.isInternetReachable) {
    alert('No internet access');
    return false;
  }
  
  console.log('Connected via:', state.type);
  return true;
}

Monitor Network

import * as Network from 'expo-network';
import { useState, useEffect } from 'react';
import { View, Text } from 'react-native';

export default function NetworkStatus() {
  const [status, setStatus] = useState<Network.NetworkState | null>(null);

  useEffect(() => {
    checkNetwork();
    const interval = setInterval(checkNetwork, 5000);
    return () => clearInterval(interval);
  }, []);

  async function checkNetwork() {
    const state = await Network.getNetworkStateAsync();
    setStatus(state);
  }

  return (
    <View>
      <Text>Connected: {status?.isConnected ? 'Yes' : 'No'}</Text>
      <Text>Type: {status?.type}</Text>
    </View>
  );
}

Platform Support

PlatformSupported
iOS
Android
Web⚠️ Limited

Resources