# Browser Extension Overview

How the Joey browser extension exposes itself to dApps, and the tools for integrating it.

The Joey browser extension is a self-custody XRP Ledger wallet for Google Chrome and other Chromium-based browsers. When a page loads, Joey injects a provider your dApp can use to connect and request signatures. Users approve every connection and every transaction in Joey.

## How your dApp can reach Joey

| Surface | What it is |
|---|---|
| `window.xrpl.joey` | The main provider. It's added to the shared `window.xrpl` namespace without overwriting other wallets that live there. |
| `window.joey` | A shortcut to the same provider, unless something else already owns `window.joey`. |
| Wallet Standard (XLS-72d) | Joey registers as wallet `Joey` on chains `xrpl:0`, `xrpl:1` and `xrpl:2`, so wallet-agnostic XRPL adapters find it automatically. |
| CAIP-294 | Joey announces itself with a `wallet_announce` event (`rdns: "xyz.joeywallet"`) and announces again when it receives `wallet_prompt`. |

## Choose your tool

- **[`@joeywallet/wallet-sdk`](/docs/browser-extension/installation) (recommended).** A typed client with zero runtime dependencies, React hooks and a no-framework helper.
- **Wallet Standard.** If your app already uses a Wallet Standard adapter for the XRPL, Joey appears there with no Joey-specific code.
- **[`@joeywallet/gemwallet-compat`](/docs/browser-extension/gemwallet-compat).** For apps built on GemWallet's API: change one import.

## Supported networks

| Chain ID | Network |
|---|---|
| `xrpl:0` | XRP Ledger Mainnet |
| `xrpl:1` | XRP Ledger Testnet |
| `xrpl:2` | XRP Ledger Devnet |

The user picks the network inside Joey. There's no method for a dApp to switch it; see [Testing](/docs/browser-extension/testing).

## What the provider offers

- Connect and disconnect, with per-site, per-account permissions
- Read granted accounts and the current network
- Sign, or sign and submit, any supported transaction type
- Multisign (`signTransactionFor`)
- Sign or submit up to 32 transactions with one approval (`signTransactionBulk`)
- XLS-56 `Batch` transactions
- Sign-in with CAIP-122 (`signIn`)
- Events for account, network and connection changes

There is deliberately **no `signMessage`** (use [sign-in](/docs/browser-extension/sign-in)) and **no method to switch networks**.

## Next steps

- [Install the SDK](/docs/browser-extension/installation)
- [Quick start](/docs/browser-extension/quick-start)
- [Permissions and privacy](/docs/browser-extension/permissions): what your dApp can and can't see
