A lightweight and customizable splash screen module for React Native.
β
Show and hide splash screen programmatically
β
Lightweight and fast
β
Supports both iOS and Android
npm install react-native-splash-view
yarn add react-native-splash-view
1οΈβ£ Install CocoaPods dependencies:
cd ios && pod install --repo-update && cd ..
2οΈβ£ Ensure SplashView
is correctly linked.
3οΈβ£ Create a Storyboard for Splash Screen:
- Open Xcode and go to the LaunchScreen.storyboard file.
- Ensure the Storyboard Name is set as
LaunchScreen
. - This will be used as the splash screen when the app starts.
4οΈβ£ Modify AppDelegate
to show the splash screen programmatically:
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
) -> Bool {
showSplashScreen() // Call the method to display the splash screen
return true
}
//Add below method in AppDelegate.swift
private func showSplashScreen() {
DispatchQueue.main.async {
if let splashClass = NSClassFromString("SplashView") as? NSObject.Type,
let splashInstance = splashClass.perform(NSSelectorFromString("sharedInstance"))?.takeUnretainedValue() as? NSObject {
splashInstance.perform(NSSelectorFromString("showSplash"))
}
}
}
}
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.moduleName = @"yourapp";
self.initialProps = @{};
[self showSplashScreen]; // Call the method to display the splash screen
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
// Add this method to AppDelegate.m
- (void)showSplashScreen {
dispatch_async(dispatch_get_main_queue(), ^{
Class splashClass = NSClassFromString(@"SplashView");
if (splashClass) {
id splashInstance = [splashClass performSelector:NSSelectorFromString(@"sharedInstance")];
if (splashInstance && [splashInstance respondsToSelector:NSSelectorFromString(@"showSplash")]) {
[splashInstance performSelector:NSSelectorFromString(@"showSplash")];
}
}
});
}
Create the file android/app/src/main/res/layout/launch_screen.xml
as per requirement:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/splash_logo" />
</FrameLayout>
You can specify a theme in android/app/src/main/res/values/styles.xml
and style name should be SplashViewTheme
.
<resources>
<style name="SplashViewTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowExitAnimation">@android:anim/fade_out</item>
<item name="android:windowLightStatusBar">true</item>
</style>
</resources>
Update MainActivity.kt
to display the splash screen on launch:
package com.example
import android.os.Bundle
import com.facebook.react.ReactActivity
import com.splashview.SplashView
class MainActivity : ReactActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
SplashView.showSplashView(this) // Show the splash screen
super.onCreate(savedInstanceState)
}
}
import { hideSplash, showSplash } from 'react-native-splash-view';
showSplash(); // Show the splash screen (If you don't want to start it from native side)
useEffect(() => {
setTimeout(() => {
hideSplash(); // Hide after some time
}, 5000);
}, []);
Method | Description |
---|---|
showSplash() |
Shows the splash screen |
hideSplash() |
Hides the splash screen |
Then run:
cd ios && pod install --repo-update && cd ..
Ensure your package is correctly linked. Run the following:
cd android && ./gradlew clean && cd ..
npx react-native run-android
If you're using React Native 0.75.x or below, you may face issues with EventEmitterCallback
in the react-native-splash-view
package due to TurboModule compatibility changes. You can apply a patch to make it work.
-
Install
patch-package
:npm install patch-package --save-dev
Or with Yarn:
yarn add patch-package --dev
-
Update
package.json
Add this to thescripts
section:"scripts": { "postinstall": "patch-package" }
-
Download and Place the Patch File Download the patch file from the following link: react-native-splash-view+0.0.15.patch
Once downloaded, place it in the root of your project under the
patches/
folder. You may need to create thepatches/
folder if it doesn't already exist. The file structure should look like this:/your-project-root βββ patches/ β βββ react-native-splash-view+0.0.15.patch βββ package.json
-
Apply the Patch After placing the patch file in the
patches/
folder, run:npx patch-package react-native-splash-view
This will apply the patch and fix issues related to React Native 0.75.x and below.
Feel free to open issues and pull requests! Contributions are welcome.
This project is licensed under the MIT License.