chore(nav): type wallet, asset, and settings shell navigators (Phase 3)#33306
chore(nav): type wallet, asset, and settings shell navigators (Phase 3)#33306weitingsun wants to merge 3 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. |
PR template — items to address before "Ready for review"Warnings — informational, address before merging:
See docs/readme/ready-for-review.md for the full Definition of Ready for Review. |
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsE2E Test Selection: Changes analyzed:
Tag dependency checks:
Performance tests: No performance-sensitive code paths changed. All changes are TypeScript type definitions or a minor prop rename in error handling. No performance tags warranted. Performance Test Selection: |
🧪 Flaky unit test detectionRun history flaky detectionHistorical failure rate is a hint, not proof — review each suggestion in context. See the flaky-test-detection skill for the full pattern reference and manual audit workflow. Failures / runs sampled per window:
AI-detected flaky patterns
|
|



Description
Phase 3 of the incremental React Navigation typing migration — app shell navigators.
Shared navigation hosts (
AssetStackFlow,WalletTabHome,SettingsView,TrendingView,BrowserTabHome,Webview,SetPasswordFlow,ImportPrivateKeyView,RootModalFlow,Home,Main) were still loosely typed asNestedNavigationParams(or equivalent{ screen: string; params?: object }), so nestednavigate(container, { screen, params })calls into those shells could not be checked against real screen param shapes.This PR adds shell-level param lists and wires them into
RootStackParamListviaNavigatorScreenParams, matching the Phase 3 pattern already used for feature stacks (Perps / Rewards / Predict / Card / Earn / etc.).This is primarily types-only — no intentional navigation architecture change. One small Onboarding call-site cleanup aligns SuccessErrorSheet params with the typed sheet contract (
primaryButtonLabel).What changed
Shell param lists (
app/components/Nav/Main/types/navigation.ts)AssetStackParamList,WalletTabStackParamList/WalletTabHomeParamList,SettingsStackParamListTrendingViewStackParamList,BrowserTabHomeParamList,WebviewStackParamList,SetPasswordFlowParamList,ImportPrivateKeyStackParamListMoneyTabStackParamList,TransactionsHomeParamList,RewardsHomeParamList,HomeTabsParamList,MainStackParamList,MainFlowParamListRoot modal flow (
app/core/NavigationService/types.ts)RootModalFlowParamList— screens registered inside App’sRootModalFlowRootModalFlow/Home/Main(and the Shells 1–2 hosts above) →NavigatorScreenParams<…>Param accuracy / call-site cleanup
TransactionDetailsSheetParamsandMultichainTransactionDetailsParamsto match what those sheets actually receiveprimaryButtonLabel(was incorrectbuttonLabel)Changelog
CHANGELOG entry:null
Related issues
Fixes:https://consensyssoftware.atlassian.net/browse/MCWP-674
Manual testing steps
N/A
Screenshots/Recordings
N/A
Pre-merge author checklist
Performance checks (if applicable)
trace()for usage andaddTokenfor an exampleFor performance guidelines and tooling, see the Performance Guide.
Pre-merge reviewer checklist
Note
Low Risk
Compile-time navigation typing and param-shape fixes; the only runtime tweak is correcting SuccessErrorSheet button props on onboarding error flows.
Overview
Phase 3 of the React Navigation typing migration: app-shell navigators that were still
NestedNavigationParams(or loose{ screen, params }) now have dedicated param lists and are wired intoRootStackParamListviaNavigatorScreenParams.A new
navigation.tsdefines shell lists for asset/wallet/settings stacks, home tabs, main flow, browser/webview/set-password/import flows, and related hosts.NavigationService/types.tsaddsRootModalFlowParamListand replaces loose typing onMain,Home,RootModalFlow,SettingsView,WalletTabHome,AssetStackFlow, and similar routes with nestedNavigatorScreenParams.Modal route stubs are tightened:
TransactionDetailsSheetParamsandMultichainTransactionDetailsParamsmatch what those sheets actually receive (full tx/display payloads instead of optionaltransactionIdonly).Onboarding SuccessErrorSheet navigations now pass
primaryButtonLabelinstead ofbuttonLabel, with matching test updates—aligning call sites with the typed sheet contract.Reviewed by Cursor Bugbot for commit cb64ba0. Bugbot is set up for automated code reviews on this repo. Configure here.