What version are you using?
Freighter mobile v1.20.27 on iOS
What did you do?
From a dapp, requested stellar_signMessage over WalletConnect with a JSON message of ~500 characters (a canonical JSON object with ~13 fields, including 64-char hex strings).
What did you expect to see?
The sign-message bottom sheet shows the message (scrollable if long) with the Confirm and Cancel buttons reachable.
What did you see instead?
The bottom sheet grows past 100% of the screen height. The pretty-printed message pushes the account/network rows and both action buttons off the bottom of the screen, and the sheet content cannot be scrolled — so the request can be neither approved nor rejected. The only way out is to kill the request from the dapp side or switch apps.
Root cause (from reading main)
- DappSignMessageBottomSheetContent.tsx renders the header, banners, message, account list, and the DappRequestButtons footer all inside a plain non-scrollable View.
- DappMessageDisplay.tsx wraps the message in a ScrollView with no height constraint (the JSDoc even says "Dynamically increases height based on message length"), so it never actually scrolls — it just grows. When the message parses as JSON it is additionally pretty-printed with JSON.stringify(parsed, null, 2), so even a compact ~500-char JSON message becomes 15+ lines.
- An unbounded plain RN ScrollView nested inside @gorhom/bottom-sheet also doesn't receive pan gestures (that needs BottomSheetScrollView), so there's no scrolling anywhere in the sheet.
Net effect: message height is unbounded → sheet exceeds screen height → footer buttons are unreachable.
Suggested fix
Cap the message box (e.g. maxHeight on the DappMessageDisplay container) and use BottomSheetScrollView so long messages scroll inside the box, and/or make the sheet body scrollable with the DappRequestButtons footer pinned. This is the same failure mode previously fixed for other screens in #348, and the pinned-footer + scrollable-body work was explored in #781 / #816 — the dapp signing sheets just never got that treatment. Possibly also affects DappSignAuthEntryBottomSheetContent with large auth entries.
Repro
- Pair any dapp with Freighter mobile via WalletConnect.
- Send stellar_signMessage with a message like:
{"protocol":"EXAMPLE_PROTOCOL_V1","purpose":"authorize","rootChain":"stellar","rootAddress":"GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H","zone":"top","network":"testnet","signerPublicKey":"a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90","policyHash":"00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff","nonce":"5e884898da28047151d0e56f8dc62927","issuedAt":"2026-07-09T12:00:00Z","expiresAt":"2026-07-09T12:05:00Z","version":1}
- Open the request in Freighter mobile: the JSON is pretty-printed, the sheet overflows the screen, and Confirm/Cancel are unreachable with no way to scroll to them.
What version are you using?
Freighter mobile v1.20.27 on iOS
What did you do?
From a dapp, requested stellar_signMessage over WalletConnect with a JSON message of ~500 characters (a canonical JSON object with ~13 fields, including 64-char hex strings).
What did you expect to see?
The sign-message bottom sheet shows the message (scrollable if long) with the Confirm and Cancel buttons reachable.
What did you see instead?
The bottom sheet grows past 100% of the screen height. The pretty-printed message pushes the account/network rows and both action buttons off the bottom of the screen, and the sheet content cannot be scrolled — so the request can be neither approved nor rejected. The only way out is to kill the request from the dapp side or switch apps.
Root cause (from reading main)
Net effect: message height is unbounded → sheet exceeds screen height → footer buttons are unreachable.
Suggested fix
Cap the message box (e.g. maxHeight on the DappMessageDisplay container) and use BottomSheetScrollView so long messages scroll inside the box, and/or make the sheet body scrollable with the DappRequestButtons footer pinned. This is the same failure mode previously fixed for other screens in #348, and the pinned-footer + scrollable-body work was explored in #781 / #816 — the dapp signing sheets just never got that treatment. Possibly also affects DappSignAuthEntryBottomSheetContent with large auth entries.
Repro
{"protocol":"EXAMPLE_PROTOCOL_V1","purpose":"authorize","rootChain":"stellar","rootAddress":"GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H","zone":"top","network":"testnet","signerPublicKey":"a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90","policyHash":"00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff","nonce":"5e884898da28047151d0e56f8dc62927","issuedAt":"2026-07-09T12:00:00Z","expiresAt":"2026-07-09T12:05:00Z","version":1}