How to prepare an Earn provider LiveApp
â The transition from âLedger Liveâ to âLedger Walletâ and from âwalletâ (for the hardware product) to âsignerâ is still in progress. This page may contain legacy terms that will be updated.
This guide shows you how to prepare an Earn provider LiveApp for Ledger Wallet. A LiveApp is your dapp, or web application, running in Ledger Walletâs embedded browser.
Users can access a LiveApp that offers staking services from these sections of Ledger Wallet:
- Accounts, where users can view their accounts and stake available assets
- Discover, where users can explore a curated catalog of dapps
- Earn, where users can track staking positions and stake additional assets from eligible accounts
Create your LiveApp
There are two ways to integrate your dapp into Ledger Wallet:
- dAppBrowser (EVM only): Create a manifest that points to the dAppBrowser to integrate your dapp into Ledger Wallet.
- The Ledger Wallet API: Use this JavaScript library to interact with Ledger wallet signers, such as to sign a transaction, and access information from the connected Ledger wallet, such as the wallet address.
Follow the Discover documentation to create a user interface for Ledger Wallet or embed an existing one.
Meet the LiveApp UX requirements
Your LiveApp must meet these UX requirements:
- Connect the userâs wallet automatically when they open your LiveApp.
- Do not allow users to sign in through other wallets.
- Use a responsive design that displays correctly on all devices.
- Do not request unlimited token approvals. Request approval only for the number of tokens required to stake or unstake.
- Use trusted names, such as ENS names.
- After a successful transaction, such as staking, unstaking, delegation, or claiming rewards, display a confirmation page with the transaction hash so that users can check its status.
- When applicable, show the staking method, such as native or liquid staking, and the names of the validators to which the assets are delegated.
The Ledger team will review and validate your LiveAppâs user flow against these requirements.
If users receive a liquid or non-liquid token that represents the staking position, inform Ledger of the tokenâs name and address.
Support direct navigation with URL parameters
Implement URL parameters so that Ledger Wallet can direct users to the correct LiveApp page for actions such as staking or unstaking.
When Ledger Wallet opens one of these URLs, route the user to the screen that matches the specified parameters. Each parameter must correspond to a specific action.
Use these URL parameters:
| Parameter | Type | Example | Description |
|---|---|---|---|
action | string | stake | Specifies the action to be performed: stake, unstake, manage, or claim_rewards. |
accountAddress | hex address | 0xABC⌠| The address of the user executing the action. |
accountId | string | js:2:ethereum:0x⌠| The ID of the userâs account in Ledger Wallet. |
cryptoCurrency | string | ETH | The crypto asset involved in the action. |
network | string | arbitrum | The blockchain (network) where the action takes place. |
language | string | en | The language preference of the user set in Ledger Wallet. |
theme | string | dark | The theme preference of the user set in Ledger Wallet. |
fix_parameters | boolean | true | When true, restricts users from changing the network, coins, and connected address within your LiveApp frontend. |
validator_address | string | 0xVAL⌠| If needed, the validator address related to the action. |
Example:
https://earn.provider.widget.com?[accountAddress]=0xâŚ&[cryptoCurrency]=ETH&[network]=arbitrum&[action]=unstake&[language]=en&[theme]=dark&[fix_parameters]=trueConfigure your app to recognize these parameters and route users directly to the relevant screens. If a parameter is missing or invalid, provide a fallback, such as the default home or dashboard screen.
Update the manifest
If your LiveApp interacts with third-party smart contracts that you do not own and that already support Clear Signing, update your manifest to specify the dependency.
For example, if your LiveApp interacts with EigenLayer smart contracts that already support Clear Signing and are used by other LiveApps, include the following in your LiveApp manifest:
"dependencies": [
"eigenlayer"
]Verify the correct field name (dependency vs dependencies) against the manifest schema before submitting. List the identifiers of third-party protocols whose clear-signed contracts your LiveApp calls.
Contact the Ledger team to confirm whether a third-party smart contract already supports Clear Signing and which value to use for it in your manifest.
Next steps
After you prepare the Earn provider LiveApp, continue with the relevant documentation:
- Discover documentation for building and embedding a LiveApp
- Live app manifest reference for the full manifest field reference
- UX review process for Ledger team review requirements