Add BootSplash support for Android 12#16863
Conversation
|
Should we try inverting the colors so it feels more like the app icon grows into a full screen view? Or is that something you'll do after this is merged? |
|
@shawnborton That's a different topic. The current proposal is only about Android 12 support. I can also do that, but it's probably better to do it in a other PR since I will need to update iOS / web assets (but I agree, it will look better, especially if we animate the logo after that 🙂) WDYT @roryabraham ? |
|
Sounds good to me! |
|
@shawnborton If you can provide me the logo SVG file, that would be perfect! FYI, I demoed to Rory what could be achieved for Expensify in Curaçao (using lottie): https://twitter.com/zoontek/status/1636510236746842114 This is also what is done in bootsplash example app: |
|
Here is the iconmark: Iconmark.svg.zip The iconmark shape should be |
|
@shawnborton I made another PR to invert the colors: #16932. It's based on this one, which needs to be merged first. |
|
Sounds good, thank you! |
Reviewer Checklist
Screenshots/VideosNOTE: PR changes only affect a single platform so it cannot be tested on all platforms AndroidUploading 2023-04-06_07-20-53.mp4… |
|
@zoontek Can you please add a note in the screenshot section to explain why it's not necessary to have tests or screenshot/videos for other platforms (just so there is a clearly written record)? |
|
@tgolen ✅ |
|
🚀 Deployed to staging by https://github.com/tgolen in version: 1.2.96-3 🚀
|
|
🚀 Deployed to production by https://github.com/thienlnam in version: 1.2.96-4 🚀
|

Details
First step for [New Feature] Animate Native SplashScreen #14151
This update the current BootSplash module to support Android 12 SplashScreen API (removing the double splash screen issue: the one displayed on the system thread and the one displayed by the app).
Why not using
androidx.core:core-splashscreen?There's currently a few issues with Google library (which is used by
react-native-bootsplashv4). I can list:Dialogon init.setOnExitAnimationListeneris never called on these cases, making its usage unreliable. This sounds silly but it hasn't been fixed yet (at least for Android 12, not for Android 13 - one of the many related issues).That's also why I put a
Dialogto the rescue 😄<StatusBar />+ hide the splash screen at initial render - you get the idea)This is why I will stop using it. I investigated a lot lately and this PR is just the result of my current work on
react-native-bootsplashv5 (which should be coming soon) 🙂Fixed Issues
#14151 (comment)
Tests
Offline tests
QA Steps
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)src/languages/*files and using the translation methodWaiting for Copylabel for a copy review on the original GH to get the correct copy.STYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)/** comment above it */thisproperly so there are no scoping issues (i.e. foronClick={this.submit}the methodthis.submitshould be bound tothisin the constructor)thisare necessary to be bound (i.e. avoidthis.submit = this.submit.bind(this);ifthis.submitis never passed to a component event handler likeonClick)StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)Avataris modified, I verified thatAvataris working as expected in all cases)ScrollViewcomponent to make it scrollable when more elements are added to the page.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Web
No change on this platform.
Mobile Web - Chrome
No change on this platform.
Mobile Web - Safari
No change on this platform.
Desktop
No change on this platform.
iOS
No change on this platform.
Android
IMG_8561.mp4