fix(money): gate onboarding stepper animation behind feature flag (MUSD-865)#31007
Conversation
…SD-865) The Rive animation on the money onboarding screen crashes the app on Android. The native Rive SurfaceView is released during the navigation transition while its render thread is still drawing, producing a SIGSEGV. Gate the animation behind the money-enable-onboarding-stepper-animation remote flag (off by default). When disabled, the stepper no longer mounts the Rive view and renders its background and step content only, removing the crash while keeping the onboarding flow intact.
|
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. |
…ation flag
The flag is delivered by the client-config API as the camelCase key
moneyEnableOnboardingStepperAnimation with a version-gated
{ enabled, minimumVersion } shape, not a plain boolean. Read it through
validatedVersionGatedFeatureFlag and register it in the feature flag
registry so the registry check passes.
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsE2E Test Selection:
Impact assessment:
Performance Test Selection: |
Description
The Rive animation on the money account onboarding screen crashes the app on Android. The native Rive
SurfaceViewis released during the navigation transition while its render thread is still drawing, producing a fatalSIGSEGV(Surface has already been released).This gates the animation behind the
money-enable-onboarding-stepper-animationremote feature flag, which is off by default. When the flag is disabled the stepper no longer mounts the Rive view and renders its gradient background and per-step content (progress bar, titles, body, footer, buttons) only. Not mounting the native view removes the crash path entirely while keeping the onboarding flow intact.RiveOnboardingSteppergains a genericenableRiveAnimationprop (defaults totrue, so existing behaviour is unchanged);MoneyOnboardingViewwires it to the flag.Changelog
CHANGELOG entry: Fixed a crash that could occur on the money account onboarding screen.
Related issues
Fixes: MUSD-865
Manual testing steps
Screenshots/Recordings
Before
After
Simulator.Screen.Recording.-.iPhone.17.-.2026-06-03.at.12.57.20.mov
Pre-merge author checklist
Performance checks (if applicable)
Pre-merge reviewer checklist
Note
Low Risk
Targeted UI/native-renderer change with safe default (flag off) and broad test coverage; no auth, payments, or data-handling changes.
Overview
Gates the money account onboarding Rive stepper behind the remote flag
moneyEnableOnboardingStepperAnimation(registered with enabled: false by default), so production avoids mounting the native Rive view that was crashing on Android during navigation.RiveOnboardingSteppernow acceptsenableRiveAnimation(defaulttrue). When it isfalse, the Rive component is not mounted,isRiveReadystartstrueso UI is not stuck behind theonPlayopacity gate, and step advances without firing Rive triggers.MoneyOnboardingViewreadsselectMoneyOnboardingStepperAnimationEnabledand passes that into the stepper.Adds selector/tests and E2E registry entry for the new flag.
Reviewed by Cursor Bugbot for commit 6e0017e. Bugbot is set up for automated code reviews on this repo. Configure here.