A smart splash screen for React Native apps
Switch branches/tags
Nothing to show
Clone or download
Latest commit 08293d1 Aug 17, 2017
Failed to load latest commit information.
android Fix to work with RN >= 0.47 Aug 8, 2017
ios iOS: cleanup May 18, 2017
.gitignore finished first version Aug 15, 2016
.npmignore finished first version Aug 15, 2016
LICENSE Initial commit Aug 15, 2016
README.md added notice Feb 2, 2017
SplashScreen.js finished first version Aug 15, 2016
note.md updated note Oct 10, 2016
package.json 2.3.5 Aug 17, 2017



npm npm npm npm

A smart splash screen for React Native apps, written in JS, oc and java for cross-platform support. It works on iOS and Android.


react-native-smart-splash-screen-ios-preview react-native-smart-splash-screen-android-preview


npm install react-native-smart-splash-screen --save


It can only be used greater-than-equal react-native 0.4.0 for ios, if you want to use the package less-than react-native 0.4.0, use npm install react-native-smart-splash-screen@untilRN0.40 --save

Installation (iOS)

  • Drag RCTSplashScreen.xcodeproj to your project on Xcode.

  • Click on your main project file (the one that represents the .xcodeproj) select Build Phases and drag libRCTSplashScreen.a from the Products folder inside the RCTSplashScreen.xcodeproj.

  • Look for Header Search Paths and make sure it contains $(SRCROOT)/../../../react-native/React as recursive.

  • In your project, Look for Header Search Paths and make sure it contains $(SRCROOT)/../node_modules/react-native-smart-splash-screen/ios/RCTSplashScreen/RCTSplashScreen

  • delete your project's LaunchScreen.xib

  • Drag SplashScreenResource folder to your project if you want change image, replace splash.png or add a image with your custom name

  • In AppDelegate.m

#import "RCTSplashScreen.h" //import interface
RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation

//[RCTSplashScreen open:rootView];
[RCTSplashScreen open:rootView withImageNamed:@"splash"]; // activate splashscreen, imagename from LaunchScreen.xib

rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];

self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UIViewController *rootViewController = [UIViewController new];
rootViewController.view = rootView;
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];
return YES;

Installation (Android)

  • In android/settings.gradle
include ':react-native-smart-splashscreen'
project(':react-native-smart-splashscreen').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-smart-splash-screen/android')
  • In android/app/build.gradle
dependencies {
    // From node_modules
    compile project(':react-native-smart-splashscreen')
  • Add your own drawable/splash.png to android/app/src/main/res/, it is recommended to add drawable-?dpi folders that you need.

  • in MainApplication.java

import com.reactnativecomponent.splashscreen.RCTSplashScreenPackage;    //import package
 * A list of packages used by the app. If the app uses additional views
 * or modules besides the default ones, add more packages here.
protected List<ReactPackage> getPackages() {
    return Arrays.<ReactPackage>asList(
        new MainReactPackage(),
        new RCTSplashScreenPackage()    //register Module

  • in MainActivity.java
import com.reactnativecomponent.splashscreen.RCTSplashScreen;    //import RCTSplashScreen
protected void onCreate(Bundle savedInstanceState) {
    RCTSplashScreen.openSplashScreen(this);   //open splashscreen
    //RCTSplashScreen.openSplashScreen(this, true, ImageView.ScaleType.FIT_XY);   //open splashscreen fullscreen
  • In android/app/**/styles.xml
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="android:windowIsTranslucent">true</item>

Full Demo

see ReactNativeComponentDemos


import SplashScreen from 'react-native-smart-splash-screen'
componentDidMount () {
     //SplashScreen.close(SplashScreen.animationType.scale, 850, 500)
        animationType: SplashScreen.animationType.scale,
        duration: 850,
        delay: 500,


  • close(animationType, duration, delay) close splash screen with custom animation

    • animationType: determine the type of animation. enum(animationType.none, animationType.fade, animationType.scale)
    • duration: determine the duration of animation
    • delay: determine the delay of animation