CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-solana--wallet-adapter-wallets

Comprehensive collection of Solana wallet adapters for TypeScript applications with tree-shaking support

Pending
Overview
Eval results
Files

wallet-list.mddocs/

Complete Wallet List

Comprehensive list of all wallet adapter constants, names, and their capabilities exported by the package.

Wallet Name Constants

Type-safe constants for wallet identification and selection in wallet picker UIs.

type WalletName<T extends string = string> = T & { __brand: 'WalletName' };

// Browser & Mobile Wallets
const AlphaWalletName: WalletName<'Alpha'>;
const AvanaWalletName: WalletName<'Avana'>;
const BitgetWalletName: WalletName<'Bitget'>;
const BitKeepWalletName: WalletName<'Bitget'>; // Alias for BitgetWalletName
const BitpieWalletName: WalletName<'Bitpie'>;
const CloverWalletName: WalletName<'Clover'>;
const Coin98WalletName: WalletName<'Coin98'>;
const CoinbaseWalletName: WalletName<'Coinbase Wallet'>;
const CoinhubWalletName: WalletName<'Coinhub'>;
const FractalWalletName: WalletName<'Fractal'>;
const HuobiWalletName: WalletName<'HuobiWallet'>;
const HyperPayWalletName: WalletName<'HyperPay'>;
const KrystalWalletName: WalletName<'Krystal'>;
const MathWalletName: WalletName<'MathWallet'>;
const NekoWalletName: WalletName<'Neko'>;
const NightlyWalletName: WalletName<'Nightly'>;
const NufiWalletName: WalletName<'NuFi'>;
const OntoWalletName: WalletName<'ONTO'>;
const PhantomWalletName: WalletName<'Phantom'>;
const SafePalWalletName: WalletName<'SafePal'>;
const SaifuWalletName: WalletName<'Saifu'>;
const SalmonWalletName: WalletName<'Salmon'>;
const SkyWalletName: WalletName<'SKY Wallet'>;
const SolflareWalletName: WalletName<'Solflare'>;
const SolongWalletName: WalletName<'Solong'>;
const SpotWalletName: WalletName<'Spot'>;
const TokenaryWalletName: WalletName<'Tokenary'>;
const TokenPocketWalletName: WalletName<'TokenPocket'>;
const TorusWalletName: WalletName<'Torus'>;
const TrustWalletName: WalletName<'Trust'>;
const XDEFIWalletName: WalletName<'XDEFI'>;

// Hardware Wallets
const LedgerWalletName: WalletName<'Ledger'>;
const TrezorWalletName: WalletName<'Trezor'>;

// Specialized Wallets
const KeystoneWalletName: WalletName<'Keystone'>;
const ParticleName: WalletName<'Particle'>;
const UnsafeBurnerWalletName: WalletName<'Burner Wallet'>;

Complete Wallet Reference

Browser & Mobile Wallets (Standard Features)

All these wallets extend BaseMessageSignerWalletAdapter and support transaction signing, message signing, and have empty configuration interfaces:

Wallet NameAdapter ClassVersioned TransactionsSpecial Features
AlphaAlphaWalletAdapter❌ Legacy onlyBasic browser wallet
AvanaAvanaWalletAdapterBrowser extension
BitgetBitgetWalletAdapterMulti-chain wallet (also exports BitKeepWalletAdapter alias)
CloverCloverWalletAdapterBrowser extension
Coin98Coin98WalletAdapter❌ Legacy onlyRequest-based API
FractalFractalWalletAdapterGaming-focused
HuobiHuobiWalletAdapterExchange wallet
HyperPayHyperPayWalletAdapterMobile wallet
KrystalKrystalWalletAdapterDeFi-focused
NekoNekoWalletAdapterBrowser extension
NightlyNightlyWalletAdapterDeveloper-focused
NufiNufiWalletAdapterCardano + Solana
OntoOntoWalletAdapterIdentity-focused
SaifuSaifuWalletAdapterBrowser extension
SalmonSalmonWalletAdapterBrowser wallet
SkySkyWalletAdapterBrowser extension
SpotSpotWalletAdapterTrading-focused
TokenaryTokenaryWalletAdapterSafari extension
TokenPocketTokenPocketWalletAdapterMulti-chain mobile
TorusTorusWalletAdapterSocial login
Trust WalletTrustWalletAdapterPopular mobile wallet
XDEFIXDEFIWalletAdapterMulti-chain browser

Premium Browser & Mobile Wallets (Enhanced Features)

Wallet NameAdapter ClassSpecial Features
PhantomPhantomWalletAdapter✅ iOS deep linking, account change detection
SolflareSolflareWalletAdapter✅ Network configuration, iOS support, MetaMask detection
Coinbase WalletCoinbaseWalletAdapter✅ Enterprise-grade, full transaction support

Hardware Wallets

These wallets extend BaseSignerWalletAdapter and support transaction signing only (no message signing):

Wallet NameAdapter ClassBase ClassSpecial Features
BitpieBitpieWalletAdapterBaseSignerWalletAdapterMobile & browser wallet
CoinhubCoinhubWalletAdapterBaseSignerWalletAdapterBrowser wallet
LedgerLedgerWalletAdapterBaseSignerWalletAdapterWebHID transport, getDerivationPath() utility
MathWalletMathWalletAdapterBaseSignerWalletAdapterMulti-chain wallet
SafePalSafePalWalletAdapterBaseSignerWalletAdapterHardware + software wallet
SolongSolongWalletAdapterBaseSignerWalletAdapterLegacy browser wallet
TrezorTrezorWalletAdapterBaseSignerWalletAdapterTrezor Connect, extensive configuration

Specialized Wallets

Wallet NameAdapter ClassBase ClassSpecial Features
KeystoneKeystoneWalletAdapterBaseMessageSignerWalletAdapterQR-code signing, air-gapped
ParticleParticleAdapterBaseMessageSignerWalletAdapterSocial login, SDK access via particle property
Burner WalletUnsafeBurnerWalletAdapterBaseSignInMessageSignerWalletAdapterSign-in with Solana, in-memory keypair

WalletConnect Integration

  • Re-exports all functionality from @walletconnect/solana-adapter
  • Specific exports depend on the WalletConnect library version

Usage Patterns

Wallet Selection Array

import {
  PhantomWalletAdapter,
  SolflareWalletAdapter,
  LedgerWalletAdapter,
  UnsafeBurnerWalletAdapter,
} from "@solana/wallet-adapter-wallets";

const wallets = [
  new PhantomWalletAdapter(),
  new SolflareWalletAdapter({ network: WalletAdapterNetwork.Mainnet }),
  new LedgerWalletAdapter(),
  process.env.NODE_ENV === 'development' ? new UnsafeBurnerWalletAdapter() : null,
].filter(Boolean);

Name-Based Wallet Detection

import { 
  PhantomWalletName, 
  SolflareWalletName,
  LedgerWalletName 
} from "@solana/wallet-adapter-wallets";

const getWalletIcon = (walletName: WalletName) => {
  switch (walletName) {
    case PhantomWalletName:
      return "phantom-icon.svg";
    case SolflareWalletName:
      return "solflare-icon.svg";
    case LedgerWalletName:
      return "ledger-icon.svg";
    default:
      return "default-wallet-icon.svg";
  }
};

Capability-Based Filtering

import { BaseSignerWalletAdapter } from "@solana/wallet-adapter-base";

// Filter for hardware wallets only
const hardwareWallets = allWallets.filter(
  wallet => wallet instanceof BaseSignerWalletAdapter
);

// Filter for wallets supporting versioned transactions
const modernWallets = allWallets.filter(
  wallet => wallet.supportedTransactionVersions.has(0)
);

// Filter for Sign-in with Solana support
const siwsWallets = allWallets.filter(
  wallet => 'signIn' in wallet
);

Dynamic Wallet Loading

// Lazy load wallet adapters
const loadWallet = async (walletName: string) => {
  const module = await import("@solana/wallet-adapter-wallets");
  
  switch (walletName) {
    case 'Phantom':
      return new module.PhantomWalletAdapter();
    case 'Solflare':
      return new module.SolflareWalletAdapter();
    case 'Ledger':
      return new module.LedgerWalletAdapter();
    default:
      throw new Error(`Unsupported wallet: ${walletName}`);
  }
};

Environment-Specific Wallets

const getAvailableWallets = () => {
  const wallets = [];
  
  // Always available
  wallets.push(new PhantomWalletAdapter());
  wallets.push(new SolflareWalletAdapter());
  
  // Hardware wallets (WebHID required)
  if (typeof navigator !== 'undefined' && navigator.hid) {
    wallets.push(new LedgerWalletAdapter());
  }
  
  // Development only
  if (process.env.NODE_ENV === 'development') {
    wallets.push(new UnsafeBurnerWalletAdapter());
  }
  
  return wallets;
};

Transaction Version Support

Legacy + Versioned (0) Support

Most modern wallets support both legacy and versioned transactions:

  • Phantom, Solflare, Coinbase, Trezor, Ledger, Keystone, UnsafeBurner
  • All other browser/mobile wallets (except Alpha, Coin98, Particle)

Legacy Only Support

These wallets only support legacy transactions:

  • Alpha (AlphaWalletAdapter)
  • Coin98 (Coin98WalletAdapter)
  • Particle (ParticleAdapter)

Usage:

// Check transaction version support
const supportsVersioned = wallet.supportedTransactionVersions.has(0);

if (supportsVersioned) {
  // Can use VersionedTransaction
  const versionedTx = new VersionedTransaction(message);
  await wallet.signTransaction(versionedTx);
} else {
  // Must use legacy Transaction
  const legacyTx = new Transaction();
  await wallet.signTransaction(legacyTx);
}

Install with Tessl CLI

npx tessl i tessl/npm-solana--wallet-adapter-wallets

docs

browser-mobile-wallets.md

hardware-wallets.md

index.md

specialized-wallets.md

wallet-list.md

tile.json