The Arweave Wallet Interface Standard is the de facto browser-based API that governs how decentralized applications (dApps) on the permaweb connect to user wallets. Analogous to Ethereum's EIP-1193, this standard is not a formal ARC but an emergent convention defined by the two dominant wallet implementations: ArConnect and Arweave.app. It specifies the window.arweaveWallet JavaScript object injected into a web page's global scope, providing a strictly typed interface for requesting user accounts, signing transactions, and encrypting/decrypting data. For any front-end engineer building on Arweave, this API is the single point of integration for all user interactions with the network.

ArConnect and Arweave.app Wallet Interface Standard
What is the Arweave Wallet Interface Standard?
A technical analysis of the `window.arweaveWallet` API, its methods, event system, and versioning, which forms the critical integration layer between browser-based wallets and every permaweb dApp.
The standard defines a core set of asynchronous methods including connect(), disconnect(), getActiveAddress(), sign(), and signTransaction(), alongside an event system for listening to account changes ('walletSwitch') and disconnections. A critical operational detail is the API's versioning mechanism, which allows dApps to check for specific feature support and prevents breaking changes from immediately fracturing the ecosystem. The standard also specifies the ar:// protocol handler for deep-linking into wallet transaction previews, a feature essential for mobile and cross-application flows. Builders must understand the subtle behavioral differences between ArConnect's injected script and Arweave.app's iframe-based approach, particularly around permission scoping and how each wallet surfaces transaction tags to the user for approval.
For integration engineers and QA teams, the primary risk is assuming uniform behavior across wallets. A dApp that works perfectly with ArConnect may fail silently with Arweave.app if it does not correctly handle the connect() permission flow or if it relies on a method not present in the user's installed wallet version. Chainscore Labs helps teams audit their wallet integration layer against the full interface specification, build comprehensive test suites that simulate both wallet environments, and implement robust error-handling for cases where the window.arweaveWallet object is undefined or the user rejects a signature request. This review is especially critical before any mainnet deployment that involves token transfers, data uploads, or AO process interactions.
Quick Facts
Operational facts about the de facto browser wallet API for Arweave dApps, modeled on EIP-1193.
| Field | Value | Why it matters |
|---|---|---|
Injected API object | window.arweaveWallet | dApps must detect this object to interact with any compliant wallet; absence means no connection path. |
Primary connection method | wallet.connect(permissions) | Defines the permissions contract (e.g., ACCESS_ADDRESS, SIGN_TRANSACTION); dApps must request only what they need. |
Transaction signing | wallet.sign(transaction) | Returns a signed transaction object; the wallet controls key material, so dApps never see the private key. |
Event system | wallet.on('event', handler) | Enables wallets to push state changes (account switch, disconnect) to dApps; critical for session management. |
Versioning | API version exposed via wallet.version | Breaking changes to the API surface must be coordinated; dApps should check version before calling newer methods. |
Key derivation | Wallet-managed; typically Arweave RSA or ECDSA (secp256k1) | The standard is key-type agnostic, but dApps and exchanges must handle both legacy RSA and modern ECDSA signatures. |
Reference implementation | ArConnect browser extension | Sets the de facto standard; other wallets (e.g., Arweave.app) must match its API behavior to avoid dApp breakage. |
Compatibility risk | No formal ARC specification yet | The standard is defined by ArConnect's implementation; deviations by other wallets can cause silent failures in dApps expecting specific behavior. |
Technical Mechanism and API Surface
The injected `window.arweaveWallet` API defines the critical interface between Arweave dApps and browser-based wallets, establishing a contract for connection, signing, and event handling.
The ArConnect and Arweave.app Wallet Interface Standard is the de facto application-layer specification for how browser-based wallets expose an Arweave provider to decentralized applications. It is functionally analogous to Ethereum's EIP-1193, defining a strict API surface injected at window.arweaveWallet. This standard is not a consensus-layer protocol change but an opt-in convention that has achieved near-universal adoption across the permaweb ecosystem. The API mandates a set of asynchronous methods—including connect, disconnect, sign, signTransaction, and encrypt—that dApps call to request user authorization and cryptographic operations without ever gaining direct access to private key material.
The standard's event system and versioning semantics are critical for maintaining compatibility as wallets evolve. A walletSwitch event notifies dApps when a user changes their active wallet address, while a nodeChange event signals a switch in the gateway endpoint the wallet is configured to use. These events force dApp developers to build reactive state management that respects user intent, rather than caching a static connection. The API's permission model is connection-based: a dApp must first call connect with specific permissions (e.g., ACCESS_ADDRESS, SIGN_TRANSACTION) and receive explicit user approval before invoking protected methods. This creates a clear security boundary, but also introduces integration risk if dApps do not correctly handle cases where a user denies a connection or revokes permissions mid-session.
For builders and operators, the operational impact centers on the divergence between the standard's specification and real-world wallet implementations. Wallets may support different subsets of methods, handle encryption and decryption with varying algorithms, or implement non-standard behaviors for legacy RSA keys versus modern ECDSA (secp256k1) keys. Teams integrating Arweave wallets into exchanges, bridges, or cross-chain applications should audit their dApp's interaction with the injected API against the canonical ArConnect documentation, paying particular attention to error handling, permission scope requests, and the arweaveWallet namespace collision risk when multiple wallet extensions are installed. Chainscore Labs can assist with integration review and compatibility testing to ensure dApps gracefully handle the full spectrum of wallet behaviors encountered in the wild.
Affected Actors and Systems
Integration and Compatibility
Every permaweb application that requires user signatures depends on window.arweaveWallet. The standard's injected API—including connect(), sign(), signTransaction(), and disconnect()—must be treated as the canonical interface.
Action items:
- Audit your dApp for direct calls to non-standard methods or internal wallet internals.
- Implement the
walletSwitchandwalletDisconnectevent listeners to handle user-initiated wallet changes gracefully. - Test against both ArConnect and Arweave.app to catch divergent behavior in permission scopes or event emission ordering.
- If your app uses
arweave-js, verify that theArConnectsigner adapter is up to date.
Chainscore Labs can review your wallet integration layer for silent compatibility gaps that cause transaction failures in production.
Implementation Impact and Integration Patterns
The window.arweaveWallet API is the critical interface between every permaweb dApp and user wallets. Integration decisions here directly affect transaction signing, user onboarding, and cross-wallet compatibility.
API Injection and Namespace Collision Risk
The standard requires wallets to inject window.arweaveWallet before dApp scripts execute. A race condition exists if a user has multiple Arweave wallet extensions installed, as only one can claim the namespace. dApps should not cache the API reference at load time; instead, they must poll for window.arweaveWallet or listen for the walletSwitch event to handle users changing their active wallet mid-session. Failure to implement this pattern results in 'wallet not found' errors even when a compatible wallet is installed.
connect() Permission Model and User Experience
The connect() method with ACCESS_ALL_ADDRESSES permission is the gateway to all other API calls. Wallets enforce this as a user consent moment, but the standard does not mandate a specific UX. Some wallets grant perpetual access per domain, while others require reconnection on each page load. dApp developers must handle connect() rejections gracefully and implement a reconnection loop that respects wallet-specific behavior. For exchanges and institutional integrators, the permission model's reliance on browser local storage introduces operational risk if users clear site data.
sign() and signDataItem() for Bundled Transactions
The sign() method handles base-layer transactions, but the signDataItem() method is the critical path for ANS-104 bundled transactions that power the majority of permaweb applications and AO processes. A wallet that implements sign() but not signDataItem() is functionally broken for modern dApps. Integration teams must verify that target wallets support both methods and correctly handle the data, tags, target, and anchor fields in the DataItem structure. Incorrect tag serialization by a wallet can cause bundlers to reject transactions silently.
Event System and State Synchronization
The connect, disconnect, and walletSwitch events are essential for reactive dApp state management. When a user switches accounts in their wallet extension, the dApp must listen for walletSwitch to update the active address and re-authorize. Relying solely on polling getActiveAddress() creates a degraded experience and potential state inconsistencies where a dApp signs with a stale address. Integration tests should simulate rapid account switching to verify that the dApp's state layer correctly unbinds and rebinds to the new address without leaking session data.
Gateway and Node Compatibility for Transaction Submission
The wallet interface standard is agnostic to the submission pathway, but dApps typically post signed transactions through a gateway like arweave.net or a custom bundler endpoint. Integration architects must decide whether to submit directly to a trusted gateway, use a bundler service like Irys or Turbo, or broadcast to multiple nodes. Each choice introduces different trust assumptions about transaction ordering, censorship resistance, and availability. For high-value financial applications, teams should verify that the wallet's signing output is compatible with their chosen submission infrastructure before committing to a single provider.
Compatibility and Risk Matrix
Assesses the operational, integration, and security risks for dApps and wallets relying on the de facto window.arweaveWallet standard.
| Area | What changes or differs | Who is affected | Action |
|---|---|---|---|
API Method Support | Wallets may implement different subsets of the standard API (e.g., arconnect, arweave.app, Beacon). Missing methods like | dApp developers, frontend teams | Audit the wallet's supported methods against your dApp's required calls. Implement graceful degradation or user prompts for unsupported features. |
Event System Behavior | The | dApp developers, frontend teams | Do not rely solely on event listeners for state management. Poll the wallet state or re-verify the active address on critical user actions. |
Key Type and Signing Algorithm | Legacy wallets use RSA keys while modern wallets use ECDSA (secp256k1). The signing algorithm and public key format differ, affecting signature verification. | Backend services, smart contract developers, exchange integrators | Verify that backend signature verification logic handles both RSA-PSS and ECDSA signatures based on the |
Transaction Format Assumptions | Wallets may construct transactions with different default tags, data roots, or reward settings. A dApp's assumption about a specific tag being present can cause indexing failures. | dApp developers, indexer operators, gateway maintainers | Explicitly set all required transaction tags and parameters in the dApp before passing the transaction to the wallet for signing. Never assume defaults. |
Permission Scope Mismanagement | Users may grant | End users, wallet security teams, dApp developers | dApps should request the minimum permissions needed. Wallets should clearly communicate the risk of broad permissions. Users should audit connected apps regularly. |
Versioning and Breaking Changes | The injected API does not have a formal version negotiation mechanism. A wallet upgrade can silently introduce a breaking change to a method's signature or behavior. | dApp developers, wallet development teams | Monitor wallet release notes. Implement runtime checks for method existence and parameter types. Wallet teams should coordinate breaking changes with the ecosystem. |
Gateway and Node Dependency | Wallets rely on specific gateways to post transactions and fetch data. Gateway censorship, downtime, or a change in the | Wallet developers, infrastructure operators, end users | Wallet developers should allow users to configure a custom gateway or node. dApp teams should verify the transaction's presence on a known reliable gateway. |
Multiple Wallet Injection Conflict | If a user has multiple Arweave wallet extensions installed, they may conflict over which one injects | End users, dApp developers, wallet development teams | Users should disable conflicting extensions. dApp developers should provide a wallet selection modal if multiple injection patterns are detected. |
Integration Readiness Checklist
A practical checklist for dApp developers and wallet builders to verify compatibility with the de facto `window.arweaveWallet` injection standard. Each item confirms a critical integration point, explains the failure mode if missed, and identifies the signal that proves readiness.
What to check: Confirm that the wallet extension injects the API object at window.arweaveWallet before the dApp's DOMContentLoaded event fires. Test that the object is non-configurable and non-writable to prevent other extensions from overwriting it.
Why it matters: Race conditions in injection timing are the most common cause of silent dApp failures. If a dApp caches a reference before injection, all subsequent calls will fail with arweaveWallet is undefined.
Readiness signal: The dApp's initialization logic uses an event-driven or polling approach (e.g., listening for a custom walletSwitch event or using a setTimeout loop) rather than assuming synchronous availability. The wallet extension's manifest ensures its content script runs at document_start.
Source Resources and Canonical Links
Use these sources to validate the de facto ArConnect and Arweave.app browser wallet interface before shipping wallet-dependent Arweave applications. Teams should verify method behavior, permissions, signing flows, and provider detection against live wallet documentation and implementations.
Implementation Verification Checklist
Before launch, maintain a small compatibility matrix covering ArConnect, Arweave.app, supported browsers, provider detection, requested permissions, getActiveAddress, signing, dispatch, account-change behavior, disconnect handling, and fallback messaging. Record the wallet version or release channel used for testing and repeat the test after wallet or dependency upgrades. For high-value applications, Chainscore Labs can review the wallet integration path, transaction construction, permission model, and gateway assumptions to reduce signing-flow and compatibility risk.
Looking to build on a specific blockchain?
We build smart contracts, DeFi applications, wallets, tokenization platforms, and blockchain infrastructure across the major ecosystems teams choose today. That includes Ethereum, Arbitrum, Optimism, Polygon, Avalanche, Solana, Sui, Aptos, Hedera, Stellar, and NEAR, with support for additional EVM and non-EVM networks based on your product requirements.
EVM ecosystems
- Ethereum
- Arbitrum
- Optimism
- Polygon
- Avalanche
- Cronos

Non-EVM ecosystems
- Solana
- Sui
- Aptos
- Hedera
- Stellar
- NEAR
Additional ecosystems
- Polkadot
- Cosmos
- TON
- Cardano
- Algorand
- Tempo
Also available for Base, appchains, custom EVM networks, and cross-chain product architecture.
Frequently Asked Questions
Common questions from dApp developers and wallet builders about the ArConnect/Arweave.app injected API standard, its compatibility with EIP-1193 patterns, and operational requirements for permaweb applications.
The window.arweaveWallet object is the injected browser API that ArConnect and Arweave.app expose to dApps. It follows a pattern inspired by Ethereum's EIP-1193 provider standard but is adapted for Arweave's transaction model.
Key architectural differences from EIP-1193:
- Request method: Uses
window.arweaveWallet.connect()andwindow.arweaveWallet.disconnect()for session management instead ofeth_requestAccounts. - Transaction signing: The
sign()method accepts an Arweave transaction object directly rather than RLP-encoded data. - Event system: Emits
connect,disconnect, andwalletSwitchevents, but does not implement the full EIP-1193 event interface. - No chain ID: Arweave has a single network, so there is no
eth_chainIdequivalent.
What to check: Verify that your dApp's wallet detection logic looks for window.arweaveWallet specifically, not just any injected provider. Confirm that your event listeners handle the walletSwitch event, which fires when users change their active wallet address within the extension.
Delivering blockchain solutions for 5+ years.
We have partnered with 50+ leading DeFi protocols, NFT ecosystems, and fintech innovators to build secure, scalable, and capital-efficient blockchain products.
Selected Partners & Clients
“I've been working with Chainscore Labs for last 3+ years, they've consistently delivered with strong ownership across multiple projects. The team is reliable and detail-oriented.”
How to get started?
If you're looking for blockchain integration, ChainScore Labs has 5+ years of experience helping teams build and integrate exchanges, wallets, smart contracts, tokenization solutions, and protocol-connected products, we can help you choose the right path, integrate securely, and get to production faster. Our team consists of experienced blockchain developers and architects who can help you with your blockchain integration needs.
Exploration & Strategy
Define your product goals and choose the right blockchain architecture for your use case.
Architecture & Design
Design the smart contracts, tokenomics, and security parameters of your system.
Development & Integration
Build and integrate with wallets, oracles, and front-end dApps for a seamless experience.
Security & Launch
Comprehensive audits followed by a risk-managed mainnet deployment to protect your users.
Discover our
blockchain development services.
We build production-grade blockchain solutions for top-tier projects across DeFi and Web3.
Need a blockchain engineering team?
Send the project context and we will respond with next steps, scope questions, and a practical path to delivery.


