My Expo app's Android status bar was invisible in light mode. The clock, battery, and signal icons were drawn white on a white background. Dark mode hid it completely, since white icons on a dark background look correct.

Why it happens

Android draws dark status bar icons only when the app tells it the background is light. The Expo template installs expo-status-bar, but I never rendered it anywhere, so nothing told Android to switch.

The fix

Render StatusBar once in the root layout with style="auto". It picks dark icons on a light theme and light icons on a dark one.

// app/_layout.tsx
import { StatusBar } from "expo-status-bar";
import { Stack } from "expo-router";

export default function RootLayout() {
  return (
    <>
      <StatusBar style="auto" />
      <Stack />
    </>
  );
}

If a screen needs different icons, like a dark launch overlay, it can render its own <StatusBar style="light" />. The most recently mounted one wins.

Takeaway

Test your Android app in light mode, not just dark. If your template installs expo-status-bar, check that something actually renders it.