Tomo Docs
Tomo Docs
  • Overview
    • Introducing Tomo
    • Tomo's Key Management
  • Tomo SDK
    • TomoEVMKit
      • Quick Start
      • Use with Ethers.js
      • Migration from RainbowKit
      • Migration from Blocknative
      • Supported Chains
    • Tomo Web SDK
      • Quick Start
      • Solana Provider
      • EVM Provider
      • Bitcoin Provider
      • Tron Provider
      • Movement Provider
      • Sui Provider
    • Tomo Telegram SDK
      • Quick Start
      • Wallet Provider
        • EVM Provider
        • Solana Provider
        • Sui Provider (Beta)
        • TON Provider
      • Partners
    • Tomo Enterprise SDK
      • For Babylon
        • Install the SDK
        • Tomo Wallet Provider
        • Bitcoin Provider
        • Cosmos Provider
        • Multiple Connection Mode
        • Integrate Extension Wallet
          • Submit Wallet PR
          • Extend the SDK
          • Q & A
        • Integrate Mobile Wallet
  • TOMO WALLET
    • Tomo Wallets
    • Mobile Wallet
      • Tomo Keys
        • Bonding Curve Explained
        • How to: Tomo Keys
      • TomoID
        • How to: TomoID
        • How to: Connect Instagram
      • Tomo Socials
      • Tomo Android App
      • Tomo iOS App
    • Extension Wallet
      • Developer Manual
        • EVM Integration
        • Bitcoin Integration
      • Example of User Flows
        • Claiming Signet BTC
        • Staking at Testnet
      • Install Link
    • Telegram Wallet
      • Quick Start
      • Chains/Networks
      • User Manual
        • Account Security
        • Gift feature
        • FAQ
        • Transaction
        • Swap
  • ABOUT US
    • Brand Assets
    • Privacy Policy
Powered by GitBook
On this page
  • Update Initiate
  • Different API logics
  • InitOptions
  • onboard API
  • onboard.connectWallet
  • connect configuration
  • Unsupported Wallets
  1. Tomo SDK
  2. TomoEVMKit

Migration from Blocknative

TomoEVMKit provides an API interface for projects based on @web3-onboard to migrate with minimum efforts.

Update Initiate

To initiate the onboard in TomoEVMKit, you need to add the await keyword.

// Old
import Onboard from '@web3-onboard/core'
// New
import { Onboard } from "@tomo-inc/tomo-evm-kit";

// Old
onboard = Onboard({
  wallets,
  chains,
  appMetadata,
  …
});

// New
onboard = await Onboard({
  wallets,
  chains,
  clientId: "..", // client id from tomo
  projectId: "..", // project id for wallet connect
  …
});

Different API logics

Due to the different logic of implementation of TomoEVMKit and Blocknative, we do not support all options in onboardnow, below are lists:

InitOptions

✅ Fully Support, ⚠️ Partial Support, ✖️ Not Support,

export interface InitOptions {
    /**
     * Wallet modules to be initialized and added to wallet selection modal
     */
    wallets: WalletInit[]; //  ✅
    /**
     * The chains that your app works with
     */
    chains: (Chain | ChainWithDecimalId)[]; //  ✅
    /**
     * Additional metadata about your app to be displayed in the Onboard UI
     */
    appMetadata?: AppMetadata; //  ✅
    /**
     * Define custom copy for the 'en' locale or add locales to i18n your app
     */
    i18n?: i18nOptions; // ✖️
    /**
     * Customize the connect modal
     */
    connect?: ConnectModalOptions; // ⚠️ only support `autoConnectLastWallet`
    /**
     * Customize the account center UI
     */
    accountCenter?: AccountCenterOptions; // ✖️
    /**
     * @deprecated apiKey parameter has been deprecated and is no
     * longer used within Web3-Onboard to provide notifications
     */
    apiKey?: string; // ✖️ 
    /**
     * Transaction notification options
     */
    notify?: Partial<NotifyOptions> | Partial<Notify>; // ✖️ 
    /** Gas module */
    gas?: typeof gas; // ✖️
    /** Web3-Onboard module to add Wagmi support
     * see https://www.npmjs.com/package/@web3-onboard/wagmi
     */
    wagmi?: typeof wagmi; // ✖️ 
    /**
     * Object mapping for W3O components with the key being the DOM
     * element to mount the component to, this defines the DOM container
     *  element for svelte to attach the component
     */
    containerElements?: Partial<ContainerElements>; // ✖️ 
    /**
     * @deprecated Transaction Preview support has ended and Transaction Preview
     * is no longer supported as part of Web3-Onboard.
     * Please remove from your onboard config to avoid
     * console errors and un-expected behavior
     */
    transactionPreview?: unknown; // ✖️
    /**
     * Custom or predefined theme for Web3Onboard
     * BuiltInThemes: ['default', 'dark', 'light', 'system']
     * or customize with a ThemingMap object.
     */
    theme?: Theme; //  ✅
    /**
     * Defaults to False - use to reduce load time
     * If set to true the Inter font will not be imported and
     * instead the default 'sans-serif' font will be used
     * To define the font used see `--w3o-font-family` prop within
     * the Theme initialization object or set as css variable
     */
    disableFontDownload?: boolean; // ✖️
    /**
     * Type of unstoppableResolution module
     * A small module that can bee added to allow Unstoppable Domain
     * address resolution similar to that of ens (Ethereum Name Service)
     * ENS resolution will take president if available
     */
    unstoppableResolution?: typeof unstoppableResolution; // ✖️
}

onboard API

declare const OnboardAPI: {
  connectWallet: typeof connectWallet; // ✅
  disconnectWallet: typeof disconnectWallet; // ✅
  setChain: typeof setChain; // ✅
  
  state: {
    // ⚠️ only support state.select('wallet').subscribe for autoconnect
    // The remaining properties will not respond.
    get: () => AppState;
    select: {
      (): Observable<AppState>;
      <T extends keyof AppState>(stateKey: T): Observable<AppState[T]>;
    };
    
    actions: {
      setWalletModules: typeof setWalletModules; // ✖️
      setLocale: typeof setLocale; // ✖️
      updateNotify: typeof updateNotify; // ✖️
      customNotification: typeof customNotification; // ✖️
      updateBalances: typeof updateBalances; // ✖️
      updateAccountCenter: typeof updateAccountCenter; // ✖️
      setPrimaryWallet: typeof setPrimaryWallet; // ✖️
      updateTheme: typeof updateTheme; // ✅
      updateAppMetadata: typeof updateAppMetadata; // ✖️
    };
  };
};

onboard.connectWallet

Currently, if you call connectWallet it only supports no parameter input way and will return a connected status window.

// ⚠️ no input parameters
declare function connectWallet(): Promise<WalletState[]>;

// ✖️
export interface ConnectOptions {
  autoSelect?: {
    label: string;
    disableModals: boolean;
  };
}

// ✖️
export interface ConnectOptionsString {
  autoSelect?: string;
}

connect configuration

We only support the automatical reconnect mode

onboard = Onboard({
    ...
    connect: {
      autoConnectLastWallet: true // need explicitly set to true
    }
})

onboard.state.select("wallets").subscribe((wallets) => { // you can subscribe the connection
  if (wallets.length > 0) {
    console.log("Wallet is connected");
    console.log('provider',wallets[0].provider) // only one provider provided.
  } else {
    console.log("Wallet is disconnected");
  }
});

Unsupported Wallets

Wallets
Support

@web3-onboard/arcana-auth

❌

@web3-onboard/bloom

❌

@web3-onboard/capsule

❌

@web3-onboard/cede-store

❌

@web3-onboard/dcent

❌

@web3-onboard/finoaconnect

❌

@web3-onboard/fortmatic

❌

@web3-onboard/keepkey

❌

@web3-onboard/magic

❌

@web3-onboard/particle-network

❌

@web3-onboard/passport

❌

@web3-onboard/portis

❌

@web3-onboard/taho

❌

@web3-onboard/tallyho

❌

@web3-onboard/transaction-preview

❌

@web3-onboard/trezor

❌

@web3-onboard/venly

❌

@web3-onboard/web3auth

❌

PreviousMigration from RainbowKitNextSupported Chains

Last updated 1 month ago

You can get clientId from the Tomo and projectId from the Walletconnect . Done!

dashboard
dashboard