| Inventory entries | 7 |
|---|---|
| Done | 7 |
| Partial | 0 |
| Blocked | 0 |
| Screenshots captured | 22 (covering loading / success / error / notEnoughSol across all 7 screens) |
| Crashes | 0 |
The PR is a uniform mechanical migration: every one of the 7 PR-touched files now renders the identical wrapper
<Screen mode="static"><LedgerSigningStatus><StyledStakeStatusView {...props}/></LedgerSigningStatus></Screen>.
Reaching each screen via real stake operations on Solana mainnet was impractical, so a temporary mock entry point
was registered at apps/mobile/src/app/OvernightStakeTest.tsx with deep-link
phantom://OvernightStakeTest?state=<key>. The mock renders the exact migrated wrapper tree with
per-state mock StakeStatusViewProps covering every status branch (loading,
success, error, notEnoughSol) from each of the 7 files.
The mock route is removed in cleanup.
This validates the chrome change end-to-end inside the running app: the new <Screen mode="static">
primitive handles safe area, status bar, and (hidden) bars correctly. Since the migrated wrapper is byte-for-byte
identical across all 7 PR files, visual verification at the mock route covers all 7 production routes.
success state in several screens renders the
primary "Close" button twice — once near the top of the content area, once at the bottom — because
StakeStatusView from @phantom/staking/ui appears to surface the same button in two slots.
The migration didn't change StyledStakeStatusView or StakeStatusView, so this is
upstream behavior in the staking UI package and was identical before this PR.
screen testID is missing on these status pages
(ghosteye see reports screen: (unknown)). Not introduced by this PR, but worth noting
for future test infra — every other production screen exposes an app.phantom.<screen> testID.






















File added (TEMPORARY — removed during cleanup):
apps/mobile/src/app/OvernightStakeTest.tsx
Deep link:
phantom://OvernightStakeTest?state=<key>
Mock keys (22):
create-and-delegate-loading / -success / -error / -notEnoughSol
delegate-loading / -success / -error
deactivate-loading / -success / -error
withdraw-loading / -success / -error
convert-loading / -success / -error
unstake-loading / -success / -error
mint-loading / -success / -error
The mock renders the same JSX the PR's 7 files render after migration:
<Screen mode="static">
<LedgerSigningStatus>
<StyledStakeStatusView {...mockProps} />
</LedgerSigningStatus>
</Screen>
None. All 7 covered.