solana-ledger-wallet
v1.0.0
Published
Reusable Ledger Wallet integration for Solana dApps
Maintainers
Readme
solana-ledger-wallet
A reusable Ledger wallet adapter + UI system for Solana dApps.
Easily integrate Ledger hardware wallet support, account discovery, balance fetching, and account selection UI into your React apps.
⚡ Features
- Connect to Ledger hardware wallets via WebUSB
- Discover multiple Ledger accounts
- Fetch SOL balances for accounts
- Select accounts through a clean modal UI
- Fully modular React hooks and provider
- Works with Solana apps using
@solana/wallet-adapter-react - Compatible with React 17+ and React 18+
🚀 Installation
npm install solana-ledger-wallet
# or
yarn add solana-ledger-wallet
Peer dependencies:
Make sure you have react and react-dom installed:
npm install react react-dom
# or
yarn add react react-dom
🛠 Usage
1. Wrap your app with providers
import React from "react";
import { WalletProvider } from "@solana/wallet-adapter-react";
import { LedgerConnectionHandler, LedgerWalletAdapter } from "solana-ledger-wallet";
const wallets = [new LedgerWalletAdapter()];
function App({ Component, pageProps }) {
return (
<WalletProvider wallets={wallets} autoConnect={false}>
<LedgerConnectionHandler>
<Component {...pageProps} />
</LedgerConnectionHandler>
</WalletProvider>
);
}
export default App;
2. Use the Ledger account selector UI
The LedgerConnectionHandler automatically shows a modal when Ledger accounts are detected.
You can also use your own component with the included hook (useLedgerConnection) for finer control.
import React from "react";
import LedgerAccountSelector from "solana-ledger-wallet/components/LedgerAccountSelector";
import { useLedgerConnection } from "solana-ledger-wallet/hooks/useLedgerConnection";
function LedgerUI() {
const { accounts, isLoading, selectAccount, isOpen, close } = useLedgerConnection();
return (
<LedgerAccountSelector
isOpen={isOpen}
accounts={accounts}
isLoading={isLoading}
onAccountSelect={selectAccount}
onClose={close}
/>
);
}
3. Access account data
import { useLedgerConnection } from "solana-ledger-wallet/hooks/useLedgerConnection";
const { accounts, selectedAccount, isConnected } = useLedgerConnection();
console.log("All accounts:", accounts);
console.log("Selected account:", selectedAccount?.publicKey.toBase58());
console.log("Connected?", isConnected);
MIT © 2025 SPahari
🔑 Keywords
solana, ledger, wallet, react, modular, castle, dapp