Skip to content

Compatibility and modes

Supported targets

TargetRangeNotes
React Native0.76+TurboModule through codegen, with Bridge fallback where the Legacy Architecture remains available
ExpoSDK 52+Prebuild, development builds, and EAS Build only
AndroidAPI 24+Android 12+ always owns the earliest launch phase
iOS15.1+The system Launch Screen must remain static

React Native 0.82 and newer only provide the New Architecture. The package keeps the same JavaScript API across the TurboModule and Bridge fallback paths.

Android mode comparison

Capabilitysystemdialog (default)
Startup workLowestInflates a layout and creates a native Dialog
ArtworkCentered logo and solid colorCentered logo, full-screen artwork, or NinePatch
Custom hide transitionNo; exits the system splash directlyYes
show() after startupNoYes
Android 12+ visual modelClosest to the system modelSwitches to full-screen content after the system phase

Choose system

Prefer system mode when startup speed matters more than full-screen creative control, the design is a centered logo on a solid color, and the app does not need Android hide transitions or show() after startup.

Choose dialog

Keep dialog mode for full-screen artwork, .9.png or custom XML layouts, animated exits, or flows that show the native splash again.

Artwork constraints

Android system splash icons have size and mask constraints. Do not pass a full-screen poster as windowSplashScreenAnimatedIcon. Use dialog mode for full-screen artwork. For system mode, provide a logo with transparent padding and verify it across densities and Android 12+ devices.

iOS Launch Screens cannot run animation, web content, or runtime code. iOS transitions run on the native overlay created after launch.

Expo versus React Native CLI

The Expo config plugin updates MainActivity, AppDelegate, themes, and assets. React Native CLI projects maintain those files manually. Avoid inserting both manual and plugin-generated native calls into the same generated project.

Released under the MIT License.