Skip to content

features/battery

useBatteryOptimizationStatus()

ts
function useBatteryOptimizationStatus(): BatteryOptimizationStatus;

Hook that returns the current battery optimization status and updates when it changes (Android only).

Returns

BatteryOptimizationStatus

Current status, always 'unrestricted' on iOS


getBatteryOptimizationStatus()

ts
function getBatteryOptimizationStatus(): BatteryOptimizationStatus;

Get the current battery optimization status (Android only). Also fires onBatteryOptimizationStatusChanged if status changed since last call.

Returns

BatteryOptimizationStatus

Current status, always 'unrestricted' on iOS


onBatteryOptimizationStatusChanged

ts
const onBatteryOptimizationStatusChanged: NativeUpdatedValue<BatteryOptimizationStatusChangedEvent>;

Subscribes to battery optimization status changes (Android only). Fires when user returns from settings with a different status. Never fires on iOS.


BatteryOptimizationStatus

ts
type BatteryOptimizationStatus = "unrestricted" | "optimized" | "restricted";

Battery optimization status.

  • unrestricted: App can run freely in background. User explicitly allowed it.
  • optimized: System may limit background work (Doze, App Standby). Default state.
  • restricted: User or system severely limited background. Services blocked.

useBatteryWarning()

ts
function useBatteryWarning(): BatteryWarning;

Meta hook that bundles all battery warning state and actions (Android only). Use this for a complete battery warning UI implementation.

Returns

BatteryWarning

Example

tsx
function BatteryWarningBanner() {
  const { pending, status, dismiss, openSettings } = useBatteryWarning()

  if (!pending) return null

  return (
    <View>
      <Text>Battery status: {status}</Text>
      <Button onPress={openSettings} title="Fix" />
      <Button onPress={dismiss} title="Dismiss" />
    </View>
  )
}

BatteryWarning

Return type for useBatteryWarning hook.

Properties

PropertyTypeDescription
pendingbooleanWhether a battery warning is pending
statusBatteryOptimizationStatusCurrent battery optimization status
dismiss() => voidDismiss the warning without changing settings
openSettings() => voidOpen system battery settings for this app

useBatteryWarningPending()

ts
function useBatteryWarningPending(): boolean;

Hook that returns whether a battery warning is pending and updates when it changes (Android only).

Returns

boolean

true if warning is pending, always false on iOS


getBatteryWarningPending()

ts
function getBatteryWarningPending(): boolean;

Check if a battery warning is pending (Android only). Returns true if a foreground service start was blocked and the user hasn't dismissed the warning or fixed their battery settings. Auto-clears when battery status becomes unrestricted.

Returns

boolean

true if warning is pending, always false on iOS


onBatteryWarningPendingChanged

ts
const onBatteryWarningPendingChanged: NativeUpdatedValue<BatteryWarningPendingChangedEvent>;

Subscribes to battery warning pending state changes (Android only). Fires when: failure occurs (true), dismissBatteryWarning() called (false), or status becomes unrestricted (false). Never fires on iOS.


dismissBatteryWarning()

ts
function dismissBatteryWarning(): void;

Dismiss the battery warning without fixing settings (Android only). Call this when the user chooses to ignore the warning. No-op on iOS.

Returns

void


openBatterySettings()

ts
function openBatterySettings(): void;

Open the system battery settings for this app (Android only). No-op on iOS.

Returns

void


BatteryOptimizationStatusChangedEvent

ts
type BatteryOptimizationStatusChangedEvent = object;

Event fired when battery optimization status changes.

Properties

status

ts
status: BatteryOptimizationStatus;

BatteryWarningPendingChangedEvent

ts
type BatteryWarningPendingChangedEvent = object;

Event fired when battery warning pending state changes.

Properties

pending

ts
pending: boolean;