Advanced interactions
This chapter presents additional templates your app can use when limitations prevents you to follow the standard templates presented in previous chapters.
Streamed transactions
For some operations, your app may not be able to fully load the data in memory before presenting it to your users. When streaming transaction data to your app device page by page, the navigation has to change
- if the total number of pages isn’t known, you should hide it
- if the user cannot go back to previous pages, the “back” button should be hidden.
Here’s what an EIP-712 streamed message looks like in the Ethereum app, for Ledger Stax and Ledger Flex:
The footer changes: no “back” arrow, and no page numbers. |
API
nbgl_useCaseReviewStreamingStart()
nbgl_useCaseReviewStreamingContinue()
nbgl_useCaseReviewStreamingFinish()
These high-level API functions allow your app to stream pages of information, as presented above. View API docs..
Try avoiding transaction streaming in your app whenever possible, since blocking your users in a forward-only progression is not recommended UX.
Progressive disclosure of long fields
When signing operations with uncontrolled structure and contents, you can encounter data that is too long to fit in one field, even on one page.
In these cases, you can hide the contents of a field behind a “More” interaction to use progressive disclosure. This is useful to let your users go faster to signing, while still providing a preview of the field contents.
When the user taps on the “More” button, a modal containing the entirety of the field opens. If the field spans over several pages, navigation arrows appear:
API
There’s no specific graphical API to display this “More” button. It is handled automatically by the nbgl_useCaseReview()
and nbgl_useCaseReviewStreamingContinue()
functions.
Use progressive disclosure with care and only for fields that don’t affect your user’s privacy, security, or funds. This should be reserved for non-critical data only.
Key takeways
These guidelines can evolve as new apps and operations surface new interface needs.