or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

asset-utilities.mdconfiguration.mdevent-handling.mdindex.mdlegacy-api.mdprovider-interface.mdsdk-initialization.mdtype-utilities.md
tile.json

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);
}