UTA DevHub
UI Development/Splash Screen Guide

Splash Screen Guide

A comprehensive guide for implementing and managing splash screens in React Native applications

Splash Screen Guide

Introduction

A splash screen is a temporary UI element displayed immediately when an app is launched, providing immediate visual feedback to users while the app initializes. Beyond being a mere loading screen, a well-designed splash screen serves several important purposes:

  • Improves perceived performance by giving immediate visual feedback
  • Strengthens brand identity by prominently displaying logos and brand colors
  • Bridges the gap between the user tapping your app icon and the app becoming interactive
  • Masks initialization complexity with a simple, elegant screen

In our initialization architecture, the splash screen plays a crucial role during the Pre-UI stage when critical initializations occur before any React components are rendered.

Key Integration Point

The splash screen is managed by our initialization system and should remain visible until the Pre-UI stage completes. This ensures users see a smooth transition from splash screen to your app content.

Choosing a Library

Several libraries are available for implementing splash screens in React Native. We recommend using react-native-bootsplash for its reliability, features, and performance.

react-native-bootsplash is our recommended solution because it offers:

  • Native implementation for both iOS and Android
  • Asset generation CLI to automate resource creation
  • Customizable transitions with fade durations
  • Progress reporting API for initialization feedback
  • Storyboard support for iOS
  • Android 12+ compatibility with the new SplashScreen API
  • Excellent TypeScript support

The library provides a clean API that aligns perfectly with our initialization architecture.

Guide Sections

This comprehensive guide is organized into focused sections:

📱 Platform Implementation

Native setup and configuration for iOS and Android platforms, including:

  • iOS Storyboard configuration
  • Android drawable and theme setup
  • Platform-specific best practices
  • Handling different Android versions

🎨 Design & Assets

Creating and optimizing splash screen assets:

  • Asset generation with CLI tools
  • Supporting light/dark modes
  • Image optimization techniques
  • Resolution and sizing guidelines

🔄 Integration with App Initialization

Seamlessly integrating splash screens with the app initialization flow:

  • Pre-UI stage coordination
  • Progress reporting during initialization
  • Custom loading screens
  • Error handling strategies

🏢 White-Label Support

Implementing splash screens for multi-brand applications:

  • Build-time vs runtime configuration
  • Brand asset management
  • Dynamic brand selection
  • Hybrid approaches

🛠️ Advanced Topics

Advanced implementations and customizations:

  • Custom animations
  • Progress indicators
  • Abstracting functionality
  • Performance optimization

Quick Start

For a basic implementation:

  1. Install the library:

    npm install react-native-bootsplash
    cd ios && pod install
  2. Generate assets:

    npx react-native-bootsplash generate \
      --assets-path=assets/splash \
      --background-color="#FFFFFF" \
      --logo-width=100 \
      path/to/your/logo.png
  3. Configure platforms: See Platform Implementation

  4. Integrate with initialization: See Integration with App Initialization

Summary

A well-implemented splash screen enhances user experience by providing immediate visual feedback during app initialization. By following the patterns in this guide, you can create professional, performant splash screens that integrate seamlessly with our initialization architecture.

Key principles to remember:

  • Keep splash screens simple and brand-focused
  • Use our SplashScreen abstraction for library flexibility
  • Hide the splash screen after Pre-UI initialization completes
  • Support both light and dark modes
  • Optimize assets for performance
  • Test across multiple devices and platforms

On this page