Skip to content

lifinance/widget

Repository files navigation

license npm latest package npm downloads Crowdin Follow on Twitter

LI.FI Widget

GitHub_Repo_Card

LI.FI Widget is a set of prebuilt UI components for secure cross-chain bridging and swapping. The widget can be customized to match your web app's design and helps drive your multi-chain strategy by attracting users from all ecosystems.

LI.FI Widget features include:

  • Provider-based architecture - Modular blockchain support with separate packages for Ethereum, Bitcoin, Solana, Sui, and Tron
  • All ecosystems, chains, bridges, exchanges, and solvers that LI.FI supports
  • Embeddable variants - compact, wide, and drawer
  • Options to allow or deny certain chains, tokens, bridges, and exchanges
  • Pre-configured themes and lots of customization options with dark mode support so you can match the look and feel of your web app
  • Built-in wallet management UI with support for external wallet providers (Wagmi, Bigmi, Wallet Standard, @mysten/dapp-kit-react, and TronWallet Adapters)
  • Supports widely adopted industry standards, including EIP-5792, ERC-2612, EIP-712, EIP-6963, and Permit2
  • View of transactions in progress and transaction history
  • Curated wallet lists and wallet bookmarks
  • Route settings for advanced users (stored locally)
  • Complete UI translations to match your customer's preferred language
  • Compatibility tested with React, Next.js, Vue, Nuxt.js, Svelte, Remix, Vite, RainbowKit, Reown AppKit, Privy, Dynamic

Installation

LI.FI Widget

LI.FI Widget is available as an npm package. The widget uses a provider-based architecture, allowing you to choose which blockchains to support.

Core package:

pnpm:

pnpm add @lifi/widget @tanstack/react-query

npm:

npm install @lifi/widget @tanstack/react-query

yarn:

yarn add @lifi/widget @tanstack/react-query

Blockchain Providers

Install the provider packages for the blockchains you want to support:

Ethereum/EVM chains:

pnpm:

pnpm add @lifi/widget-provider-ethereum wagmi @wagmi/core

npm:

npm install @lifi/widget-provider-ethereum wagmi @wagmi/core

yarn:

yarn add @lifi/widget-provider-ethereum wagmi @wagmi/core

Bitcoin:

pnpm:

pnpm add @lifi/widget-provider-bitcoin @bigmi/react

npm:

npm install @lifi/widget-provider-bitcoin @bigmi/react

yarn:

yarn add @lifi/widget-provider-bitcoin @bigmi/react

Solana:

pnpm:

pnpm add @lifi/widget-provider-solana bs58

npm:

npm install @lifi/widget-provider-solana bs58

yarn:

yarn add @lifi/widget-provider-solana bs58

Sui:

pnpm:

pnpm add @lifi/widget-provider-sui @mysten/dapp-kit-react

npm:

npm install @lifi/widget-provider-sui @mysten/dapp-kit-react

yarn:

yarn add @lifi/widget-provider-sui @mysten/dapp-kit-react

Tron:

pnpm:

pnpm add @lifi/widget-provider-tron @tronweb3/tronwallet-adapter-react-hooks

npm:

npm install @lifi/widget-provider-tron @tronweb3/tronwallet-adapter-react-hooks

yarn:

yarn add @lifi/widget-provider-tron @tronweb3/tronwallet-adapter-react-hooks

Note: You only need to install the provider packages for the blockchains you want to support. Each provider package includes its required peer dependencies.

LI.FI Wallet Management

LI.FI Wallet Management is available as an npm package and provides wallet management UI components.

pnpm:

pnpm add @lifi/wallet-management

npm:

npm install @lifi/wallet-management

yarn:

yarn add @lifi/wallet-management

LI.FI Widget Light

LI.FI Widget Light is available as an npm package and provides a lightweight, iframe-based integration. Your app manages wallets while the widget runs in a sandboxed iframe.

pnpm:

pnpm add @lifi/widget-light

npm:

npm install @lifi/widget-light

yarn:

yarn add @lifi/widget-light

Ecosystem handlers are available as subpath imports (@lifi/widget-light/ethereum, @lifi/widget-light/solana, @lifi/widget-light/bitcoin, @lifi/widget-light/sui, @lifi/widget-light/tron) — install the corresponding peer dependencies only for the chains you need. See the widget-light integration guide for full setup instructions.

Architecture

The LI.FI Widget uses a provider-based architecture that allows you to selectively enable support for different blockchains:

  • @lifi/widget - Core widget package with UI components and functionality
  • @lifi/widget-provider - Base provider package with shared types and utilities
  • @lifi/widget-provider-ethereum - Ethereum/EVM chains support (requires Wagmi)
  • @lifi/widget-provider-bitcoin - Bitcoin support (requires Bigmi)
  • @lifi/widget-provider-solana - Solana support (requires bs58)
  • @lifi/widget-provider-sui - Sui support (requires @mysten/dapp-kit-react)
  • @lifi/widget-provider-tron - Tron support (requires @tronweb3/tronwallet-adapter-react-hooks)
  • @lifi/wallet-management - Wallet management UI components
  • @lifi/widget-light - Lightweight iframe-based integration (docs)

This architecture provides:

  • Modularity: Only install and bundle what you need
  • Flexibility: Mix and match blockchain support
  • Extensibility: Easy to add support for new blockchains
  • Tree-shaking: Unused providers are automatically excluded from your bundle

Getting started with LI.FI Widget

Here is an example of a basic app using LI.FI Widget with Ethereum support:

import { LiFiWidget, WidgetConfig } from '@lifi/widget';
import { EthereumProvider } from '@lifi/widget-provider-ethereum';

const widgetConfig: WidgetConfig = {
  providers: [
    EthereumProvider(),
  ],
  theme: {
    container: {
      border: '1px solid rgb(234, 234, 234)',
      borderRadius: '16px',
    },
  },
};

export const WidgetPage = () => {
  return (
    <LiFiWidget integrator="Your dApp/company name" config={widgetConfig} />
  );
};

Multi-chain example (Ethereum, Solana, Bitcoin, Sui, and Tron):

import { LiFiWidget, WidgetConfig } from '@lifi/widget';
import { BitcoinProvider } from '@lifi/widget-provider-bitcoin';
import { EthereumProvider } from '@lifi/widget-provider-ethereum';
import { SolanaProvider } from '@lifi/widget-provider-solana';
import { SuiProvider } from '@lifi/widget-provider-sui';
import { TronProvider } from '@lifi/widget-provider-tron';

const widgetConfig: WidgetConfig = {
  providers: [
    EthereumProvider(),
    SolanaProvider(),
    BitcoinProvider(),
    SuiProvider(),
    TronProvider(),
  ],
  theme: {
    container: {
      border: '1px solid rgb(234, 234, 234)',
      borderRadius: '16px',
    },
  },
};

export const WidgetPage = () => {
  return (
    <LiFiWidget integrator="Your dApp/company name" config={widgetConfig} />
  );
};

Please refer to our documentation if you encounter any issues with importing.

You can also refer to the examples folder in this repository to see how to import the widget in your specific context.

Examples

Visit our playground to see how you can customize your LI.FI Widget experience. Additionally, see examples folder in this repository.

Documentation

Please visit LI.FI Widget Documentation.

Contributing Translations

We appreciate your interest in helping translate our project!

If you'd like to contribute translations, please visit our Crowdin project page at Crowdin LI.FI Widget. Register on Crowdin and you can start translating the project into your preferred language. Your contributions will help make our project accessible to a wider audience around the world.

Thank you for your support!

Changelog

The changelog is regularly updated to reflect what's changed in each new release.