Skip to content

fix: wallet home onboarding Rive crash on Android cp-7.81.0#31042

Merged
vinnyhoward merged 2 commits into
mainfrom
fix-tmcu-853-native-crash-rive
Jun 4, 2026
Merged

fix: wallet home onboarding Rive crash on Android cp-7.81.0#31042
vinnyhoward merged 2 commits into
mainfrom
fix-tmcu-853-native-crash-rive

Conversation

@vinnyhoward

@vinnyhoward vinnyhoward commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

Description

Fixes a fatal native crash on Android originating in rive-react-native's checklist Rive animation on the wallet home onboarding screen. Affects ~2.3K production users

Root cause was in the .riv asset not being fully aligned with the code. The wallet home checklist Rive onboard_checklist_v05.riv had inconsistent State Machine inputs across its three artboards:

  • 01_Add_Funds and 02_First_Trade were missing the Main trigger input that the code fires via fireState('State Machine 1', 'Main').

When the code fired a name that didn't match, Rive threw StateMachineInputException. rive-react-native's native code doesn't clear the pending Java exception before its next JNI call, violating ART's JNI rules and aborting the process (SIGABRT / SIGSEGV depending on device).

Fix:

  • Added missing Main trigger inputs to 01_Add_Funds and 02_First_Trade, wired to the Intro → Main transition.
  • Renamed "Outro " to "Outro" on 03_Notifications.
  • Re-exported as onboard_checklist_v06.riv.
  • Bumped the import in WalletHomeOnboardingSteps.tsx from v05 to v06.

Verified locally: previously-crashing flows on emulator and arm64 physical device no longer crash, and the ~0.25s animation flicker observed on flagship devices is also gone.

Changelog

CHANGELOG entry: Fixed a native crash on Android affecting users on the wallet home onboarding screen.

Related issues

Fixes: #31103
#31103

Manual testing steps

Feature: Wallet home onboarding checklist Rive animation

  Scenario: User steps through the onboarding checklist
    Given the user has completed primary onboarding on a fresh install
    And the wallet home onboarding checklist is visible
    When the user taps Skip or Continue through fund / trade / notifications steps
    Then the checklist animation plays intro → main → outro on each step
    And the app does not crash

  Scenario: User navigates away from a step and returns
    Given the user is on the trade or notifications step
    When the user taps the Primary button and navigates to the destination screen
    And the user returns to the wallet home screen
    Then the checklist Rive resumes correctly
    And the app does not crash

Screenshots/Recordings

Screen.Recording.2026-06-03.at.2.24.41.PM.mov

Before

Screen.Recording.2026-06-03.at.12.13.53.PM.mov

After

Screen.Recording.2026-06-03.at.2.24.41.PM.mov

Pre-merge author checklist

Performance checks (if applicable)

  • I've tested on Android
    • Ideally on a mid-range device; emulator is acceptable
  • I've tested with a power user scenario
    • Use these power-user SRPs to import wallets with many accounts and tokens
  • I've instrumented key operations with Sentry traces for production performance metrics

For performance guidelines and tooling, see the Performance Guide.

Pre-merge reviewer checklist

  • I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
  • I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.

Note

Low Risk
Binary animation asset plus a single import path change; no auth, payments, or business-logic changes beyond fixing Rive input names.

Overview
Fixes a production Android native crash on wallet home post-onboarding when the checklist Rive animation runs. The app already drives Main and Outro on State Machine 1 via fireState; onboard_checklist_v05.riv was out of sync (missing Main on the fund and trade artboards, and a mismatched outro input name on notifications), which led to StateMachineInputException and a fatal JNI abort in rive-react-native.

The change re-exports the animation as onboard_checklist_v06.riv with aligned triggers and transitions, and points WalletHomeOnboardingSteps at v06 instead of v05. No change to the checklist flow logic beyond the asset swap.

Reviewed by Cursor Bugbot for commit 1945d4f. Bugbot is set up for automated code reviews on this repo. Configure here.

@github-actions

github-actions Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

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.

@mm-token-exchange-service mm-token-exchange-service Bot added the team-mobile-ux Mobile UX team label Jun 3, 2026
@mm-token-exchange-service mm-token-exchange-service Bot added the INVALID-PR-TEMPLATE PR's body doesn't match template label Jun 4, 2026
@vinnyhoward vinnyhoward changed the title fix: wallet home onboarding Rive crash on Android fix: wallet home onboarding Rive crash on Android cp-7.81.0 Jun 4, 2026
@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

🔍 Smart E2E Test Selection

  • Selected E2E tags: SmokeWalletPlatform
  • Selected Performance tags: None (no tests recommended)
  • Risk Level: low
  • AI Confidence: 82%
click to see 🤖 AI reasoning details

E2E Test Selection:
The only changed file is app/animations/onboard_checklist_v05.riv, a binary Rive animation asset. This file is imported and used exclusively by WalletHomeOnboardingSteps.tsx, which renders the onboarding checklist animation on the wallet home screen. The component is embedded in app/components/Views/Wallet/index.tsx (the main wallet home view).

This is a pure asset update with no code logic changes. The risk is low — animation file updates can only affect visual rendering of the onboarding checklist. The most relevant test tag is SmokeWalletPlatform, which covers wallet platform features including wallet lifecycle and the wallet home screen. No other tags are needed as this change doesn't touch confirmations, accounts, networks, swaps, snaps, or any other functional area.

Performance Test Selection:
This is a binary animation asset update (Rive file). While it could theoretically affect animation rendering performance, the change is to an existing animation file rather than adding new rendering logic or data loading. No performance tests are warranted for a simple asset file update.

View GitHub Actions results

@vinnyhoward vinnyhoward enabled auto-merge June 4, 2026 18:08
@mm-token-exchange-service mm-token-exchange-service Bot removed the INVALID-PR-TEMPLATE PR's body doesn't match template label Jun 4, 2026
@vinnyhoward vinnyhoward added this pull request to the merge queue Jun 4, 2026
Merged via the queue into main with commit bdce2e9 Jun 4, 2026
232 of 237 checks passed
@vinnyhoward vinnyhoward deleted the fix-tmcu-853-native-crash-rive branch June 4, 2026 19:20
@github-actions github-actions Bot locked and limited conversation to collaborators Jun 4, 2026
@metamaskbotv2 metamaskbotv2 Bot added the release-7.82.0 Issue or pull request that will be included in release 7.82.0 label Jun 4, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

release-7.82.0 Issue or pull request that will be included in release 7.82.0 size-XS team-mobile-ux Mobile UX team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Android native crash in rive-react-native on wallet home onboarding checklist (WalletHomeOnboardingSteps)

2 participants