feat: replace loading animation with Rive animation (DO NOT MERGE)#28393
feat: replace loading animation with Rive animation (DO NOT MERGE)#28393vinnyhoward wants to merge 52 commits into
Conversation
|
CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes. |
…tmcu-443-splash-screen-animation
…on didn't line up perfectly when transitioning
…itioning from splash to animation on android
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
…n transition, fixed app icon background staying black despite OS preferences
…, and fixed asset enlarging for a split second
…taMask/metamask-mobile into feat-tmcu-443-splash-screen-animation
…tmcu-443-splash-screen-animation
…taMask/metamask-mobile into feat-tmcu-443-splash-screen-animation
…tmcu-443-splash-screen-animation
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
There are 2 total unresolved issues (including 1 from previous review).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit d1f15de. Configure here.
… launcher images in android
…taMask/metamask-mobile into feat-tmcu-443-splash-screen-animation
|
|
✅ E2E Fixture Validation — Schema is up to date |
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsE2E Test Selection:
Given the breadth of changes (100 files), the critical nature of ControllersGate/FoxLoader affecting all test startup, and the extensive changes across Perps, Predict, Bridge, Earn, and navigation - a full test suite run is warranted. The ControllersGate change alone (new splash animation with timeout logic) could cause flakiness across all tags if the animation doesn't complete properly in test environments. Performance Test Selection: |
|
Closing in favor of this branch for cleaner history #29003 |




Description
Replaces the static native splash screen with a Rive-based animated splash screen, creating a seamless Duolingo-style transition from app launch into the main interface.
Problem: The previous loading state showed a static fox image followed by a plain loading spinner with no visual continuity. There was also a white flash between the native splash screen and the first React Native render on slower devices.
Solution:
FoxLoadercomponent that plays a Rive state machine animation, the fox builds up, enters an idle "look around" loop while app services initialize, then plays a reverse/exit animation before the app is revealedexpo-splash-screento keep the native splash visible until the first React Native frame is ready, eliminating the white flashControllersGatenow uses anabsoluteFilloverlay with an Animated fade-out (300ms +250ms grace period) so the transition into the app is smoothChangelog
CHANGELOG entry: Replaced the static splash screen loading state with a Rive-based animated fox transition for a smoother app launch experience
Related issues
Fixes: https://consensyssoftware.atlassian.net/browse/TMCU-443
Manual testing steps
Screenshots/Recordings
Android
Small Device
android_small.mov
Medium Device
android_medium.mov
Large Device
android_large.mov
Transition into Lock Screen
android_to_lock_screen.mov
iOS
Small Device
ios_small.mov
Medium Device
ios_medium.mov
Large Device
ios_large.mov
Transition into Lock Screen
ios_to_lock_screen.mov
Before
~After
~Pre-merge author checklist
Pre-merge reviewer checklist
Note
Medium Risk
Changes app startup/splash rendering and native initialization timing on both iOS and Android; regressions could manifest as blank screens, stuck splash, or visual flashes during cold start.
Overview
Replaces the previous startup loading UI with a Rive-driven animated splash (
FoxLoader) that bridges from native splash to React Native, including a static-fox fallback, controlled exit trigger, and a timeout/error fallback to ensure the app still reveals.Updates
ControllersGateto always render app content when services are ready, while keeping a full-screen animatedFoxLoaderoverlay that fades out only after both app services readiness and animation completion.Adjusts native splash behavior across platforms: adds
expo-splash-screenand callspreventAutoHideAsync()inindex.js, updates Android 12+ splash styling/resources (newvalues-v31themes and centered splash icon), removes AndroidSplashActivity, and migrates iOS launch UI fromLaunchScreen.xibtoSplashScreen.storyboardwith a matching dynamic background color inAppDelegate.Also bumps Android/iOS build numbers (and Bitrise version variables) to
4530and updates iOS app icon asset contents for appearance variants.Reviewed by Cursor Bugbot for commit ca86893. Bugbot is set up for automated code reviews on this repo. Configure here.