expo-status-bar

Expo 6,418 's templates depend on expo-status-bar (elsewhere, npx expo install expo-status-bar), and the blank ones mount <StatusBar style="auto" /> in App.tsx. Its style prop takes 'auto' (the default: dark icons in light mode, light in dark mode), 'inverted', 'light' or 'dark'; it keeps animated and hidden, and the imperative calls are StatusBar.setStyle('light', true) and StatusBar.setHidden(true, 'fade') (the older setStatusBarStyle() exports are deprecated). SDK 55 made backgroundColor and translucent no-ops; SDK 56 removed them.

SDK 56 also added a config plugin, because no JavaScript runs while the splash screen shows. Adding ["expo-status-bar", { "style": "light" }] to plugins in app.json writes the initial style into the native theme at prebuild time:

Regenerating android/ and checking the theme the plugin wroteShell
npx expo prebuild --platform android --no-install
grep -n "windowLight" android/app/src/main/res/values/styles.xml
Output
7:    <item name="android:windowLightStatusBar">false</item>

The component itself is small: it reads useColorScheme(), resolves 'auto' to a barStyle, and renders React Native 36,878 's StatusBar (see node_modules/expo-status-bar/src/NativeStatusBarWrapper.tsx).