Skip to content
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
0b79037
SDK new structure PoC
alexandratran Sep 23, 2025
44a6248
edits
alexandratran Sep 24, 2025
f234baf
remove custom reference component
alexandratran Sep 24, 2025
f331654
edits
alexandratran Sep 25, 2025
e2f4b8b
Merge branch 'main' into sdk-new-structure
alexandratran Sep 30, 2025
ef20ee1
fix links, update redirects, "metamask wallet sdk"
alexandratran Sep 30, 2025
39b9b16
Merge branch 'main' into sdk-new-structure
alexandratran Oct 16, 2025
905d9a8
add simplified api reference with two examples
alexandratran Oct 18, 2025
549887c
missing files
alexandratran Oct 18, 2025
1b97b2c
Merge branch 'main' into sdk-new-structure
alexandratran Oct 20, 2025
bb103fb
remove starknet docs
alexandratran Oct 21, 2025
8216d8b
copy over solana docs
alexandratran Oct 21, 2025
34aed2c
Merge branch 'main' into sdk-new-structure
alexandratran Oct 22, 2025
d64e8a4
Merge branch 'main' into sdk-new-structure
alexandratran Oct 23, 2025
e02092a
Update terminology and restructure EVM docs
alexandratran Oct 23, 2025
956c09a
fix broken links
alexandratran Oct 23, 2025
86d2dfc
Merge branch 'main' into sdk-new-structure
alexandratran Nov 4, 2025
f70f940
fix broken links
alexandratran Nov 4, 2025
e1e0008
Add/update Solana Wallet Adapter docs (#2443)
alexandratran Nov 7, 2025
37a4d06
Merge branch 'main' into sdk-new-structure
alexandratran Nov 10, 2025
30d0439
Update mobile products menu
alexandratran Nov 10, 2025
3db005f
Update MM Connect EVM JS code samples with potential new usage (#2454)
alexandratran Nov 12, 2025
d122361
Merge branch 'main' into sdk-new-structure
alexandratran Nov 13, 2025
360383d
Remove ParserOpenRPC component and replace usage in Linea services
alexandratran Nov 14, 2025
98476fe
Merge branch 'main' into sdk-new-structure
alexandratran Nov 18, 2025
c04fb6d
fix broken link
alexandratran Nov 18, 2025
b034e01
Add more multichain info (#2479)
alexandratran Nov 18, 2025
77bb9a9
Merge branch 'main' into sdk-new-structure
alexandratran Nov 27, 2025
b4716d6
Enhance JS section {WIP} (#2450)
shahbaz17 Nov 27, 2025
2a6e4ab
Add view & wagmi options
shahbaz17 Nov 27, 2025
6cf2880
Merge branch 'main' into sdk-new-structure
alexandratran Nov 28, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
fix broken links
  • Loading branch information
alexandratran committed Oct 23, 2025
commit 956c09a4e8f971ba6e54239d8ea3014948c91766
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,7 @@ Follow these steps to connect MetaMask to Hardhat Network.

:::tip
Alternatively, you can add Hardhat Network to MetaMask using
[`wallet_addEthereumChain`](/wallet/reference/json-rpc-methods/wallet_addethereumchain/?AddEthereumChainParameter[rpcUrls][0]=http://127.0.0.1:8545&AddEthereumChainParameter[chainId]=0x539&AddEthereumChainParameter[chainName]=Hardhat&AddEthereumChainParameter[nativeCurrency][name]=testEth&AddEthereumChainParameter[nativeCurrency][symbol]=testEth&AddEthereumChainParameter[nativeCurrency][decimals]=18)
in the interactive API playground.
[`wallet_addEthereumChain`](../../../reference/json-rpc-api/index.md).
:::

## Reset your local nonce calculation
Expand Down
2 changes: 1 addition & 1 deletion sdk/evm/connect/reference/methods.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ console.log("Signature:", signature);

## `connectWith`

Connects to MetaMask and executes a specific [JSON-RPC method](/wallet/reference/json-rpc-methods).
Connects to MetaMask and executes a specific [JSON-RPC method](json-rpc-api/index.md).

### Parameters

Expand Down
5 changes: 0 additions & 5 deletions sdk/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,6 @@ description: 'Connect to Ethereum and other EVM networks.',
href: '/sdk/solana',
title: 'Solana',
description: 'Connect to Solana.',
},
{
href: '/sdk/starknet',
title: 'Starknet',
description: 'Connect to Starknet.',
}
]}
/>
Expand Down
2 changes: 1 addition & 1 deletion sdk/solana/connect/guides/send-legacy-transaction.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ await connection.getSignatureStatuses(signatures);
The following methods are also supported, but are not recommended over `signAndSendTransaction`. It is safer for users, and a simpler API for developers, for Phantom to submit the transaction immediately after signing it instead of relying on the application to do so.

:::warning
The following methods are not supported in the [wallet standard](#) implementation and may be removed in a future release. These methods are only available via the [window.solana object](/solana/detecting-the-provider).
The following methods are not supported in the [wallet standard](#) implementation and may be removed in a future release. These methods are only available via the [window.solana object].
:::

## Sign a transaction (without sending)
Expand Down
4 changes: 2 additions & 2 deletions sdk/solana/connect/guides/send-versioned-transaction.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Send a versioned transaction

The Solana runtime supports two types of transactions: `legacy` (see [Send a legacy transaction](/solana/sending-a-transaction)) and `v0` (transactions that can include Address Lookup Tables or LUTs).
The Solana runtime supports two types of transactions: `legacy` (see [Send a legacy transaction]) and `v0` (transactions that can include Address Lookup Tables or LUTs).

The goal of `v0` is to increase the maximum size of a transaction, and hence the number of accounts that can fit in a single atomic transaction. With LUTs, developers can now build transactions with a maximum of 256 accounts, as compared to the limit of 35 accounts in legacy transactions that do not utilize LUTs.

Expand All @@ -18,7 +18,7 @@ On this page, we'll go over the following:

## Build a versioned transaction

Versioned transactions are built in a very similar fashion to [legacy transactions](sending-a-transaction). The only difference is that developers should use the `VersionedTransaction` class rather than the `Transaction` class.
Versioned transactions are built in a very similar fashion to [legacy transactions](send-legacy-transaction.md). The only difference is that developers should use the `VersionedTransaction` class rather than the `Transaction` class.

The following example shows how to build a simple transfer instruction. Once the transfer instruction is made, a `MessageV0` formatted transaction message is constructed with the transfer instruction. Finally, a new `VersionedTransaction` is created, parsing in the `v0` compatible message.

Expand Down
1 change: 0 additions & 1 deletion snaps/features/custom-evm-accounts/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,6 @@ externally owned accounts (EOAs):
- [`personal_sign`](../../reference/keyring-api/chain-methods.md#personal_sign)
- [`eth_signTypedData_v4`](../../reference/keyring-api/chain-methods.md#eth_signtypeddata_v4)
- [`eth_signTransaction`](../../reference/keyring-api/chain-methods.md#eth_signtransaction)
- [Deprecated signing methods](/wallet/concepts/signing-methods/#deprecated-signing-methods)

## Account abstraction (ERC-4337)

Expand Down
4 changes: 0 additions & 4 deletions snaps/features/transaction-insights.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,10 +100,6 @@ export const onTransaction: OnTransactionHandler = async ({
</TabItem>
</Tabs>

:::note
Learn more about the [parameters of a submitted transaction](/wallet/how-to/send-transactions#transaction-parameters).
:::

The Snap tab in the transaction confirmation window displays the transaction insights:

<p align="center">
Expand Down
3 changes: 1 addition & 2 deletions snaps/how-to/connect-to-a-snap.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,13 @@ This is possible because Snaps can expose a [custom JSON-RPC API](../learn/about
## Detect wallet

To connect to a Snap, dapps must first detect MetaMask in the user's browser.
See the Wallet API documentation on [how to connect to the MetaMask extension](/wallet/how-to/connect-extension).

### Detect MetaMask Flask

When developing your Snap, you might need to require
[MetaMask Flask](../get-started/install-flask.md) in your dapp.
We recommend detecting MetaMask Flask using the
[multi-wallet detection mechanism](/wallet/concepts/wallet-interoperability) specified by EIP-6963.
multi-wallet detection mechanism specified by EIP-6963.
Alternatively, you can use the `window.ethereum` injected provider, but this might fail if the user
is running multiple wallet extensions simultaneously.

Expand Down
4 changes: 2 additions & 2 deletions snaps/how-to/request-permissions.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,8 @@ permission, add the following to the manifest file:
Dynamic permissions are not requested in the manifest file.
Instead, your Snap can acquire dynamic permissions during its lifecycle.

For example, request permission to call the [`eth_accounts`](/wallet/reference/json-rpc-methods/eth_accounts)
MetaMask JSON-RPC API method by calling [`eth_requestAccounts`](/wallet/reference/json-rpc-methods/eth_requestaccounts).
For example, request permission to call the [`eth_accounts`](/sdk/evm/connect/reference/json-rpc-api)
MetaMask JSON-RPC API method by calling [`eth_requestAccounts`](/sdk/evm/connect/reference/json-rpc-api).
See the [`eth_accounts` dynamic permission](../reference/permissions.md#eth_accounts) for more information.

## Request permissions from a dapp
Expand Down
22 changes: 11 additions & 11 deletions snaps/learn/about-snaps/apis.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ Snaps can also call some Wallet JSON-RPC API methods using the `ethereum` global

To expose `ethereum` to the Snap execution environment, a Snap must first request the
[`endowment:ethereum-provider`](../../reference/permissions.md#endowmentethereum-provider) permission.
For example, to call [`eth_requestAccounts`](/wallet/reference/json-rpc-methods/eth_requestaccounts), first request
For example, to call [`eth_requestAccounts`](/sdk/evm/connect/reference/json-rpc-api), first request
the required permission:

```json title="snap.manifest.json"
Expand All @@ -108,16 +108,16 @@ The `ethereum` global available to Snaps has fewer capabilities than `window.eth
Snaps can only use it to make read requests, not to write to the blockchain or initiate transactions.
Snaps can call all Wallet JSON-RPC API methods **except** the following:

- [`wallet_requestPermissions`](/wallet/reference/json-rpc-methods/wallet_requestpermissions)
- [`wallet_revokePermissions`](/wallet/reference/json-rpc-methods/wallet_revokepermissions)
- [`wallet_addEthereumChain`](/wallet/reference/json-rpc-methods/wallet_addethereumchain)
- [`wallet_switchEthereumChain`](/wallet/reference/json-rpc-methods/wallet_switchethereumchain)
- [`wallet_watchAsset`](/wallet/reference/json-rpc-methods/wallet_watchasset)
- [`wallet_registerOnboarding`](/wallet/reference/json-rpc-methods/wallet_registeronboarding)
- [`wallet_scanQRCode`](/wallet/reference/json-rpc-methods/wallet_scanqrcode)
- [`eth_sendTransaction`](/wallet/reference/json-rpc-methods/eth_sendtransaction)
- [`eth_decrypt`](/wallet/reference/json-rpc-methods/eth_decrypt)
- [`eth_getEncryptionPublicKey`](/wallet/reference/json-rpc-methods/eth_getencryptionpublickey)
- `wallet_requestPermissions`
- `wallet_revokePermissions`
- `wallet_addEthereumChain`
- `wallet_switchEthereumChain`
- `wallet_watchAsset`
- `wallet_registerOnboarding`
- `wallet_scanQRCode`
- `eth_sendTransaction`
- `eth_decrypt`
- `eth_getEncryptionPublicKey`

## Custom JSON-RPC APIs

Expand Down
2 changes: 1 addition & 1 deletion snaps/learn/about-snaps/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ of MetaMask core unless given permission to do so.
### APIs

A Snap can communicate with MetaMask using the [Snaps API](../../reference/snaps-api.md) and some
[MetaMask JSON-RPC API](/wallet/reference/json-rpc-methods) methods.
[MetaMask JSON-RPC API](/sdk/evm/connect/reference/json-rpc-api) methods.
The Snaps API allows Snaps to extend or modify the functionality of MetaMask, and communicate with
other Snaps.

Expand Down
6 changes: 2 additions & 4 deletions snaps/learn/tutorials/transaction-insights.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import TabItem from "@theme/TabItem";
This tutorial walks you through creating a Snap that calculates the percentage of gas fees they would
pay for their transaction.

It gets the current gas price by calling the [`eth_gasPrice`](/wallet/reference/json-rpc-methods/eth_gasprice) RPC
It gets the current gas price by calling the [`eth_gasPrice`](/sdk/evm/connect/reference/json-rpc-api) RPC
method using the global Ethereum provider made available to Snaps, and displays this as a percentage
of gas fees in a tab in MetaMask's transaction confirmation window.

Expand Down Expand Up @@ -303,9 +303,7 @@ export const onTransaction: OnTransactionHandler = async ({ transaction }) => {

:::note Notes

- Learn more about the [parameters of a submitted transaction](/wallet/how-to/send-transactions#transaction-parameters).

- If you have previously developed a dapp, you're likely familiar with accessing the Ethereum provider
If you have previously developed a dapp, you're likely familiar with accessing the Ethereum provider
using `window.ethereum`. In a Snap, the `window` object is not available. Instead, when you request
the `endowment:ethereum-provider` permission, your Snap is granted access to the
[`ethereum` global object](../about-snaps/apis.md#snap-requests).
Expand Down
3 changes: 1 addition & 2 deletions snaps/reference/entry-points.md
Original file line number Diff line number Diff line change
Expand Up @@ -399,7 +399,7 @@ module.exports.onRpcRequest = async ({ origin, request }) => {

To provide [signature insights](../features/signature-insights.md) before a user signs a message, a
Snap must expose the `onSignature` entry point.
Whenever a [signing method](/wallet/concepts/signing-methods) is called, such as `personal_sign` or
Whenever a signing method is called, such as `personal_sign` or
`eth_signTypedData_v4`, MetaMask passes the raw unsigned signature payload to the `onSignature`
handler method.

Expand Down Expand Up @@ -498,7 +498,6 @@ For MetaMask to call the Snap's `onTransaction` method, you must request the
An object containing:

- `transaction` - The raw transaction payload.
Learn more about the [parameters of a submitted transaction](/wallet/how-to/send-transactions#transaction-parameters).
- `chainId` - The [CAIP-2](https://github.com/ChainAgnostic/CAIPs/blob/master/CAIPs/caip-2.md)
chain ID.
- `transactionOrigin` - The transaction origin if
Expand Down
5 changes: 0 additions & 5 deletions snaps/reference/keyring-api/chain-methods.md
Original file line number Diff line number Diff line change
Expand Up @@ -240,11 +240,6 @@ Signature: `string` - Hex-encoded signature.
</TabItem>
</Tabs>

### Deprecated methods

Snaps can also implement [deprecated signing
methods](/wallet/concepts/signing-methods/#deprecated-signing-methods) that some dapps might use.

## ERC-4337 methods

:::flaskOnly
Expand Down
8 changes: 4 additions & 4 deletions snaps/reference/permissions.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ Specify this permission in the manifest file as follows:

To communicate with a node using MetaMask, a Snap must request the `endowment:ethereum-provider` permission.
This permission exposes the `ethereum` global to the Snap execution environment, allowing Snaps to
call some [MetaMask JSON-RPC API](/wallet/reference/json-rpc-methods) methods.
call some [MetaMask JSON-RPC API](/sdk/evm/connect/reference/json-rpc-api) methods.
This global is an [EIP-1193](https://eips.ethereum.org/EIPS/eip-1193) provider.

Specify this permission in the manifest file as follows:
Expand Down Expand Up @@ -348,8 +348,8 @@ The following endowments accept this caveat:

### `eth_accounts`

A Snap can request permission to call the [`eth_accounts`](/wallet/reference/json-rpc-methods/eth_accounts) MetaMask
JSON-RPC API method by calling [`eth_requestAccounts`](/wallet/reference/json-rpc-methods/eth_requestaccounts).
A Snap can request permission to call the [`eth_accounts`](/sdk/evm/connect/reference/json-rpc-api) MetaMask
JSON-RPC API method by calling [`eth_requestAccounts`](/sdk/evm/connect/reference/json-rpc-api).
Calling `eth_requestAccounts` requires the
[`endowment:ethereum-provider`](#endowmentethereum-provider) permission:

Expand All @@ -373,7 +373,7 @@ await ethereum.request({ method: "eth_requestAccounts" })
</Tabs>

You can check the presence of the permission by calling
[`wallet_getPermissions`](/wallet/reference/json-rpc-methods/wallet_getpermissions).
[`wallet_getPermissions`](/sdk/evm/connect/reference/json-rpc-api).
If the permission is present, the result contains a permission with a `parentCapability` of `eth_accounts`.
The permission contains a `restrictReturnedAccounts` caveat, an array of all the accounts the user
allows for this Snap.
Expand Down
2 changes: 1 addition & 1 deletion snaps/reference/snaps-api.md
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@ An object containing `coinType`, the BIP-44 coin type to get the entropy for.
Coin type 60 is reserved for MetaMask externally owned accounts and blocked for Snaps.
To connect to MetaMask accounts in a Snap, use
[`endowment:ethereum-provider`](../reference/permissions.md#endowmentethereum-provider) and
[`eth_requestAccounts`](/wallet/reference/json-rpc-methods/eth_requestaccounts).
[`eth_requestAccounts`](/sdk/evm/connect/reference/json-rpc-api).
:::

#### Returns
Expand Down
7 changes: 1 addition & 6 deletions snaps/reference/wallet-api-for-snaps.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,9 @@ import TabItem from "@theme/TabItem";
# Wallet API for Snaps

Dapps can install and communicate with Snaps using a subset of the
[Wallet JSON-RPC API](/wallet/concepts/wallet-api/#json-rpc-api).
[Wallet JSON-RPC API](/sdk/evm/connect/reference/json-rpc-api).
This page is a reference for those Snaps-specific methods.

:::note
See the [Wallet JSON-RPC API interactive reference](/wallet/reference/json-rpc-methods) for the other
methods dapps can call.
:::

## `wallet_getSnaps`

Returns the IDs of the dapp's permitted Snaps and some relevant metadata.
Expand Down
4 changes: 2 additions & 2 deletions src/pages/tutorials/upgrade-eoa-to-smart-account.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ date: Aug 22, 2025
author: MetaMask Developer Relations
---

This tutorial walks you through upgrading a MetaMask externally owned account (EOA) to a [MetaMask smart account](/delegation-toolkit/concepts/smart-accounts) via [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702), and sending an [atomic batch transaction](/wallet/how-to/send-transactions/send-batch-transactions/#about-atomic-batch-transactions) via [EIP-5792](https://eips.ethereum.org/EIPS/eip-5792).
This tutorial walks you through upgrading a MetaMask externally owned account (EOA) to a [MetaMask smart account](/delegation-toolkit/concepts/smart-accounts) via [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702), and sending an [atomic batch transaction](/sdk/evm/connect/guides/javascript/send-transactions/batch-transactions) via [EIP-5792](https://eips.ethereum.org/EIPS/eip-5792).
You will use a provided template, which sets up MM Connect with a [Next.js](https://nextjs.org/docs) and [Wagmi](https://wagmi.sh/) dapp.

## Prerequisites
Expand Down Expand Up @@ -199,7 +199,7 @@ When connected, the interface displays your connected wallet address:

### 4. Handle and send batch transactions

In `src/app/page.tsx`, use the [`useSendCalls`](https://wagmi.sh/react/api/hooks/useSendCalls) hook from Wagmi to handle and send [atomic batch transactions](/wallet/how-to/send-transactions/send-batch-transactions).
In `src/app/page.tsx`, use the [`useSendCalls`](https://wagmi.sh/react/api/hooks/useSendCalls) hook from Wagmi to handle and send [atomic batch transactions](/sdk/evm/connect/guides/javascript/send-transactions/batch-transactions).
Also use React's `useState` hook to handle the transaction state.
The following example sends 0.001 and 0.0001 ETH in a batch transaction.
Replace `<YOUR-RECIPIENT-ADDRESS>` with recipient addresses of your choice:
Expand Down
Loading