CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-coinbase--wallet-sdk

TypeScript SDK for connecting web applications to Coinbase Wallet with support for Smart Wallet, mobile wallet, and browser extension connections

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

sdk-initialization.mddocs/

SDK Initialization

SDK initialization provides both modern functional and legacy class-based approaches for creating Coinbase Wallet SDK instances.

Capabilities

createCoinbaseWalletSDK (Recommended)

Creates a Coinbase Wallet SDK instance using the modern functional approach.

/**
 * Create a Coinbase Wallet SDK instance
 * @param params - Options including app metadata and preferences
 * @returns SDK object with getProvider method
 */
function createCoinbaseWalletSDK(
  params: CreateCoinbaseWalletSDKOptions
): {
  getProvider: () => ProviderInterface;
};

type CreateCoinbaseWalletSDKOptions = Partial<AppMetadata> & {
  preference?: Preference;
};

Usage Examples:

import { createCoinbaseWalletSDK } from "@coinbase/wallet-sdk";

// Basic setup
const sdk = createCoinbaseWalletSDK({
  appName: "My Dapp",
  appLogoUrl: "https://example.com/logo.png",
  appChainIds: [1, 8453]
});

// With Smart Wallet preference
const smartWalletSdk = createCoinbaseWalletSDK({
  appName: "Smart Wallet Dapp",
  appChainIds: [8453], // Base chain
  preference: {
    options: "smartWalletOnly",
    attribution: {
      auto: true
    }
  }
});

// With custom keys URL for development
const devSdk = createCoinbaseWalletSDK({
  appName: "Dev Dapp",
  preference: {
    options: "all",
    keysUrl: "https://keys-dev.coinbase.com/connect"
  }
});

// Get provider from any SDK instance
const provider = sdk.getProvider();

CoinbaseWalletSDK (Legacy, Deprecated)

Legacy class-based SDK initialization. Use createCoinbaseWalletSDK for new projects.

/**
 * @deprecated Use createCoinbaseWalletSDK instead
 */
class CoinbaseWalletSDK {
  /**
   * Initialize legacy SDK instance
   * @param metadata - App metadata configuration
   */
  constructor(metadata: Readonly<CoinbaseWalletSDKOptions>);
  
  /**
   * Create Web3 provider instance
   * @param preference - Optional wallet connection preferences
   * @returns Provider interface for Web3 interactions
   */
  makeWeb3Provider(preference?: Preference): ProviderInterface;
  
  /**
   * Get Coinbase Wallet logo SVG
   * @param type - Logo type variant
   * @param width - Logo width in pixels (default: 240)
   * @returns SVG data URI string
   */
  getCoinbaseWalletLogo(type: LogoType, width?: number): string;
}

type CoinbaseWalletSDKOptions = Partial<AppMetadata>;

Usage Examples:

import { CoinbaseWalletSDK } from "@coinbase/wallet-sdk";

// Legacy initialization (deprecated)
const sdk = new CoinbaseWalletSDK({
  appName: "Legacy Dapp",
  appLogoUrl: "https://example.com/logo.png",
  appChainIds: [1]
});

// Create provider with preferences
const provider = sdk.makeWeb3Provider({
  options: "all"
});

// Get logo
const logoSvg = sdk.getCoinbaseWalletLogo("standard", 200);

Default Configuration

The SDK applies these defaults when not specified:

  • appName: "Dapp"
  • appLogoUrl: Current page favicon
  • appChainIds: [] (empty array)
  • preference.options: "all"
  • preference.keysUrl: "https://keys.coinbase.com/connect"

Platform Detection

The SDK automatically detects the available wallet connection methods:

  1. Injected Provider: Checks for existing Coinbase Wallet browser extension
  2. Smart Wallet: Uses popup-based connection for web applications
  3. Mobile Wallet: Provides QR code and deeplink options for mobile connections
  4. Fallback: Creates new CoinbaseWalletProvider instance if no injected provider found

Error Handling

SDK initialization may throw errors for:

  • Invalid preference options
  • Malformed app metadata
  • Cross-origin policy violations
  • Missing required parameters
try {
  const sdk = createCoinbaseWalletSDK({
    appName: "My Dapp",
    preference: {
      options: "invalidOption" // Will throw validation error
    }
  });
} catch (error) {
  console.error("SDK initialization failed:", error);
}

docs

asset-utilities.md

configuration.md

event-handling.md

index.md

legacy-api.md

provider-interface.md

sdk-initialization.md

type-utilities.md

tile.json