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.