Earn Provider’s LiveApp
A LiveApp is your dapp (web application) running within Ledger Live’s embedded browser.
A LiveApp offering Ledger Live users staking services can be accessible through various entry points in Ledger Live:
- The Accounts section: where users can view the list of their accounts and are provided with options to stake available assets.
- The Discover section: where users can explore a curated catalog of dapps.
- The Earn section: where users can track their current staking positions and stake additional assets on eligible accounts.
How to create your LiveApp
There are two ways to integrate your dapp into Ledger Live:
- dAppBrowser (EVM only): by creating a manifest, pointing it to the dAppBrowser, you can easily integrate your dApp into Ledger Live.
- The Ledger Services Kit: a Javascript library allowing your dapp to interact with Ledger wallet devices (for instance, to sign a transaction) and access information from the connected Ledger wallet (such as the wallet address).
To learn how to create (or embed if already existing) your user interface for Ledger Live, please follow the Discover documentation.
LiveApp UX requirements
Your LiveApp must respect some UX requirements:
- 0-click connect to the wallet (users wallet must be automatically connected when opening your LiveApp)
- Login through other wallets must not be possible
- Design must be responsive for optimal display on all devices
- After a successful transaction (staking/unstaking, delegation, rewards claiming..), a confirmation page with the transaction hash must be displayed to users, allowing them to easily confirm its status.
- If applicable, the staking method (such as native staking, liquid staking, etc.) should be displayed to users, along with the names of the validators to whom the assets are delegated to.
The Ledger team will review and validate your LiveApp’s user flow and ensure compliance with the guidelines mentioned above.
If a token (wether it is liquid or not) representing the staking position is issued to users, please inform Ledger of the token’s name and address.
URL parameters for direct navigation
To ensure users are directed to the correct LiveApp page for specific actions (such as staking/unstaking) triggered from Ledger Live, your LiveApp must implement URL parameters to support direct navigation.
When Ledger Live calls your LiveApp using these URLs, users should be seamlessly redirected to the appropriate screen based on the specified parameters. Each parameter should correspond to a particular action, enabling smooth and targeted in-app transitions.
URL parameters:
action
: specifies the action to be performed, eitherstake
orunstake
.accountAddress
: the address of the user executing the action.accountId
: the ID of the user’s account in Ledger Live.cryptoCurrency
: the crypto asset involved in the action.network
: the blockchain (network) where the action takes place.language
: the language preference of the user set in Ledger Live.theme
: the theme preference of the user set in Ledger Live.fix_parameters
: when set totrue
, restrict users from changing the network, coins, and connected address within your LiveApp frontend.
Example:
https://earn.provider.widget.com?[accountAddress]=0x…&[cryptoCurrency]=ETH&[network]=arbitrum&[action]=unstake&[language]=en&[theme]=dark&[fix_parameters]=true
Ensure your app recognizes these parameters and routes users directly to the relevant screens. If a parameter is missing or invalid, provide appropriate fallbacks, such as redirecting to a default home or dashboard screen.
Manifest update
In some cases, your LiveApp might interact with third-party smart contracts that you don’t own and are already clear signed. If that is the case, you must update your manifest to specify this dependency.
For example, if your LiveApp interacts with eigenlayer smart contracts (that are already clear signed and used by other LiveApps), then your LiveApp’s manifest must include the following:
"dependency": [
"eigenlayer"
]
Please contact the Ledger team to confirm whether a third-party smart contract is already clear signed, and which value to use in your manifest for it.