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
Feel free to open issues and pull requests! Contributions are welcome.
This project is licensed under the MIT License.