Expo

Get Started
API Reference

StatusBar

Component to control the app status bar.

Usage with Navigator

It is possible to have multiple StatusBar components mounted at the same time. The props will be merged in the order the StatusBar components were mounted.
import React, { useState } from 'react';
import { Button, Platform, SafeAreaView, StatusBar, StyleSheet, Text, View } from 'react-native';

const STYLES = ['default', 'dark-content', 'light-content'];
const TRANSITIONS = ['fade', 'slide', 'none'];

const App = () => {
  const [hidden, setHidden] = useState(false);
  const [statusBarStyle, setStatusBarStyle] = useState(STYLES[0]);
  const [statusBarTransition, setStatusBarTransition] = useState(TRANSITIONS[0]);

  const changeStatusBarVisibility = () => setHidden(!hidden);

  const changeStatusBarStyle = () => {
    const styleId = STYLES.indexOf(statusBarStyle) + 1;
    if (styleId === STYLES.length) {
      setStatusBarStyle(STYLES[0]);
    } else {
      setStatusBarStyle(STYLES[styleId]);
    }
  };

  const changeStatusBarTransition = () => {
    const transition = TRANSITIONS.indexOf(statusBarTransition) + 1;
    if (transition === TRANSITIONS.length) {
      setStatusBarTransition(TRANSITIONS[0]);
    } else {
      setStatusBarTransition(TRANSITIONS[transition]);
    }
  };

  return (
    <SafeAreaView style={styles.container}>
      <StatusBar
        animated={true}
        backgroundColor="#61dafb"
        barStyle={statusBarStyle}
        showHideTransition={statusBarTransition}
        hidden={hidden}
      />
      <Text style={styles.textStyle}>
        StatusBar Visibility:{'\n'}
        {hidden ? 'Hidden' : 'Visible'}
      </Text>
      <Text style={styles.textStyle}>
        StatusBar Style:{'\n'}
        {statusBarStyle}
      </Text>
      {Platform.OS === 'ios' ? (
        <Text style={styles.textStyle}>
          StatusBar Transition:{'\n'}
          {statusBarTransition}
        </Text>
      ) : null}
      <View style={styles.buttonsContainer}>
        <Button title="Toggle StatusBar" onPress={changeStatusBarVisibility} />
        <Button title="Change StatusBar Style" onPress={changeStatusBarStyle} />
        {Platform.OS === 'ios' ? (
          <Button title="Change StatusBar Transition" onPress={changeStatusBarTransition} />
        ) : null}
      </View>
    </SafeAreaView>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    backgroundColor: '#ECF0F1',
  },
  buttonsContainer: {
    padding: 10,
  },
  textStyle: {
    textAlign: 'center',
    marginBottom: 8,
  },
});

export default App;

For cases where using a component is not ideal, there is also an imperative API exposed as static functions on the component. It is however not recommended to use the static API and the component for the same prop because any value set by the static API will get overridden by the one set by the component in the next render.

The height of the status bar, which includes the notch height, if present.

If the transition between status bar property changes should be animated. Supported for backgroundColor, barStyle and hidden properties.
TypeRequiredDefault
booleanNofalse

The background color of the status bar.
TypeRequiredDefault
colorNodefault system StatusBar background color, or 'black' if not defined

Sets the color of the status bar text.
On Android, this will only have an impact on API versions 23 and above.
TypeRequiredDefault
StatusBarStyleNo'default'

If the status bar is hidden.
TypeRequiredDefault
booleanNofalse

If the network activity indicator should be visible.
TypeDefault
booleanfalse

The transition effect when showing and hiding the status bar using the hidden prop.
TypeDefault
StatusBarAnimation'fade'

If the status bar is translucent. When translucent is set to true, the app will draw under the status bar. This is useful when using a semi transparent status bar color.
TypeDefault
booleanfalse

static popStackEntry(entry: any)
Get and remove the last StatusBar entry from the stack.
Parameters:
NameTypeDescription
entry (Required)anyEntry returned from pushStackEntry.

static pushStackEntry(props: any)
Push a StatusBar entry onto the stack. The return value should be passed to popStackEntry when complete.
Parameters:
NameTypeDescription
props (Required)anyObject containing the StatusBar props to use in the stack entry.

static replaceStackEntry(entry: any, props: any)
Replace an existing StatusBar stack entry with new props.
Parameters:
NameTypeDescription
entry (Required)anyEntry returned from pushStackEntry to replace.
props (Required)anyObject containing the StatusBar props to use in the replacement stack entry.

static setBackgroundColor(color: string, [animated]: boolean)
Set the background color for the status bar.
Parameters:
NameTypeDescription
color (Required)stringBackground color.
animatedbooleanAnimate the style change.

static setBarStyle(style: StatusBarStyle, [animated]: boolean)
Set the status bar style.
Parameters:
NameTypeDescription
style (Required)StatusBarStyleStatus bar style to set.
animatedbooleanAnimate the style change.

static setHidden(hidden: boolean, [animation]: StatusBarAnimation)
Show or hide the status bar.
Parameters:
NameTypeDescription
hidden (Required)booleanHide the status bar.
animation (iOS)StatusBarAnimationAnimation when changing the status bar hidden property.

static setNetworkActivityIndicatorVisible(visible: boolean)
Control the visibility of the network activity indicator.
Parameters:
NameTypeDescription
visible (Required)booleanShow the indicator.

static setTranslucent(translucent: boolean)
Control the translucency of the status bar.
Parameters:
NameTypeDescription
translucent (Required)booleanSet as translucent.

Status bar animation type for transitions on the iOS.
Type
enum
Constants:
ValueTypeDescription
'fade'stringFade animation
'slide'stringSlide animation
'none'stringNo animation

Status bar style type.
Type
enum
Constants:
ValueTypeDescription
'default'stringDefault status bar style (dark for iOS, light for Android)
'light-content'stringDark background, white texts and icons
'dark-content'stringLight background, dark texts and icons (requires API>=23 on Android)