概述
LI.FI Widget v4 引入了模块化的提供者架构、基于 TanStack Router 的内部路由改进,以及对 Ethereum、Solana、Bitcoin、Sui 和 Tron 链增强的多生态系统支持。本指南涵盖所有破坏性变更和迁移步骤。v4 的新特性
除了下面的破坏性变更外,v4 还新增了:- 模块化提供者 — 只需为你需要的生态系统安装
@lifi/widget-provider-*包;核心 widget 不再打包钱包栈。 - TanStack Router — 组件内导航使用 TanStack Router,而不再使用 react-router 兼容层。
- wagmi v3 — 使用
@lifi/widget-provider-ethereum时,Ethereum 流程与 wagmi 及@wagmi/corev3 保持一致。 - Tron (TVM) — 通过
@lifi/widget-provider-tron及配套的 Widget Light 处理器提供完整的 Tron 支持。 - Widget Light — 持续改进 iframe 集成层面(配置、事件、多链处理器)。
提供者架构(最大的变化)
新的提供者包
Widget v4 引入了模块化的提供者系统。widget 不再在内部创建所有钱包提供者,你现在需要显式安装和配置仅你所需的提供者包:
其他配套包:
核心 Widget 对等依赖已变更
Widget v3 核心具有区块链特定的对等依赖:wagmi ^2、@bigmi/react、@mysten/dapp-kit、@solana/wallet-adapter-react。
Widget v4 核心只需要:react >=19、react-dom >=19、@tanstack/react-query >=5.90.0。
区块链特定的对等依赖现在位于各个提供者包上。
配置提供者
Widget v3 - 依赖单独安装,提供者自动检测:providers 配置选项:
@lifi/widget-provider-ethereum:
EthereumProvider 配置
钱包连接器选项已从walletConfig 移至 EthereumProvider:
Widget v3:
Wagmi v2 到 v3
Widget v4 需要 Wagmi v3(在 Widget v3 中为 v2)。如果你使用外部 Wagmi 设置,则必须将 Wagmi 升级到 v3。详情请参阅 Wagmi v3 迁移指南。Sui 包变更
Sui 对等依赖从@mysten/dapp-kit 变更为 @mysten/dapp-kit-react ^2.0.0:
导入变更
移动的导出
若干导出已移至新的包中:重命名的 Hooks
useWidgetChains 接受一个 WidgetConfig 参数(用于创建获取链的 SDK 客户端)。
钱包配置
更新的 WidgetWalletConfig
钱包配置接口已简化。连接器特定的选项(walletConnect、coinbase、metaMask、baseAccount、porto)已移至 EthereumProvider:
Widget v3:
disableMessageSigning 已移动
disableMessageSigning 已从 sdkConfig.executionOptions 移至 EthereumProvider 配置:
SDK 执行选项
sdkConfig.executionOptions 已精简。disableMessageSigning 和 getContractCalls 已被移除。仅保留 updateTransactionRequestHook:
路由变更
内部路由迁移
Widget v4 在内部使用 TanStack Router,而不再使用 React Router v6。这是一项内部变更,不应影响大多数集成。 如果你在应用中使用 React Router: 无需特殊配置。widget 的内部路由完全隔离。 Widget v3 - 需要通配符路由:导航路由变更
导航路由名称已更新:transactionHistory 已被完全移除并合并到 activities 中。
WidgetConfig 变更
Subvariant 重命名为 Mode
subvariant 现在为 mode,subvariantOptions 现在为 modeOptions。所有相关类型都已重命名:
自定义 Mode 选项已重构
custom mode 选项现在是一个带 type 字段的对象。'fund' 值已被移除:
宽屏变体的链侧边栏已移至 HiddenUI
链侧边栏选项已从modeOptions 移至 hiddenUI:
UI 控件从数组改为对象
disabledUI、hiddenUI 和 requiredUI 现在使用对象配置,而不再使用枚举数组:
DisabledUI、HiddenUI 和 RequiredUI 枚举已被 DisabledUIConfig、HiddenUIConfig 和 RequiredUIConfig 接口取代。
useRecommendedRoute 重命名为 showSingleRoute
移除了顶层 fee
顶层的fee 简写已被移除。请改用 feeConfig.fee:
SDK 路由选项受限
fee、referrer、order 和 slippage 不能再通过 sdkConfig.routeOptions 传递。请改用顶层配置字段(feeConfig、referrer、routePriority、slippage)。
Split Mode 选项增强
split mode 现在支持带 defaultTab 的对象形式:
事件变更
事件总线迁移到 eventemitter3
内部事件总线已从mitt 迁移到 eventemitter3。事件类型签名现在使用回调函数:
on/off 订阅 API 保持不变——此更改仅影响自定义类型声明。
WalletConnected 事件已移动
walletConnected 事件已从 WidgetEvents 移至 @lifi/wallet-management 包中的 WalletManagementEvents。事件类型也已更改——所有字段现在都是必需的,并新增了两个字段:
TokensReversed 事件已移除
WidgetEvent.TokensReversed 已被完全移除。
RouteExecutionUpdate 类型已更改
RouteExecutionUpdate 类型现在使用 action(类型为 ExecutionAction),而不再使用 process(类型为 Process):
process 属性的事件处理器:
ReviewTransactionPageEntered 已弃用
WidgetEvent.ReviewTransactionPageEntered 已被弃用。请改用 WidgetEvent.PageEntered,它会在所有页面导航时触发,并带有 NavigationRouteType 载荷。
SDK v4 依赖
Widget v4 依赖于 LI.FI SDK v4,它有自己的破坏性变更:createConfig现在为createClientProcess类型现在为ExecutionAction
快速迁移检查清单
- 更新包:安装
@lifi/widgetv4 以及你需要的提供者包 - 将
providers添加到配置中:通过config.providers传入EthereumProvider()、SolanaProvider()等 - 移动钱包连接器配置:将
walletConnect、coinbase等从walletConfig移至EthereumProvider({...}) - 移动
disableMessageSigning:从sdkConfig.executionOptions移至EthereumProvider({ disableMessageSigning: true }) - 升级 Wagmi 到 v3(如果使用外部 Wagmi 设置)
- 更新 Sui 包:用
@mysten/dapp-kit-react替换@mysten/dapp-kit - 更新
useAvailableChains:替换为useWidgetChains(widgetConfig) - 更新
useSyncWagmiConfig导入:从@lifi/wallet-management改为@lifi/widget-provider-ethereum - 更新
createDefaultWagmiConfig导入:从@lifi/wallet-management改为@lifi/widget-provider-ethereum - 将
subvariant重命名为mode,并将subvariantOptions重命名为modeOptions - 更新自定义 mode 选项:将
custom: 'checkout'改为custom: { type: 'checkout' } - 移动链侧边栏配置:从
subvariantOptions.wide.disableChainSidebar移至hiddenUI: { chainSidebar: true } - 将 UI 控件更新为对象配置:将
disabledUI: [DisabledUI.X]替换为disabledUI: { x: true },hiddenUI和requiredUI同理 - 将
useRecommendedRoute重命名为showSingleRoute - 将顶层
fee替换为feeConfig: { fee: 0.03 } - 从
sdkConfig.routeOptions中移除fee/referrer/order/slippage:改用顶层配置字段 - 修复事件处理器:在路由执行事件处理器中,将
update.process替换为update.action - 移除
TokensReversed事件:如果已订阅,请移除该处理器 - 更新
walletConnected事件:现在位于WalletManagementEvents中,而非WidgetEvents - 更新导航路由:将
activeTransactions/transactionHistory替换为activities - 移除
'fund'自定义 mode:如果使用,请替换为'checkout'或'deposit' - 移除 React Router 通配符:widget 路由不再需要它

