Skip to main content

expo-battery

Version: 55.0.6 Provides battery information for the physical device, as well as corresponding event listeners.

Installation

npx expo install expo-battery

Usage

import * as Battery from 'expo-battery';
import { useEffect, useState } from 'react';

function App() {
  const [batteryLevel, setBatteryLevel] = useState<number | null>(null);

  useEffect(() => {
    Battery.getBatteryLevelAsync().then(setBatteryLevel);
    
    const subscription = Battery.addBatteryLevelListener(({ batteryLevel }) => {
      setBatteryLevel(batteryLevel);
    });

    return () => subscription.remove();
  }, []);

  return <Text>Battery: {(batteryLevel * 100).toFixed(0)}%</Text>;
}

API Reference

Methods

Battery.getBatteryLevelAsync()
() => Promise<number>
Gets current battery level (0-1)
const level = await Battery.getBatteryLevelAsync();
console.log(`${(level * 100).toFixed(0)}%`);
Battery.getBatteryStateAsync()
() => Promise<BatteryState>
Gets battery charging stateReturns:
  • Battery.BatteryState.UNKNOWN
  • Battery.BatteryState.UNPLUGGED
  • Battery.BatteryState.CHARGING
  • Battery.BatteryState.FULL
Battery.isLowPowerModeEnabledAsync()
() => Promise<boolean>
Checks if low power mode is enabled
Battery.getPowerStateAsync()
() => Promise<PowerState>
Gets complete power state
const powerState = await Battery.getPowerStateAsync();
console.log(powerState);
// {
//   batteryLevel: 0.75,
//   batteryState: Battery.BatteryState.CHARGING,
//   lowPowerMode: false
// }

Event Listeners

Battery.addBatteryLevelListener(listener)
(listener: (event: BatteryLevelEvent) => void) => EventSubscription
Listens for battery level changes
const subscription = Battery.addBatteryLevelListener(({ batteryLevel }) => {
  console.log('Battery:', batteryLevel);
});

// Clean up
subscription.remove();
Battery.addBatteryStateListener(listener)
(listener: (event: BatteryStateEvent) => void) => EventSubscription
Listens for battery state changes
Battery.addLowPowerModeListener(listener)
(listener: (event: LowPowerModeEvent) => void) => EventSubscription
Listens for low power mode changes

Examples

Battery Indicator

import * as Battery from 'expo-battery';
import { useEffect, useState } from 'react';
import { View, Text, StyleSheet } from 'react-native';

function BatteryIndicator() {
  const [batteryLevel, setBatteryLevel] = useState(0);
  const [batteryState, setBatteryState] = useState(Battery.BatteryState.UNKNOWN);

  useEffect(() => {
    async function loadBatteryInfo() {
      const level = await Battery.getBatteryLevelAsync();
      const state = await Battery.getBatteryStateAsync();
      setBatteryLevel(level);
      setBatteryState(state);
    }

    loadBatteryInfo();

    const levelSub = Battery.addBatteryLevelListener(({ batteryLevel }) => {
      setBatteryLevel(batteryLevel);
    });

    const stateSub = Battery.addBatteryStateListener(({ batteryState }) => {
      setBatteryState(batteryState);
    });

    return () => {
      levelSub.remove();
      stateSub.remove();
    };
  }, []);

  const percentage = (batteryLevel * 100).toFixed(0);
  const isCharging = batteryState === Battery.BatteryState.CHARGING;

  return (
    <View style={styles.container}>
      <Text style={styles.percentage}>{percentage}%</Text>
      <Text>{isCharging ? '⚡ Charging' : '🔋 Unplugged'}</Text>
    </View>
  );
}

const styles = StyleSheet.create({
  container: { padding: 20, alignItems: 'center' },
  percentage: { fontSize: 48, fontWeight: 'bold' }
});

Low Battery Warning

import * as Battery from 'expo-battery';
import { useEffect, useState } from 'react';
import { Alert } from 'react-native';

function useBatteryWarning() {
  useEffect(() => {
    const subscription = Battery.addBatteryLevelListener(({ batteryLevel }) => {
      if (batteryLevel < 0.2) {
        Alert.alert(
          'Low Battery',
          'Battery is below 20%. Please charge your device.'
        );
      }
    });

    return () => subscription.remove();
  }, []);
}

Platform Support

PlatformSupported
iOS
Android
Web✅ (Battery Status API)

Resources