@abstract-foundation/agw-react

中文文档
1.13.0发布于 2026/04/19MITTypeScriptESM + CJS构建来源已验证近 30 天下载 8.9万

Abstract Global Wallet React Components

原始使用文档
文档目录11 节
  1. Abstract Global Wallet (AGW)
  2. Installation
  3. Quick Start
  4. Importing
  5. Using useLoginWithAbstract Hook
  6. Using useAbstractClient Hook
  7. API Reference
  8. Examples
  9. Sending a Transaction
  10. Using useWriteContractSponsored
  11. Documentation

@abstract-foundation/agw-react

The @abstract-foundation/agw-react package provides React hooks and components to integrate the Abstract Global Wallet (AGW) into your React applications.

Abstract Global Wallet (AGW)

Abstract Global Wallet (AGW) is a cross-application smart contract wallet that users can use to interact with any application built on Abstract, powered by Abstract's native account abstraction.

Installation

Install the React integration package via NPM:

npm install @abstract-foundation/agw-react

Quick Start

Importing

import { useAbstractClient, useLoginWithAbstract } from '@abstract-foundation/agw-react';

Using useLoginWithAbstract Hook

import React from 'react';
import { useLoginWithAbstract } from '@abstract-foundation/agw-react';

export default function App() {
  const { login, logout } = useLoginWithAbstract();

  return (
    <div>
      <button onClick={login}>Connect with Abstract</button>
      <button onClick={logout}>Disconnect</button>
    </div>
  );
}

Using useAbstractClient Hook

import React from 'react';
import { useAbstractClient } from '@abstract-foundation/agw-react';

export default function App() {
  const { data: abstractClient, error, isLoading } = useAbstractClient();

  if (isLoading) return <div>Loading Abstract Client...</div>;
  if (error) return <div>Error: {error.message}</div>;

  // Use the abstractClient instance here
  return <div>Abstract Client is ready!</div>;
}

API Reference

  • useAbstractClient: Hook to create and access an instance of the Abstract Client within your React application.
  • useLoginWithAbstract: Hook for signing in and signing out users with the Abstract Global Wallet.
  • useGlobalWalletSignerAccount: Hook to retrieve the Global Wallet Signer's account information.
  • useGlobalWalletSignerClient: Hook to access the wallet client associated with the Global Wallet Signer's account.
  • useWriteContractSponsored: Hook to perform sponsored contract write operations.

Examples

Sending a Transaction

Using @abstract-foundation/agw-react to send a transaction:

import React from 'react';
import { useAbstractClient } from '@abstract-foundation/agw-react';

export default function SendTransactionButton() {
  const { data: abstractClient } = useAbstractClient();

  const handleSendTransaction = async () => {
    if (!abstractClient) return;

    try {
      const txHash = await abstractClient.sendTransaction({
        to: '0xRecipientAddress',
        value: 1000000000000000000n, // 1 ETH in wei
      });
      console.log('Transaction Hash:', txHash);
    } catch (error) {
      console.error('Error sending transaction:', error);
    }
  };

  return (
    <button onClick={handleSendTransaction} disabled={!abstractClient}>
      Send Transaction
    </button>
  );
}

Using useWriteContractSponsored

import React from 'react';
import { useWriteContractSponsored } from '@abstract-foundation/agw-react';
import { Abi } from 'viem';

const contractAbi: Abi = [/* Your contract ABI here */];

export default function SponsoredContractWrite() {
  const {
    writeContractSponsored,
    data,
    error,
    isLoading,
    isSuccess,
  } = useWriteContractSponsored();

  const handleWriteContract = () => {
    writeContractSponsored({
      address: '0xYourContractAddress',
      abi: contractAbi,
      functionName: 'yourFunctionName',
      args: ['arg1', 'arg2'],
      paymaster: '0xYourPaymasterAddress',
      paymasterInput: '0x',
    });
  };

  return (
    <div>
      <button onClick={handleWriteContract} disabled={isLoading}>
        {isLoading ? 'Processing...' : 'Execute Sponsored Transaction'}
      </button>
      {isSuccess && <div>Transaction Hash: {data?.hash}</div>}
      {error && <div>Error: {error.message}</div>}
    </div>
  );
}

Documentation

For detailed documentation, please refer to the Abstract Global Wallet Documentation.

版本与发布记录

@abstract-foundation/agw-react 共发布 99 个版本,首次发布于 2024/09/27;过去 12 个月发布了 6 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.13.0latest2026/04/196 个月前
1.12.32026/04/196 个月前
1.12.22026/04/186 个月前
1.12.12026/04/156 个月前
1.12.02026/04/057 个月前
1.11.02026/03/038 个月前

其他发布通道:next → 1.10.0-beta.1。

关于 @abstract-foundation/agw-react 的常见问题

@abstract-foundation/agw-react 是什么?

Abstract Global Wallet React Components

如何安装 @abstract-foundation/agw-react?

在项目目录运行 npm install @abstract-foundation/agw-react,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@privy-io/react-auth(^2.21.2 || ^3)、@tanstack/react-query(^5)、react(>=18)、secp256k1(>=5.0.1)、viem(^2.37.0)、wagmi(^2.17.5)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@abstract-foundation/agw-react 支持 TypeScript 吗?

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

@abstract-foundation/agw-react 支持 ESM 还是 CommonJS?

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

@abstract-foundation/agw-react 可以商用吗?

@abstract-foundation/agw-react 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@abstract-foundation/agw-react 的下载量有多少?

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

@abstract-foundation/agw-react 还在维护吗?

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