This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.

Configure status bar, splash screen and app icon

Edit page

In this tutorial, learn the basics of how to configure a status bar, app icon, and splash screen.


In this chapter, we'll address some app details before deploying our app to an app store, such as theming the status bar, customizing the app icon, and splash screen.

Watch: Adding the finishing touches to your universal Expo app
Watch: Adding the finishing touches to your universal Expo app

Configure the status bar, customize your app icon, and set up the splash screen before deploying to the app store.


1

Configure the status bar

expo-status-bar library comes pre-installed in every project created using create-expo-app. This library provides a StatusBar component to configure the app's status bar style.

Inside src/app/_layout.tsx:

  1. Import StatusBar from expo-status-bar.
  2. Add the StatusBar component after the Stack component, inside GestureHandlerRootView. Set its style prop to light, so the status bar text and icons are light on the dark background.
src/app/_layout.tsx
import { Stack } from 'expo-router'; import { GestureHandlerRootView } from 'react-native-gesture-handler'; import { StatusBar } from 'expo-status-bar'; export default function RootLayout() { return ( <GestureHandlerRootView> <Stack> <Stack.Screen name="(tabs)" options={{ headerShown: false }} /> </Stack> <StatusBar style="light" /> </GestureHandlerRootView> ); }

Let's take a look at our app now on Android and iOS:

2

App icon

Inside the project, there's an icon.png file inside the assets/images directory. This is our app icon. It's a 1024px by 1024px image and looks as shown below:

Like the splash screen image, the "icon" property in the app.json file configures the app icon's path. By default, a new Expo project defines the correct path to "./assets/images/icon.png".

A new Expo project also has platform-specific icon properties, which take priority over "icon":

  • On Android, the "android.adaptiveIcon" property uses the android-icon-foreground.png, android-icon-background.png, and android-icon-monochrome.png files from the assets/images directory. The downloaded assets replaced these files with the StickerSmash icon, so we don't have to change anything.
  • On iOS, the "ios.icon" property uses the default Expo icon from the assets/expo.icon file. To use our icon.png on iOS, remove the following "ios" property from app.json:
app.json
{ "expo": { "icon": "./assets/images/icon.png", %%placeholder-start%%... %%placeholder-end%% "ios": { "icon": "./assets/expo.icon" } %%placeholder-start%%... %%placeholder-end%% } }

Expo Go doesn't show our app icon. We'll see it on the device after we build the app. To learn more, see the app icon guide.

3

Splash screen

A splash screen is visible before the app's content is loaded. It uses a smaller image, such as an app's icon, which is centered. It hides once the app's content is ready to be displayed.

The expo-splash-screen plugin already comes pre-installed in every project created using create-expo-app. This library provides a config plugin to configure the splash screen.

In app.json, the expo-splash-screen plugin is already configured to use the app's icon as the splash screen image (provided in the downloadable assets). Its backgroundColor is the default Expo blue (#208AEF). Change it to #25292e, so the splash screen has the same dark background as our app and its icon:

app.json
{ "plugins": [ %%placeholder-start%%... %%placeholder-end%% [ "expo-splash-screen", { "backgroundColor": "#25292e", "image": "./assets/images/splash-icon.png", "imageWidth": 76 } ] ] }

However, to test the splash screen, we cannot use Expo Go or a development build. To test it, we need to create a preview or a production build of our app. We recommend going through the following resources to learn more about the splash screen configuration and how to test it:

Summary

Chapter 8: Configure status bar, splash screen and app icon

Well done! We built an app that runs on Android, iOS, and the web from the same codebase.

The next section of the tutorial will guide you toward resources to learn more about concepts we've covered here and others we have mentioned briefly.

Next: Learning resources