This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.
Expo SplashScreen
A library that provides access to controlling the visibility behavior of native splash screen.
The SplashScreen module from the expo-splash-screen library provides control over the native splash screen behavior. By default, the splash screen will automatically hide when your app is ready, but you can also manually control its visibility for advanced use cases.
From SDK 52, due to changes supporting the latest Android splash screen API, Expo Go and development builds cannot fully replicate the splash screen experience your users will see in your standalone app. Expo Go will show your app icon instead of the splash screen, and the splash screen on development builds will not reflect all properties set in the config plugin. It is highly recommended that you test your splash screen on a release build to ensure it looks as expected.
Also, see the guide on creating a splash screen image.
Installation
If you are installing this in an existing React Native app, make sure to install expo in your project.
Usage
For most apps, you don't need to do anything special with the splash screen. It will automatically hide when your app is ready. You can optionally configure animation options:
Delay hiding the splash screen
In some cases, it may be necessary to delay hiding the splash screen until certain resources are loaded. For example, if you need to load API data before displaying the app content, you can use preventAutoHideAsync() to manually control when the splash screen hides. The goal should be to hide the splash screen as soon as possible.
Configuration
You can configure expo-splash-screen using its built-in config plugin if you use config plugins in your project (Continuous Native Generation (CNG)). The plugin allows you to configure various properties that cannot be set at runtime and require building a new app binary to take effect. If your app does not use CNG, then you'll need to manually configure the library.
Using the config plugin, as shown below, is the recommended method for configuring the splash screen. The other methods are now considered legacy and will be removed in the future.
Example app.json with config plugin
Configurable properties
You can also configure expo-splash-screen, using the following app config properties but the config plugin should be preferred.
Are you using this library in an existing React Native app?
See how to configure the native projects in the installation instructions in the expo-splash-screen repository.
Animating the splash screen
SplashScreen provides an out-of-the-box fade animation. It can be configured using the setOptions method.
SplashScreen.setOptions({ duration: 1000, fade: true, });
If you prefer to use custom animation, see the with-splash-screen example on how to apply any arbitrary animations to your splash screen. You can initialize a new project from this example by running npx create-expo-app --example with-splash-screen.
API
import * as SplashScreen from 'expo-splash-screen';
Methods
Hides the native splash screen immediately. Be careful to ensure that your app has content ready to display when you hide the splash screen, or you may see a blank screen briefly. See the "Usage" section for an example.
voidMakes the native splash screen (configured in app.json) remain visible until hideAsync is called.
Important note: It is recommended to call this in global scope without awaiting, rather than inside React components or hooks, because otherwise this might be called too late, when the splash screen is already hidden.
Promise<boolean>Example
import * as SplashScreen from 'expo-splash-screen'; SplashScreen.preventAutoHideAsync(); export default function App() { // ... }
Configures the splashscreens default animation behavior.
void