<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Julien Galletta</title>
    <description>The latest articles on DEV Community by Julien Galletta (@humbkr).</description>
    <link>https://dev.to/humbkr</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F609375%2Ffe87f7f9-b67c-4415-84c9-bb24a908fe76.jpeg</url>
      <title>DEV Community: Julien Galletta</title>
      <link>https://dev.to/humbkr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/humbkr"/>
    <language>en</language>
    <item>
      <title>Add a splash screen to a React Native app in 2021</title>
      <dc:creator>Julien Galletta</dc:creator>
      <pubDate>Fri, 23 Apr 2021 12:59:35 +0000</pubDate>
      <link>https://dev.to/stack-labs/add-a-splash-screen-to-a-react-native-app-in-2021-e6n</link>
      <guid>https://dev.to/stack-labs/add-a-splash-screen-to-a-react-native-app-in-2021-e6n</guid>
      <description>&lt;p&gt;I always struggle to remember the steps required in order to add a splash screen to a React Native app, and some tutorials out there are a bit outdated, so here is my (updated) take on the subject.&lt;/p&gt;

&lt;p&gt;This is a follow up to &lt;a href="https://medium.com/@appstud/add-a-splash-screen-to-a-react-native-app-810492e773f9" rel="noopener noreferrer"&gt;my 2019 article&lt;/a&gt; on the same subject. Since then only some minor things have changed, but they can make you lose quite a bit of time, so here we go.&lt;/p&gt;

&lt;p&gt;This tutorial will explain how to create a simple, seamless transition splash screen. No bells and whistles, only a simple logo centered on a plain background.&lt;/p&gt;

&lt;p&gt; I used &lt;code&gt;npx react-native init rn_splashscreen_tutorial --template typescript&lt;/code&gt; to instanciate my project (React Native 0.64 at the time). If you don’t want to use Typescript you can just rename the .ts files in .js files and fix the issues your interpreter is screaming at you, it should be trivial :)&lt;/p&gt;

&lt;p&gt;The final code is available on &lt;a href="https://gitlab.com/stack-labs/oss/rn-splashscreen-tutorial" rel="noopener noreferrer"&gt;Gitlab&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; if you are using Expo or Create React Native App you don’t need to go through all of this, this tutorial is for people that have either ejected their project or created it the good old way, using &lt;code&gt;react-native init&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Also note that I’m not an iOS nor Android developer, so some steps may surely be improved. I’ll be happy to read how you would do it in the comments!&lt;/p&gt;

&lt;h1&gt;
  
  
  Splash screen assets
&lt;/h1&gt;

&lt;p&gt;For this tutorial we will use the React logo. We need three sizes, to better match all the devices screen sizes (300px, 600px &lt;a class="mentioned-user" href="https://dev.to/x2"&gt;@x2&lt;/a&gt;, 900px &lt;a class="mentioned-user" href="https://dev.to/x3"&gt;@x3&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;You can get those images from &lt;a href="https://gitlab.com/stack-labs/oss/rn-splashscreen-tutorial/-/tree/master/assets" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Install and configure react-native-splash-screen
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Step 1: install react-native-splash-screen:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn add react-native-splash-screen
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install react-native-splash-screen --save
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depending on your package manager of choice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WARNING:&lt;/strong&gt; since React Native 0.60 we don’t need to link the libraries anymore, so don’t run react-native link. If you still are on 0.59 or before though, do run it: &lt;code&gt;react-native link react-native-splash-screen&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: update cocoa pods
&lt;/h2&gt;

&lt;p&gt;(mandatory for React Native 0.60+ or if you are using pods on your project).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd ios &amp;amp;&amp;amp; pod install &amp;amp;&amp;amp; cd ..
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 3: update App.tsx
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Open App.tsx&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;import SplashScreen from 'react-native-splash-screen';&lt;/code&gt; with the other imports&lt;/li&gt;
&lt;li&gt;Also &lt;code&gt;import { useEffect } from react;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Add a useEffect hook in the component, that calls SplashScreen.hide()&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F62ji7bkfhdlbtnqsyjbw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F62ji7bkfhdlbtnqsyjbw.png" alt="Alt Text" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://gitlab.com/stack-labs/oss/rn-splashscreen-tutorial/-/blob/master/assets/screenshots/rn_splash_01.png" rel="noopener noreferrer"&gt;Original image&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Add a splash screen to an iOS app
&lt;/h1&gt;

&lt;p&gt;First, open the project in Xcode.&lt;br&gt;
Open a command line and from the project root and run&lt;br&gt;
&lt;code&gt;open ios/[project_name].xcworkspace&lt;/code&gt;&lt;br&gt;
Note: Starting React Native 0.60, the iOS project uses cocoapods, so you have to open &lt;code&gt;[project_name].xcworkspace&lt;/code&gt; and not &lt;code&gt;[project_name].xcodeproj&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Add the image assets to the project
&lt;/h2&gt;

&lt;p&gt;In the left most navigator:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;select [project_name] &amp;gt; [project_name] &amp;gt; Imagex.xcassets&lt;/li&gt;
&lt;li&gt;click the “+” icon in the second left navigator and select “New Image Set”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flybevl5m356irnzt23m1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flybevl5m356irnzt23m1.png" alt="Alt Text" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://gitlab.com/stack-labs/oss/rn-splashscreen-tutorial/-/blob/master/assets/screenshots/rn_splash_03.png" rel="noopener noreferrer"&gt;Original image&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;name your image set “SplashIcon”&lt;/li&gt;
&lt;li&gt;add the three images you downloaded earlier. You can drag and drop all of them at the same time, Xcode will sort them by pixel density automatically.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft0d7d4jaguhgupollv96.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft0d7d4jaguhgupollv96.png" alt="Alt Text" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://gitlab.com/stack-labs/oss/rn-splashscreen-tutorial/-/blob/master/assets/screenshots/rn_splash_04.png" rel="noopener noreferrer"&gt;Original image&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Change the background color
&lt;/h2&gt;

&lt;p&gt;In the left most navigator, open &lt;strong&gt;LaunchScreen.storyboard&lt;/strong&gt; and select “&lt;strong&gt;View&lt;/strong&gt;”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8955cedecxkbxowi9hom.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8955cedecxkbxowi9hom.png" alt="Alt Text" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://gitlab.com/stack-labs/oss/rn-splashscreen-tutorial/-/blob/master/assets/screenshots/rn_splash_05.png" rel="noopener noreferrer"&gt;Original image&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Select the two elements &lt;strong&gt;[project_name]&lt;/strong&gt; and &lt;strong&gt;Powered by React Native&lt;/strong&gt; and delete them&lt;/li&gt;
&lt;li&gt;In the second left navigator, click on &lt;strong&gt;View&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Then on the right navigator, click on the &lt;strong&gt;Attribute inspector&lt;/strong&gt; icon (the one resembling cursors, 5th position)&lt;/li&gt;
&lt;li&gt;In the &lt;strong&gt;Background&lt;/strong&gt; select list, select &lt;strong&gt;Custom&lt;/strong&gt;, that will popup a dialog&lt;/li&gt;
&lt;li&gt;Select the color you want (you can enter an hexadecimal value in the options of the second tab), here we will set &lt;code&gt;#424242&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu9mh71fl3qoeoy6j73p1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu9mh71fl3qoeoy6j73p1.png" alt="Alt Text" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://gitlab.com/stack-labs/oss/rn-splashscreen-tutorial/-/blob/master/assets/screenshots/rn_splash_06.png" rel="noopener noreferrer"&gt;Original image&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Add the icon to the screen
&lt;/h2&gt;

&lt;p&gt;We now have to add the image we added to the project before.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the top right of the Xcode window, click on the &lt;em&gt;Library&lt;/em&gt; icon (the big plus sign)&lt;/li&gt;
&lt;li&gt;Select the &lt;em&gt;imageView&lt;/em&gt; component then drag-and-drop it into the launch screen view&lt;/li&gt;
&lt;li&gt;In the right panel, select the SplashIcon from the field “&lt;em&gt;Image&lt;/em&gt;”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb3kjn5psbtqowklkwabv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb3kjn5psbtqowklkwabv.png" alt="Alt Text" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://gitlab.com/stack-labs/oss/rn-splashscreen-tutorial/-/blob/master/assets/screenshots/rn_splash_07.png" rel="noopener noreferrer"&gt;Original image&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Make sure the Image View is a child of the View element, like in the next screenshot&lt;/li&gt;
&lt;li&gt;Set the Content Mode option to Aspect Fit if it’s not already the case&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjce5lgtp08ua9alcx19x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjce5lgtp08ua9alcx19x.png" alt="Alt Text" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://gitlab.com/stack-labs/oss/rn-splashscreen-tutorial/-/blob/master/assets/screenshots/rn_splash_08.png" rel="noopener noreferrer"&gt;Original image&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Center the image
&lt;/h2&gt;

&lt;p&gt;We need to make sure the icon is centered regardless of the device the app is running on. To do that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select the &lt;strong&gt;ImageView&lt;/strong&gt; in the second left navigator&lt;/li&gt;
&lt;li&gt;Click on the &lt;strong&gt;Align&lt;/strong&gt; button at the bottom right of the editor&lt;/li&gt;
&lt;li&gt;Add new alignment constraints &lt;strong&gt;Horizontally in container&lt;/strong&gt; and &lt;strong&gt;Vertically in container&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnoxpvpd5ixx5weuxghpb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnoxpvpd5ixx5weuxghpb.png" alt="Alt Text" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://gitlab.com/stack-labs/oss/rn-splashscreen-tutorial/-/blob/master/assets/screenshots/rn_splash_09.png" rel="noopener noreferrer"&gt;Original image&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you want to resize the image&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;select the &lt;strong&gt;ImageView&lt;/strong&gt; in the second left panel, then click on the “Add new constraints” Icon at the bottom of the screen&lt;/li&gt;
&lt;li&gt;Add a &lt;strong&gt;width&lt;/strong&gt; and &lt;strong&gt;height&lt;/strong&gt; constraints&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At this point we have our splash screen working, but you can notice a white screen flashing just before the content is loaded.&lt;br&gt;
What happens is that the splash screen is displayed by the native code, then the javascript part of the app is booted up while a white screen is briefly shown.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4yxkkj18dtrv29ma4y6b.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4yxkkj18dtrv29ma4y6b.gif" alt="Alt Text" width="600" height="1298"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We also want the splash screen to be displayed during the React Native boot.&lt;br&gt;
To do that we will use &lt;code&gt;react-native-splash-screen&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configure react-native-splash-screen
&lt;/h2&gt;

&lt;p&gt;In Xcode, open the file &lt;strong&gt;[project_name]&lt;/strong&gt; &amp;gt; &lt;strong&gt;[project_name]&lt;/strong&gt; &amp;gt; &lt;strong&gt;AppDelegate.m&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add &lt;code&gt;#import "RNSplashScreen.h"&lt;/code&gt; with the other imports&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;[RNSplashScreen show];&lt;/code&gt; just above &lt;code&gt;return YES;&lt;/code&gt; in the &lt;code&gt;didFinishLaunchingWithOptions&lt;/code&gt; method.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo32a5x5y4vzw4ad21iq7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo32a5x5y4vzw4ad21iq7.png" alt="Alt Text" width="800" height="260"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://gitlab.com/stack-labs/oss/rn-splashscreen-tutorial/-/blob/master/assets/screenshots/rn_splash_11.png" rel="noopener noreferrer"&gt;Original image&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgo93p7v20xhudgmm2p0l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgo93p7v20xhudgmm2p0l.png" alt="Alt Text" width="800" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://gitlab.com/stack-labs/oss/rn-splashscreen-tutorial/-/blob/master/assets/screenshots/rn_splash_12.png" rel="noopener noreferrer"&gt;Original image&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Change the status bar style (optional)
&lt;/h2&gt;

&lt;p&gt;If you selected a dark color as the background of the splash screen, it would be better to have a light font instead of the current dark one, let’s change that.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In Xcode open &lt;strong&gt;[project_name]&lt;/strong&gt; &amp;gt; &lt;strong&gt;[project_name]&lt;/strong&gt; &amp;gt; &lt;strong&gt;Info.plist&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Right-click in the displayed list and select &lt;strong&gt;Add row&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Add a row. The key should be &lt;strong&gt;Status Bar Style&lt;/strong&gt; and the value &lt;strong&gt;Light Content&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Recompile the app (&lt;code&gt;yarn ios&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpqlo78k5rs5yprmpnrqy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpqlo78k5rs5yprmpnrqy.png" alt="Alt Text" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://gitlab.com/stack-labs/oss/rn-splashscreen-tutorial/-/blob/master/assets/screenshots/rn_splash_13.png" rel="noopener noreferrer"&gt;Original image&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;You should now have a perfect seamless transition splash screen in your iOS app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyzfye5xajls8mx6llivf.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyzfye5xajls8mx6llivf.gif" alt="Alt Text" width="800" height="1731"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Add a splash screen to an Android app
&lt;/h1&gt;

&lt;p&gt;Now the Android part!&lt;/p&gt;

&lt;p&gt;While for iOS we mostly clicked a lot through the Xcode interface, for Android we will directly create or edit code files. No need to use Android Studio but it’s always good to have an IDE pointing out your mistakes in real time :)&lt;/p&gt;

&lt;h2&gt;
  
  
  Add the image assets to the project
&lt;/h2&gt;

&lt;p&gt;Android assets are located in android/app/src/main/res. There is a folder for each pixel density.&lt;br&gt;
Add our splash screen logo to the folders following this mapping:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mipmap-mdpi = &lt;code&gt;splash_icon.png&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;mipmap-hdpi = &lt;code&gt;splash_icon@2x.png&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;mipmap-xhdpi = &lt;code&gt;splash_icon@3x.png&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;mipmap-xxhdpi = &lt;code&gt;splash_icon@3x.png&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;mipmap-xxxhdpi = &lt;code&gt;splash_icon@3x.png&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And then rename all the files to &lt;code&gt;splash_icon.png&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Create the splash screen
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Create a background_splash.xml file in android/app/src/main/res/drawable (create the drawable directory if it doesn’t exist)&lt;/li&gt;
&lt;li&gt;Add the following code:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;layer-list&lt;/span&gt; &lt;span class="na"&gt;xmlns:android=&lt;/span&gt;&lt;span class="s"&gt;"http://schemas.android.com/apk/res/android"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;item&lt;/span&gt;
    &lt;span class="na"&gt;android:drawable=&lt;/span&gt;&lt;span class="s"&gt;"@color/splashscreen_bg"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;item&lt;/span&gt;
    &lt;span class="na"&gt;android:drawable=&lt;/span&gt;&lt;span class="s"&gt;"@mipmap/splash_icon"&lt;/span&gt;
    &lt;span class="na"&gt;android:gravity=&lt;/span&gt;&lt;span class="s"&gt;"center"&lt;/span&gt;
    &lt;span class="na"&gt;android:width=&lt;/span&gt;&lt;span class="s"&gt;"300dp"&lt;/span&gt;
    &lt;span class="na"&gt;android:height=&lt;/span&gt;&lt;span class="s"&gt;"300dp"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;/layer-list&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates a list of layers composed of two items: a plain background and our icon.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a &lt;code&gt;colors.xml&lt;/code&gt; in &lt;code&gt;android/app/src/main/res/values&lt;/code&gt; with the following contents:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;resources&amp;gt;&lt;/span&gt;
  &lt;span class="c"&gt;&amp;lt;!-- Splashscreen background. --&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;color&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"splashscreen_bg"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;#424242&lt;span class="nt"&gt;&amp;lt;/color&amp;gt;&lt;/span&gt;
  &lt;span class="c"&gt;&amp;lt;!-- App default background. --&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;color&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"app_bg"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;#424242&lt;span class="nt"&gt;&amp;lt;/color&amp;gt;&lt;/span&gt;
  &lt;span class="c"&gt;&amp;lt;!-- Status bar color. --&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;color&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"status_bar_color"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;#FFFFFF&lt;span class="nt"&gt;&amp;lt;/color&amp;gt;&lt;/span&gt;
  &lt;span class="c"&gt;&amp;lt;!-- Bottom navbar color for phones having software buttons. --&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;color&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"app_navbar"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;#01255f&lt;span class="nt"&gt;&amp;lt;/color&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/resources&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It defines the color variable we just used, plus other ones that could be useful depending on your requirements.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open &lt;code&gt;android/app/src/main/res/values/styles.xml&lt;/code&gt; and replace the contents with:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;resources&amp;gt;&lt;/span&gt;

  &lt;span class="c"&gt;&amp;lt;!-- Base application theme. --&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;style&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"AppTheme"&lt;/span&gt; &lt;span class="na"&gt;parent=&lt;/span&gt;&lt;span class="s"&gt;"Theme.AppCompat.DayNight.NoActionBar"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="c"&gt;&amp;lt;!-- Customize your theme here. --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;item&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"android:textColor"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;@color/app_text&lt;span class="nt"&gt;&amp;lt;/item&amp;gt;&lt;/span&gt;

    &lt;span class="c"&gt;&amp;lt;!-- Add the following line to set the default status bar color for all the app. --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;item&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"android:statusBarColor"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;@color/status_bar&lt;span class="nt"&gt;&amp;lt;/item&amp;gt;&lt;/span&gt;
    &lt;span class="c"&gt;&amp;lt;!-- Add the following line to set the default status bar text color for all the app
    to be a light color (false) or a dark color (true) --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;item&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"android:windowLightStatusBar"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;false&lt;span class="nt"&gt;&amp;lt;/item&amp;gt;&lt;/span&gt;
    &lt;span class="c"&gt;&amp;lt;!-- Add the following line to set the default background color for all the app. --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;item&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"android:windowBackground"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;@color/app_bg&lt;span class="nt"&gt;&amp;lt;/item&amp;gt;&lt;/span&gt;
    &lt;span class="c"&gt;&amp;lt;!-- Add the following line to set the default background color for the
    bottom android navigation bar for phones with (software buttons). --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;item&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"android:navigationBarColor"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;@color/app_navbar&lt;span class="nt"&gt;&amp;lt;/item&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;

  &lt;span class="c"&gt;&amp;lt;!-- Adds the splash screen definition --&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;style&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"SplashTheme"&lt;/span&gt; &lt;span class="na"&gt;parent=&lt;/span&gt;&lt;span class="s"&gt;"Theme.AppCompat.Light.NoActionBar"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="c"&gt;&amp;lt;!-- Our splashscreen layout --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;item&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"android:background"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;@drawable/background_splash&lt;span class="nt"&gt;&amp;lt;/item&amp;gt;&lt;/span&gt;
    &lt;span class="c"&gt;&amp;lt;!-- Add the following line to set the default status bar color. --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;item&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"android:statusBarColor"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;@color/splashscreen_bg&lt;span class="nt"&gt;&amp;lt;/item&amp;gt;&lt;/span&gt;
    &lt;span class="c"&gt;&amp;lt;!-- Add the following line to set the default status bar text color
    to be a light color (false) or a dark color (true) --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;item&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"android:windowLightStatusBar"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;false&lt;span class="nt"&gt;&amp;lt;/item&amp;gt;&lt;/span&gt;
    &lt;span class="c"&gt;&amp;lt;!-- Add the following line to set the default background color for the
    bottom android navigation bar for phones with (software buttons). --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;item&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"android:navigationBarColor"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;@color/splashscreen_bg&lt;span class="nt"&gt;&amp;lt;/item&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;/resources&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want to play with different colors for the status bar and the background, just create other color variables in the &lt;code&gt;colors.xml&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;I also set the status bar colors here for all the app because it’s more convenient, but you can also use the &lt;code&gt;&amp;lt;StatusBar&amp;gt;&lt;/code&gt; component on the React Native side to control the status bar appearance on a per-screen basis.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tell the app to boot on the splash screen
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Open &lt;code&gt;android/app/src/main/AndroidManifest.xml&lt;/code&gt; and modify the contents as follows:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;manifest&lt;/span&gt; &lt;span class="na"&gt;xmlns:android=&lt;/span&gt;&lt;span class="s"&gt;"http://schemas.android.com/apk/res/android"&lt;/span&gt;
  &lt;span class="na"&gt;package=&lt;/span&gt;&lt;span class="s"&gt;"com.rn_splashscreen_tutorial"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;uses-permission&lt;/span&gt; &lt;span class="na"&gt;android:name=&lt;/span&gt;&lt;span class="s"&gt;"android.permission.INTERNET"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;application&lt;/span&gt;
      &lt;span class="na"&gt;android:name=&lt;/span&gt;&lt;span class="s"&gt;".MainApplication"&lt;/span&gt;
      &lt;span class="na"&gt;android:label=&lt;/span&gt;&lt;span class="s"&gt;"@string/app_name"&lt;/span&gt;
      &lt;span class="na"&gt;android:icon=&lt;/span&gt;&lt;span class="s"&gt;"@mipmap/ic_launcher"&lt;/span&gt;
      &lt;span class="na"&gt;android:roundIcon=&lt;/span&gt;&lt;span class="s"&gt;"@mipmap/ic_launcher_round"&lt;/span&gt;
      &lt;span class="na"&gt;android:allowBackup=&lt;/span&gt;&lt;span class="s"&gt;"false"&lt;/span&gt;
      &lt;span class="na"&gt;android:theme=&lt;/span&gt;&lt;span class="s"&gt;"@style/AppTheme"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

      &lt;span class="c"&gt;&amp;lt;!-- Add this SplashActivity --&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;activity&lt;/span&gt;
        &lt;span class="na"&gt;android:name=&lt;/span&gt;&lt;span class="s"&gt;".SplashActivity"&lt;/span&gt;
        &lt;span class="na"&gt;android:theme=&lt;/span&gt;&lt;span class="s"&gt;"@style/SplashTheme"&lt;/span&gt;
        &lt;span class="na"&gt;android:label=&lt;/span&gt;&lt;span class="s"&gt;"@string/app_name"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;intent-filter&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;action&lt;/span&gt; &lt;span class="na"&gt;android:name=&lt;/span&gt;&lt;span class="s"&gt;"android.intent.action.MAIN"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;category&lt;/span&gt; &lt;span class="na"&gt;android:name=&lt;/span&gt;&lt;span class="s"&gt;"android.intent.category.LAUNCHER"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/intent-filter&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/activity&amp;gt;&lt;/span&gt;

      &lt;span class="c"&gt;&amp;lt;!-- Remove the intent-filter of the MainActivity and add a param android:exported="true" --&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;activity&lt;/span&gt;
        &lt;span class="na"&gt;android:name=&lt;/span&gt;&lt;span class="s"&gt;".MainActivity"&lt;/span&gt;
        &lt;span class="na"&gt;android:label=&lt;/span&gt;&lt;span class="s"&gt;"@string/app_name"&lt;/span&gt;
        &lt;span class="na"&gt;android:configChanges=&lt;/span&gt;&lt;span class="s"&gt;"keyboard|keyboardHidden|orientation|screenSize|uiMode"&lt;/span&gt;
        &lt;span class="na"&gt;android:launchMode=&lt;/span&gt;&lt;span class="s"&gt;"singleTask"&lt;/span&gt;
        &lt;span class="na"&gt;android:windowSoftInputMode=&lt;/span&gt;&lt;span class="s"&gt;"adjustResize"&lt;/span&gt;
        &lt;span class="na"&gt;android:exported=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/activity&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/application&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/manifest&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Don’t forget to change the package name to match your own.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a file &lt;code&gt;android/app/src/main/java/[your_package_name]/SplashActivity.java&lt;/code&gt; with the contents:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kn"&gt;package&lt;/span&gt; &lt;span class="nn"&gt;com.rn_splashscreen_tutorial&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Change this to your package name.&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;android.content.Intent&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;android.os.Bundle&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;androidx.appcompat.app.AppCompatActivity&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;SplashActivity&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;AppCompatActivity&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="nd"&gt;@Override&lt;/span&gt;
  &lt;span class="kd"&gt;protected&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;onCreate&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Bundle&lt;/span&gt; &lt;span class="n"&gt;savedInstanceState&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
      &lt;span class="kd"&gt;super&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;onCreate&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;savedInstanceState&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
      &lt;span class="nc"&gt;Intent&lt;/span&gt; &lt;span class="n"&gt;intent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Intent&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;MainActivity&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

      &lt;span class="c1"&gt;// IMPORTANT: Pass along FCM messages, notifications, ...&lt;/span&gt;
      &lt;span class="nc"&gt;Bundle&lt;/span&gt; &lt;span class="n"&gt;extras&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;getIntent&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;getExtras&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
      &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;extras&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;intent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;putExtras&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;extras&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
      &lt;span class="o"&gt;}&lt;/span&gt;
      &lt;span class="n"&gt;startActivity&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;intent&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
      &lt;span class="n"&gt;finish&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Exception&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
      &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getMessage&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We should now be able to run the android app and see the splash screen before the React Native part boots up:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo38zrp56e44k33808jcx.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo38zrp56e44k33808jcx.gif" alt="Alt Text" width="590" height="1280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can notice that during the transition from the splash screen to the app a blank screen is displayed for a bit of time though.&lt;/p&gt;

&lt;p&gt;Same solution as for iOS, we will use &lt;code&gt;react-native-splash-screen&lt;/code&gt;, but Android needs a bit more work to set it up.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install and configure react-native-splash-screen
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;In &lt;code&gt;android/app/src/main/java/[your_package_name]/MainActivity.java&lt;/code&gt;, make these modifications:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kn"&gt;package&lt;/span&gt; &lt;span class="nn"&gt;com.rn_splashscreen_tutorial&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// This should be your package name.&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;com.facebook.react.ReactActivity&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;org.devio.rn.splashscreen.SplashScreen&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Import this.&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;android.os.Bundle&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Import this.&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MainActivity&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;ReactActivity&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="c1"&gt;// Add this method.&lt;/span&gt;
    &lt;span class="nd"&gt;@Override&lt;/span&gt;
    &lt;span class="kd"&gt;protected&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;onCreate&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Bundle&lt;/span&gt; &lt;span class="n"&gt;savedInstanceState&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;SplashScreen&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;show&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="no"&gt;R&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;SplashTheme&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="kd"&gt;super&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;onCreate&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;savedInstanceState&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="cm"&gt;/**
     * Returns the name of the main component registered from JavaScript. This is used to schedule
     * rendering of the component.
     */&lt;/span&gt;
    &lt;span class="nd"&gt;@Override&lt;/span&gt;
    &lt;span class="kd"&gt;protected&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;getMainComponentName&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;"rn_splashscreen_tutorial"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here we are telling Android to show our splash screen a bit longer during the &lt;code&gt;MainActivity&lt;/code&gt; initialization with the use of the &lt;code&gt;react-native-splash-screen&lt;/code&gt; library.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a file android/app/src/main/res/layout/launch_screen.xml (the name is important) with the contents:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;LinearLayout&lt;/span&gt; &lt;span class="na"&gt;xmlns:android=&lt;/span&gt;&lt;span class="s"&gt;"http://schemas.android.com/apk/res/android"&lt;/span&gt;
    &lt;span class="na"&gt;android:layout_width=&lt;/span&gt;&lt;span class="s"&gt;"match_parent"&lt;/span&gt;
    &lt;span class="na"&gt;android:layout_height=&lt;/span&gt;&lt;span class="s"&gt;"match_parent"&lt;/span&gt;
    &lt;span class="na"&gt;android:background=&lt;/span&gt;&lt;span class="s"&gt;"@drawable/background_splash"&lt;/span&gt;
    &lt;span class="na"&gt;android:orientation=&lt;/span&gt;&lt;span class="s"&gt;"vertical"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/LinearLayout&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is a second splash screen file that will be used by react-native-splash-screen.&lt;br&gt;
We are actually just getting the splash screen definition from &lt;code&gt;background_splash.xml&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;You now should have a perfect seamless transition splash screen in your Android app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5n9jqacrt4fa5d4yf1wb.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5n9jqacrt4fa5d4yf1wb.gif" alt="Alt Text" width="590" height="1280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Android post-scriptum
&lt;/h2&gt;

&lt;p&gt;You could encounter issues on old versions of Android regarding the splash image. For example, on one project my image was completely deformed on Android 7.0 on a phone with a low screen resolution, because on old APIs the images are not resized following their aspect ratio... &lt;/p&gt;

&lt;p&gt;If that’s your case, here’s a workaround: you can define multiple &lt;code&gt;android/app/src/main/res/drawable&lt;/code&gt; folders for different android API versions.&lt;/p&gt;

&lt;p&gt;For example, if you want to have a different splashscreen definition for Android API versions 24 and later, you can create a folder &lt;code&gt;android/app/src/main/res/drawable-v24&lt;/code&gt;.&lt;br&gt;
This new folder will be used by the android versions corresponding to the API version 24 and later, and the &lt;code&gt;android/app/src/main/res/drawable&lt;/code&gt; we created previously will be used as a default configuration for older API versions.&lt;br&gt;
To find out which API version is used by which Android version, go to &lt;a href="https://source.android.com/setup/start/build-numbers" rel="noopener noreferrer"&gt;this page&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your main problem will then be to find how to write the configuration files for the different API versions, because a lot have changed over the years.&lt;/p&gt;

&lt;p&gt;You can find an example on the &lt;code&gt;old-android-api-example&lt;/code&gt; branch of the example repository.&lt;/p&gt;

&lt;h1&gt;
  
  
  Troubleshooting
&lt;/h1&gt;

&lt;p&gt;If your app get stuck on the splashscreen at startup, two possibilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You forgot to add Splascreen.hide() in the React code, see the beginning of the tutorial&lt;/li&gt;
&lt;li&gt;You have a fatal crash in the React part of your app and it stays stuck in the last native part before React boot, ie the splashscreen&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Thanks / disclaimer
&lt;/h1&gt;

&lt;p&gt;Thanks to &lt;a href="https://medium.com/@spencer_carli" rel="noopener noreferrer"&gt;Spencer Carli&lt;/a&gt; for &lt;a href="https://medium.com/handlebar-labs/how-to-add-a-splash-screen-to-a-react-native-app-ios-and-android-30a3cec835ae" rel="noopener noreferrer"&gt;this tutorial&lt;/a&gt; that helped me a lot to set up my first splash screen and which this article is based on!&lt;/p&gt;

&lt;p&gt;Also thanks to &lt;a href="https://github.com/aymkin" rel="noopener noreferrer"&gt;Oleksandr Naumkin&lt;/a&gt; for spotting an issue with notifications not being triggered with the way I was writing the SplashActivity on Android.&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>react</category>
      <category>ios</category>
      <category>android</category>
    </item>
  </channel>
</rss>
