@aptos-labs/wallet-adapter-react

中文文档
8.3.3发布于 2026/03/28Apache-2.0TypeScriptESM + CJS构建来源已验证近 30 天下载 2.1万

Aptos Wallet Adapter React Provider

原始使用文档
文档目录3 节
  1. Support
  2. Usage
  3. Use a UI package (recommended)

NOTE: This documentation is for Wallet Adapter React v4.0.0 and up that is fully compatible with the Aptos TypeScript SDK V2. For Wallet Adapter React v^3.*.* refer to this guide

Wallet Adapter React Provider

A react provider wrapper for the Aptos Wallet Adapter

Dapps that want to use the adapter should install this package and other supported wallet packages.

Support

The React provider follows the wallet standard and supports the following required functions

Standard required functions
account
connect
disconnect
network
onAccountChange
onNetworkChange
signMessage
signTransaction
Additional functions
signAndSubmitTransaction
signMessageAndVerify
submitTransaction

Usage

Install Dependencies

Install wallet dependencies you want to include in your app. To do that, you can look at our supported wallets list. Each wallet is a link to npm package where you can install it from.

Next, install the @aptos-labs/wallet-adapter-react

pnpm i @aptos-labs/wallet-adapter-react

using npm

npm i @aptos-labs/wallet-adapter-react

Import dependencies

Import the AptosWalletAdapterProvider.

import { AptosWalletAdapterProvider } from "@aptos-labs/wallet-adapter-react";

Wrap your app with the Provider, pass it the relevant props.

import { Network } from "@aptos-labs/ts-sdk";

<AptosWalletAdapterProvider
  autoConnect={true}
  dappConfig={{ network: Network.MAINNET, aptosApiKey: "my-generated-api-key" }}
  onError={(error) => {
    console.log("error", error);
  }}
>
  <App />
</AptosWalletAdapterProvider>;

Available Provider Props

  • autoConnect - a prop indicates whether the dapp should auto connect with a previous connected wallet.
  • dappConfig - Config used to initialize the dapp with.
  • onError - a callback function to fire when the adapter throws an error
  • optInWallets - the adapter detects and adds AIP-62 standard wallets by default, sometimes you might want to opt-in with specific wallets. This props lets you define the AIP-62 standard wallets you want to support in your dapp.
<AptosWalletAdapterProvider
  ...
  optInWallets={["Petra"]}
  ...
>
  <App />
</AptosWalletAdapterProvider>
  • disableTelemetry - A boolean flag to disable the adapter telemetry tool, false by default
<AptosWalletAdapterProvider
  ...
  disableTelemetry={true}
  ...
>
  <App />
</AptosWalletAdapterProvider>

Use Wallet

On any page you want to use the wallet props, import useWallet from @aptos-labs/wallet-adapter-react

import { useWallet } from "@aptos-labs/wallet-adapter-react";

Then you can use the exported properties

const {
  account,
  changeNetwork,
  connect,
  connected,
  disconnect,
  network,
  signAndSubmitTransaction,
  signMessage,
  signMessageAndVerify,
  signTransaction,
  submitTransaction,
  wallet,
  wallets,
} = useWallet();

Examples

Account
// The account address as a typed AccountAddress
<div>{account?.address.toString()}</div>
// The account public key as a typed PublicKey
<div>{account?.publicKey.toString()}</div>
Network
<div>{network?.name}</div>
Wallet
<div>{wallet?.name}</div>
<div>{wallet?.icon}</div>
<div>{wallet?.url}</div>
Wallets
{
  wallets.map((wallet) => <p>{wallet.name}</p>);
}
connect(walletName)
const onConnect = async (walletName) => {
  await connect(walletName);
};

<button onClick={() => onConnect(wallet.name)}>{wallet.name}</button>;
disconnect()
<button onClick={disconnect}>Disconnect</button>
signAndSubmitTransaction(payload)
const onSignAndSubmitTransaction = async () => {
  const response = await signAndSubmitTransaction({
    data: {
      function: "0x1::coin::transfer",
      typeArguments: [APTOS_COIN],
      functionArguments: [account.address, 1], // 1 is in Octas
    },
  });
  // if you want to wait for transaction
  try {
    await aptos.waitForTransaction({ transactionHash: response.hash });
  } catch (error) {
    console.error(error);
  }
};

<button onClick={onSignAndSubmitTransaction}>
  Sign and submit transaction
</button>;
signAndSubmitBCSTransaction(payload)
const onSignAndSubmitBCSTransaction = async () => {
  const response = await signAndSubmitTransaction({
    data: {
      function: "0x1::coin::transfer",
      typeArguments: [parseTypeTag(APTOS_COIN)],
      functionArguments: [AccountAddress.from(account.address), new U64(1)],
    },
  });
  // if you want to wait for transaction
  try {
    await aptos.waitForTransaction({ transactionHash: response.hash });
  } catch (error) {
    console.error(error);
  }
};

<button onClick={onSignAndSubmitTransaction}>
  Sign and submit BCS transaction
</button>;
signMessage(payload)
const onSignMessage = async () => {
  const payload = {
    message: "Hello from Aptos Wallet Adapter",
    nonce: "random_string",
  };
  const response = await signMessage(payload);
};

<button onClick={onSignMessage}>Sign message</button>;
signTransaction(payload | transaction)
const onSignTransaction = async () => {
  const payload: InputTransactionData = {
    data: {
      function: "0x1::coin::transfer",
      typeArguments: [APTOS_COIN],
      functionArguments: [account?.address.toString(), 1],
    },
  };
  const response = await signTransaction({
    transactionOrPayload: payload,
  });
};

const onSignRawTransaction = async () => {
  const aptosConfig = new AptosConfig({ network: Network.MAINNET });
  const aptos = new Aptos(aptosConfig);
  const transactionToSign = await aptos.transaction.build.simple({
    sender: account.address,
    data: {
      function: "0x1::coin::transfer",
      typeArguments: [APTOS_COIN],
      functionArguments: [account.address.toString(), 1],
    },
  });
  const response = await signTransaction({
    transactionOrPayload: transactionToSign,
  });
};

<button onClick={onSignTransaction}>Sign transaction</button>;
<button onClick={onSignRawTransaction}>Sign raw transaction</button>;
signMessageAndVerify(payload)
const onSignMessageAndVerify = async () => {
  const payload = {
    message: "Hello from Aptos Wallet Adapter",
    nonce: "random_string",
  };
  const response = await signMessageAndVerify(payload);
};

<button onClick={onSignMessageAndVerify}>Sign message and verify</button>;

As part of the wallet adapter repo we provide a wallet connect UI package that provides a wallet connect button and a wallet select modal.

The available UI Packages are

If you want to create your own wallet selector UI from existing components and styles in your app, @aptos-labs/wallet-adapter-react provides a series of headless components and utilities to simplify this process so that you can focus on writing CSS instead of implementing business logic. For more information, check out the Building Your Own Wallet Selector document.

版本与发布记录

@aptos-labs/wallet-adapter-react 共发布 181 个版本,首次发布于 2022/12/07;过去 12 个月发布了 32 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
8.3.3latest2026/03/287 个月前
8.3.22026/03/207 个月前
8.3.12026/03/107 个月前
8.3.02026/02/198 个月前
8.2.22026/02/148 个月前
8.2.12026/02/069 个月前

其他发布通道:alpha → 8.2.0-alpha.4。

关于 @aptos-labs/wallet-adapter-react 的常见问题

@aptos-labs/wallet-adapter-react 是什么?

Aptos Wallet Adapter React Provider

如何安装 @aptos-labs/wallet-adapter-react?

在项目目录运行 npm install @aptos-labs/wallet-adapter-react,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(^18.0.0 || ^19.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@aptos-labs/wallet-adapter-react 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@aptos-labs/wallet-adapter-react 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@aptos-labs/wallet-adapter-react 可以商用吗?

@aptos-labs/wallet-adapter-react 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@aptos-labs/wallet-adapter-react 的下载量有多少?

根据 npm 官方下载统计,@aptos-labs/wallet-adapter-react 在 2026/10/07 – 2026/11/05 这 30 天内被下载 20,571 次,日均约 686 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aptos-labs/wallet-adapter-react 还在维护吗?

最新版本 8.3.3 发布于 2026/03/28(7 个月前);至今共发布 181 个版本,其中过去 12 个月发布了 32 个;首次发布于 2022/12/07。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。