# @metamask/connect-solana

> MetaMask Connect Solana adapter — Wallet Standard integration over the multichain client

Latest version **2.1.1** (published 2026-07-08) · SEE LICENSE IN LICENSE license · 0 weekly downloads

## Install

```sh
npm install @metamask/connect-solana
pnpm add @metamask/connect-solana
yarn add @metamask/connect-solana
bun add @metamask/connect-solana
```

## Health

**Score 75/100 (B)** — status: active.

Positive: has types; esm support; no vulnerabilities; has provenance; recently updated; high maintenance score; high quality score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 2.1.1 |
| Published | 2026-07-08 |
| First published | 2026-02-05 |
| Weekly downloads | 0 |
| License | SEE LICENSE IN LICENSE |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >=20.19.0 |
| Dependencies | 5 |
| Unpacked size | 79.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 12 |
| Maintainers | kumavis, frederikbolding, metamaskbot, gudahtt, mrten, mcmire, naugtur |
| Keywords | MetaMask, Solana |

## Links

- npm: https://www.npmjs.com/package/@metamask/connect-solana
- Repository: https://github.com/MetaMask/connect-monorepo
- Homepage: https://github.com/MetaMask/connect-monorepo/tree/main/packages/connect-solana#readme
- Issues: https://github.com/MetaMask/connect-monorepo/issues
- npm.io page: https://npm.io/package/@metamask/connect-solana

## Dependencies (5)

- [semver](https://npm.io/package/semver.md) ^7.7.4
- [@wallet-standard/app](https://npm.io/package/@wallet-standard/app.md) ~1.1.0
- [@wallet-standard/base](https://npm.io/package/@wallet-standard/base.md) ^1.1.0
- [@metamask/connect-multichain](https://npm.io/package/@metamask/connect-multichain.md) ^1.2.0
- [@metamask/solana-wallet-standard](https://npm.io/package/@metamask/solana-wallet-standard.md) ^0.6.0

## Recent versions

- 2.1.1 (latest) — 2026-07-08
- 2.1.0 — 2026-06-11
- 2.0.0 — 2026-06-05
- 1.2.0 — 2026-05-26
- 1.1.0 — 2026-05-05
- 1.0.0 — 2026-04-21
- 0.8.1 — 2026-04-20
- 0.8.0 — 2026-04-15
- 0.7.1 — 2026-04-02
- 0.7.0 — 2026-03-19
- 0.6.0 — 2026-03-13
- 0.5.0 — 2026-03-12
- 0.4.0 — 2026-03-10
- 0.3.0 — 2026-03-09
- 0.2.0 — 2026-02-24
- … 1 more at https://npm.io/package/@metamask/connect-solana/versions

## README

# `@metamask/connect-solana`

> Solana wallet-standard integration for connecting to MetaMask via the Multichain API.

`@metamask/connect-solana` provides a seamless way to integrate MetaMask as a Solana wallet in your dapp using the [wallet-standard](https://github.com/wallet-standard/wallet-standard) protocol. It wraps `@metamask/solana-wallet-standard` with MetaMask Connect to handle wallet discovery and session management automatically.

## Features

- **Wallet Standard Compatible** - Automatically registers MetaMask with the wallet-standard registry
- **Seamless Integration** - Works with `@solana/wallet-adapter-react` out of the box
- **Session Management** - Handles session creation internally; disconnect revokes only Solana scopes
- **Cross-Platform Support** - Works with browser extensions and mobile applications

## Installation

```bash
yarn add @metamask/connect-solana
```

or

```bash
npm install @metamask/connect-solana
```

## Quick Start

```typescript
import { createSolanaClient, getInfuraRpcUrls } from '@metamask/connect-solana';

const INFURA_API_KEY = 'YOUR_INFURA_API_KEY';

// Create a Solana client
// MetaMask is automatically registered with the wallet-standard registry on creation
const client = await createSolanaClient({
  dapp: {
    name: 'My Solana DApp',
    url: 'https://mydapp.com',
  },
  api: {
    supportedNetworks: getInfuraRpcUrls({
      infuraApiKey: INFURA_API_KEY,
      networks: ['mainnet', 'devnet'],
    }),
  },
});
```

## Usage with Solana Wallet Adapter

The most common use case is integrating with `@solana/wallet-adapter-react`:

```tsx
import {
  ConnectionProvider,
  WalletProvider,
} from '@solana/wallet-adapter-react';
import {
  WalletModalProvider,
  WalletMultiButton,
} from '@solana/wallet-adapter-react-ui';
import { createSolanaClient } from '@metamask/connect-solana';
import { useEffect } from 'react';

import '@solana/wallet-adapter-react-ui/styles.css';

function App() {
  useEffect(() => {
    // MetaMask is automatically registered with the wallet-standard registry on creation
    createSolanaClient({
      dapp: {
        name: 'My Solana DApp',
        url: window.location.origin,
      },
    });
  }, []);

  return (
    <ConnectionProvider endpoint="https://api.devnet.solana.com">
      <WalletProvider wallets={[]} autoConnect>
        <WalletModalProvider>
          <WalletMultiButton />
          {/* Your app content */}
        </WalletModalProvider>
      </WalletProvider>
    </ConnectionProvider>
  );
}
```

### ⚠️ Wallet Adapter support

> **Note:** There is a known issue with `@solana/wallet-adapter-react` that prevents connecting to MetaMask when using the Wallet Standard provider from `@metamask/connect-solana` in Chrome on Android.
>
> See this [patch file](../../.yarn/patches/@solana-wallet-adapter-react-npm-0.15.39-86277fdcc0.patch) for details.

## API Reference

### `createSolanaClient(options)`

Creates a new Solana client instance. By default, the wallet is automatically registered with the wallet-standard registry on creation.

#### Parameters

| Option                      | Type                      | Required | Description                                                                                                                  |
| --------------------------- | ------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `dapp.name`                 | `string`                  | Yes      | Name of your dApp                                                                                                            |
| `dapp.url`                  | `string`                  | No       | URL of your dApp                                                                                                             |
| `dapp.iconUrl`              | `string`                  | No       | Icon URL for your dApp                                                                                                       |
| `api.supportedNetworks`     | `SolanaSupportedNetworks` | No       | Map of network names (`mainnet`, `devnet`, `testnet`) to RPC URLs                                                            |
| `analytics.enabled`         | `boolean`                 | No       | Enables dapp-side analytics. Defaults to `true`; set to `false` to disable analytics events and wallet correlation metadata. |
| `analytics.integrationType` | `string`                  | No       | Integration type for analytics                                                                                               |
| `debug`                     | `boolean`                 | No       | Reserved for future use; not currently forwarded to the underlying client                                                    |
| `skipAutoRegister`          | `boolean`                 | No       | Skip auto-registering the wallet during creation (defaults to `false`)                                                       |

#### Returns

`Promise<SolanaClient>`

```typescript
const client = await createSolanaClient({
  dapp: {
    name: 'My Solana DApp',
    url: 'https://mydapp.com',
  },
});
```

---

### `getInfuraRpcUrls(options)`

Generates Solana Infura RPC URLs keyed by Solana network name. The return value can be passed directly to `createSolanaClient({ api: { supportedNetworks } })`.

#### Parameters

| Name           | Type              | Required | Description                                                       |
| -------------- | ----------------- | -------- | ----------------------------------------------------------------- |
| `infuraApiKey` | `string`          | Yes      | Your Infura API key                                               |
| `networks`     | `SolanaNetwork[]` | Yes      | Solana networks to include (for example, `['mainnet', 'devnet']`) |

#### Returns

`SolanaSupportedNetworks`

```typescript
import { getInfuraRpcUrls } from '@metamask/connect-solana';

const supportedNetworks = getInfuraRpcUrls({
  infuraApiKey: 'YOUR_INFURA_API_KEY',
  networks: ['mainnet', 'devnet'],
});

// {
//   mainnet: 'https://solana-mainnet.infura.io/v3/YOUR_INFURA_API_KEY',
//   devnet: 'https://solana-devnet.infura.io/v3/YOUR_INFURA_API_KEY',
// }
```

---

### `SolanaClient`

The object returned by `createSolanaClient`.

#### Properties

| Property | Type             | Description                            |
| -------- | ---------------- | -------------------------------------- |
| `core`   | `MultichainCore` | The underlying MultichainCore instance |

#### Methods

##### `getWallet()`

Returns a wallet-standard compatible MetaMask wallet instance.

**Returns**

`Wallet` - A [wallet-standard](https://github.com/wallet-standard/wallet-standard) compatible wallet.

##### `registerWallet()`

Registers the MetaMask wallet with the wallet-standard registry. This is a no-op if the wallet was already auto-registered during creation (i.e., `skipAutoRegister` was not set to `true`).

**Returns**

`Promise<void>`

##### `disconnect()`

Disconnects all Solana scopes from MetaMask. This only revokes the Solana-specific scopes (`mainnet`, `devnet`, `testnet`); it does not terminate the broader multichain session.

**Returns**

`Promise<void>`

---

### Types

#### `SolanaNetwork`

```typescript
type SolanaNetwork = 'mainnet' | 'devnet' | 'testnet';
```

#### `SolanaSupportedNetworks`

```typescript
type SolanaSupportedNetworks = Partial<Record<SolanaNetwork, string>>;
```

## TypeScript

This package is written in TypeScript and includes full type definitions.

## Development

This package is part of the MetaMask Connect monorepo. From the repo root:

```bash
# Build the package
yarn workspace @metamask/connect-solana run build

# Run tests
yarn workspace @metamask/connect-solana run test

# Run linting
yarn workspace @metamask/connect-solana run lint
```

## Contributing

This package is part of a monorepo. Instructions for contributing can be found in the [monorepo README](https://github.com/MetaMask/connect-monorepo#readme).

## License

MIT

---
_Source: https://npm.io/package/@metamask/connect-solana · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
