diff --git a/ios/Podfile.lock b/ios/Podfile.lock index c7c8247aca..1076a15be6 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -226,6 +226,8 @@ PODS: - RCTTypeSafety - React-Core - ReactCommon/turbomodule/core + - react-native-splash-screen (3.3.0): + - React-Core - React-perflogger (0.68.2) - React-RCTActionSheet (0.68.2): - React-Core/RCTActionSheetHeaders (= 0.68.2) @@ -356,6 +358,7 @@ DEPENDENCIES: - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) - React-logger (from `../node_modules/react-native/ReactCommon/logger`) - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) + - react-native-splash-screen (from `../node_modules/react-native-splash-screen`) - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) @@ -422,6 +425,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/logger" react-native-safe-area-context: :path: "../node_modules/react-native-safe-area-context" + react-native-splash-screen: + :path: "../node_modules/react-native-splash-screen" React-perflogger: :path: "../node_modules/react-native/ReactCommon/reactperflogger" React-RCTActionSheet: @@ -485,6 +490,7 @@ SPEC CHECKSUMS: React-jsinspector: c5989c77cb89ae6a69561095a61cce56a44ae8e8 React-logger: a0833912d93b36b791b7a521672d8ee89107aff1 react-native-safe-area-context: dfe5aa13bee37a0c7e8059d14f72ffc076d120e9 + react-native-splash-screen: 4312f786b13a81b5169ef346d76d33bc0c6dc457 React-perflogger: a18b4f0bd933b8b24ecf9f3c54f9bf65180f3fe6 React-RCTActionSheet: 547fe42fdb4b6089598d79f8e1d855d7c23e2162 React-RCTAnimation: bc9440a1c37b06ae9ebbb532d244f607805c6034 diff --git a/ios/app/AppDelegate.mm b/ios/app/AppDelegate.mm index 96e1cca1a8..ae764ed43a 100644 --- a/ios/app/AppDelegate.mm +++ b/ios/app/AppDelegate.mm @@ -9,6 +9,9 @@ // universal links #import +// splash screen +#import "RNSplashScreen.h" + #if RCT_NEW_ARCH_ENABLED #import #import @@ -57,6 +60,10 @@ rootViewController.view = rootView; self.window.rootViewController = rootViewController; [self.window makeKeyAndVisible]; + + // Show the splash screen + [RNSplashScreen show]; + return YES; } diff --git a/ios/app/Images.xcassets/Contents.json b/ios/app/Images.xcassets/Contents.json index 2d92bd53fd..73c00596a7 100644 --- a/ios/app/Images.xcassets/Contents.json +++ b/ios/app/Images.xcassets/Contents.json @@ -1,6 +1,6 @@ { "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } } diff --git a/ios/app/Images.xcassets/LaunchScreen.imageset/Contents.json b/ios/app/Images.xcassets/LaunchScreen.imageset/Contents.json new file mode 100644 index 0000000000..f57e4f49ca --- /dev/null +++ b/ios/app/Images.xcassets/LaunchScreen.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "splash.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "splash@2x.jpg", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "splash@3x.jpg", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/app/Images.xcassets/LaunchScreen.imageset/splash.jpg b/ios/app/Images.xcassets/LaunchScreen.imageset/splash.jpg new file mode 100644 index 0000000000..9925cd70ef Binary files /dev/null and b/ios/app/Images.xcassets/LaunchScreen.imageset/splash.jpg differ diff --git a/ios/app/Images.xcassets/LaunchScreen.imageset/splash@2x.jpg b/ios/app/Images.xcassets/LaunchScreen.imageset/splash@2x.jpg new file mode 100644 index 0000000000..a42cd2ee59 Binary files /dev/null and b/ios/app/Images.xcassets/LaunchScreen.imageset/splash@2x.jpg differ diff --git a/ios/app/Images.xcassets/LaunchScreen.imageset/splash@3x.jpg b/ios/app/Images.xcassets/LaunchScreen.imageset/splash@3x.jpg new file mode 100644 index 0000000000..6382a9e62e Binary files /dev/null and b/ios/app/Images.xcassets/LaunchScreen.imageset/splash@3x.jpg differ diff --git a/ios/app/LaunchScreen.storyboard b/ios/app/LaunchScreen.storyboard index 61f6b47aa0..e5542188d1 100644 --- a/ios/app/LaunchScreen.storyboard +++ b/ios/app/LaunchScreen.storyboard @@ -1,10 +1,10 @@ - + - - + + @@ -16,27 +16,17 @@ - - + + + - + - - - - - - + + + + - @@ -44,4 +34,10 @@ + + + + + + diff --git a/package.json b/package.json index a8df392df3..3b02936016 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "react-native-root-toast": "^3.4.0", "react-native-safe-area-context": "^4.3.1", "react-native-screens": "^3.13.1", + "react-native-splash-screen": "^3.3.0", "react-native-svg": "^12.4.0", "react-native-url-polyfill": "^1.3.0", "react-native-web": "^0.17.7" diff --git a/src/App.native.tsx b/src/App.native.tsx index a220fab3b1..e6be772253 100644 --- a/src/App.native.tsx +++ b/src/App.native.tsx @@ -2,6 +2,7 @@ import 'react-native-url-polyfill/auto' import React, {useState, useEffect} from 'react' import {RootSiblingParent} from 'react-native-root-siblings' import {GestureHandlerRootView} from 'react-native-gesture-handler' +import SplashScreen from 'react-native-splash-screen' import {whenWebCrypto} from './platform/polyfills.native' import * as view from './view/index' import {RootStoreModel, setupState, RootStoreProvider} from './state' @@ -19,7 +20,10 @@ function App() { view.setup() return setupState() }) - .then(setRootStore) + .then(store => { + setRootStore(store) + SplashScreen.hide() + }) }, []) // show nothing prior to init diff --git a/yarn.lock b/yarn.lock index 6f1141a61a..399b1c9313 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10224,6 +10224,11 @@ react-native-screens@^3.13.1: react-freeze "^1.0.0" warn-once "^0.1.0" +react-native-splash-screen@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/react-native-splash-screen/-/react-native-splash-screen-3.3.0.tgz#3af71ed17afe50fee69590a45aec399d071ead02" + integrity sha512-rGjt6HkoSXxMqH4SQUJ1gnPQlPJV8+J47+4yhgTIan4bVvAwJhEeJH7wWt9hXSdH4+VfwTS0GTaflj1Tw83IhA== + react-native-svg@^12.4.0: version "12.4.4" resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-12.4.4.tgz#2ba684eaea9a7402fbbe0ed9737e77284631d00e"