A framework-agnostic wallet connection toolkit for the XRP Ledger
- Framework Agnostic - Works with Vanilla JS, React, Vue, and any other framework
- Multiple Wallets - Support for Xaman, Crossmark, GemWallet, and WalletConnect
- Modular Architecture - Install only what you need
- Type Safe - Full TypeScript support with comprehensive type definitions
- Event Driven - Reactive architecture for connection state changes
- Persistent Sessions - Auto-reconnect with localStorage support
- Developer Friendly - Simple API, extensive documentation, great DX
The xrpl-connect package includes everything you need:
- Core: Wallet management, event system, and state persistence
- UI: Beautiful pre-built web component with QR codes and wallet selection
- Adapters: All XRPL wallet adapters (Xaman, Crossmark, GemWallet, WalletConnect)
Please read the documentation here DOCS as it is way more detailed than the README.
npm install xrpl-connect xrplThat's it! Everything you need in one package.
The easiest way to use XRPL Connect is with the plug-and-play web component:
HTML:
<!-- Add the web component to your HTML -->
<button id="connect-btn">Connect Wallet</button>
<xrpl-wallet-connector id="wallet-connector" background-color="#1a202c" primary-wallet="xaman">
</xrpl-wallet-connector>JavaScript:
import { WalletManager, XamanAdapter, CrossmarkAdapter } from 'xrpl-connect';
// Initialize wallet manager
const walletManager = new WalletManager({
adapters: [new XamanAdapter(), new CrossmarkAdapter()],
network: 'testnet',
autoConnect: true,
});
// Connect the UI component to the wallet manager
const connector = document.getElementById('wallet-connector');
connector.setWalletManager(walletManager);
// Open the modal when button is clicked
document.getElementById('connect-btn').addEventListener('click', () => {
connector.open();
});
// Listen to connection events
walletManager.on('connect', (account) => {
console.log('Connected:', account.address);
});
// Sign transactions after connection
const signed = await walletManager.sign({
TransactionType: 'Payment',
Account: walletManager.account.address,
Destination: 'rN7n7otQDd6FczFgLdlqtyMVrn3HMfXoQT',
Amount: '1000000',
});That's it! The web component provides a beautiful, pre-built UI for wallet selection, QR codes, and connection states.
- Getting Started Guide - Complete introduction to XRPL Connect
- Vanilla JS Integration - Using XRPL Connect with vanilla JavaScript
- React Integration - React integration patterns and best practices
- Vue Integration - Vue 3 integration guide
XRPL Connect is built with a modular, adapter-based architecture:
┌─────────────────────────────────────────┐
│ Your Application │
└─────────────────┬───────────────────────┘
│
┌─────────────────▼───────────────────────┐
│ @xrpl-connect/core │
│ ┌─────────────────────────────────┐ │
│ │ WalletManager │ │
│ │ - Event system │ │
│ │ - State management │ │
│ │ - Storage layer │ │
│ └─────────────────────────────────┘ │
└─────────────────┬───────────────────────┘
│
┌─────────┴─────────┬─────────┬─────────┐
│ │ │ │
┌───────▼────────┐ ┌──────▼──────┐ │ │
│ Xaman Adapter │ │ Crossmark │ │ ... │
└────────────────┘ └─────────────┘ │ │
│ │
┌──────▼──────┐ │
│ GemWallet │ │
└─────────────┘ │
│
┌──────▼──────┐
│WalletConnect│
└─────────────┘
# Install dependencies
pnpm install
# Build all packages
pnpm build
# Run tests
pnpm test
# Lint
pnpm lint
# Format
pnpm format
# Development mode (watch)
pnpm devContributions are welcome! Please read our Contributing Guide for details on our code of conduct and the process for submitting pull requests.
MIT License - see the LICENSE file for details
Inspired by:
- RainbowKit - Ethereum wallet connection
- ConnectKit - Ethereum wallet connection kit
- Solana Wallet Adapter - Solana wallet standard
Built for the XRPL community with ❤️