Skip to content
Merged
2 changes: 1 addition & 1 deletion .prettierrc
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"singleQuote": true,
"tabWidth": 2,
"trailingComma": "es5",
"proseWrap": "never",
"proseWrap": "preserve",
"printWidth": 100,
"htmlWhitespaceSensitivity": "css",
"vueIndentScriptAndStyle": true
Expand Down
10 changes: 7 additions & 3 deletions snaps/features/custom-evm-accounts/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ sidebar_position: 2

# Custom EVM accounts

:::caution
MetaMask is not currently accepting allowlisting requests for Custom EVM Account Snaps.
:::

The Keyring API integrates custom EVM accounts inside MetaMask.
You can use the Keyring API to display custom accounts, such as multi-party computation (MPC)
accounts and [ERC-4337 accounts](#account-abstraction-erc-4337), alongside regular MetaMask accounts
Expand Down Expand Up @@ -275,7 +279,7 @@ notifying MetaMask of the result.

## EOA methods

An account management Snap can implement the following methods to support dapp requests from
An account management Snap can implement the following methods to support dapp requests from
externally owned accounts (EOAs):

- [`personal_sign`](../../reference/keyring-api/chain-methods.md#personal_sign)
Expand All @@ -289,11 +293,11 @@ externally owned accounts (EOAs):
:::

Account abstraction, specified by [EIP-4337](https://eips.ethereum.org/EIPS/eip-4337), introduces
_user operations_ and enables users to manage smart contract accounts containing arbitrary
_user operations_ and enables users to manage smart contract accounts containing arbitrary
verification logic.
Users can use these ERC-4337 accounts instead of externally owned accounts as primary accounts.

An account management Snap can implement the following methods to support dapp requests from
An account management Snap can implement the following methods to support dapp requests from
ERC-4337 accounts:

- [`eth_prepareUserOperation`](../../reference/keyring-api/chain-methods.md#eth_prepareuseroperation)
Expand Down
8 changes: 7 additions & 1 deletion snaps/get-started/install-flask.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,11 @@ extension, MetaMask Flask is intended for developers building and testing Snaps
Also, new MetaMask features are enabled in Flask for testing and developer feedback before they're
enabled in MetaMask stable.
These features appear in the documentation with the **Flask** or **FLASK ONLY** tag.
You can also view Flask-specific features by looking for the **\[FLASK\]** label in the
You can also view Flask-specific features by looking for the **\[FLASK\]** label in the
[MetaMask Extension changelog](https://github.com/MetaMask/metamask-extension/blob/develop/CHANGELOG.md).

:::note
You should not encourage end users to install Flask.
It is not guaranteed to be reliable.
Also, if you do not [submit your Snap for the allowlist](../how-to/get-allowlisted.md), it will not be listed in the [MetaMask Snaps Directory](https://snaps.metamask.io), so users will not be able to find your Snap.
:::
2 changes: 0 additions & 2 deletions snaps/get-started/quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -189,8 +189,6 @@ You've now successfully connected, installed, interacted with, and customized yo

## Next steps

- Fill out the [Snap Builders Onboarding Form](https://feedback.metamask.io/snaps-onboarding) to
allow the MetaMask Snaps team to engage with you and provide support as you begin to develop your Snap.
- To learn more about the Snaps system, review [fundamental Snaps concepts](../learn/about-snaps/index.md)
and try the [Snaps tutorials](../learn/tutorials/gas-estimation.md).
- To implement specific features and use cases, see the [Snaps feature guides](../features/cron-jobs.md).
Expand Down
10 changes: 4 additions & 6 deletions snaps/how-to/get-allowlisted.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@ Always do your own research before installing a Snap.

## Prerequisites

- Ensure you have filled out the [Snap Builders Onboarding Form](https://feedback.metamask.io/snaps-onboarding).

- Ensure that your Snap:

- Has publicly available source code.
Expand All @@ -34,7 +32,7 @@ Always do your own research before installing a Snap.

- Remove any `console` logs, "to-do" comments, and unused permissions or methods.

- Scan your Snap for security vulnerabilities using [Snapper](https://github.com/sayfer-io/Snapper) and
- Scan your Snap for security vulnerabilities using [Snapper](https://github.com/sayfer-io/Snapper) and
resolve any reported issues.

- If your Snap uses any of the following API methods related to key management, you must provide
Expand All @@ -53,7 +51,7 @@ Always do your own research before installing a Snap.

:::info
A list of approved third-party auditors and details about the audit process are available on the
[MetaMask Snaps Builder Engagement Program](https://consensys.notion.site/Audit-process-1acbc67819dc4631b7a3d6c664e387a3).
[MetaMask Snaps Wiki](https://github.com/MetaMask/snaps/wiki/Audits).
:::

## Steps
Expand Down Expand Up @@ -85,7 +83,7 @@ The form requests information about your Snap, including the following:
For example: _After installing the Snap, visit the companion dapp at
https://voyager-snap.linea.build to connect an account and track your Linea Voyage progress._

- **GitHub repository and npm package URLs** - The public GitHub repo that hosts your Snap's
- **GitHub repository and npm package URLs** - The public GitHub repo that hosts your Snap's
source code, and the npm package of your [published Snap](../how-to/publish-a-snap.md).
If your Snap's source code is hosted on a different site, such as GitLab, you can link to that instead.

Expand All @@ -103,7 +101,7 @@ The form requests information about your Snap, including the following:
:::

- **Customer support details** -
[Customer support information](https://consensys.notion.site/Providing-User-Support-Information-cff79a7d896e4da6a2f8a17ce074e585)
[Customer support information](https://github.com/MetaMask/snaps/wiki/User-Support-Information)
to ensure a smooth user experience for your Snap.
This allows MetaMask to escalate any issues that a user might encounter with your Snap.
The escalation contact will be kept confidential within MetaMask, and the rest of the information
Expand Down
4 changes: 2 additions & 2 deletions snaps/how-to/publish-a-snap.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,14 @@ The following details are specific to Snaps:
installing the Snap, in custom dialogs, and in the settings menu.
- This icon should be a valid SVG.
- The icon will be cropped in a circle when displayed in MetaMask; you do not need to make the icon circular.
- The icon should only have a transparent background if the icon is clearly visible on both light and dark backgrounds.

After publishing the Snap, any dapp can connect to the Snap by using the Snap ID `npm:[packageName]`.
You can use the [Snap Install Tester](https://montoya.github.io/snap-install-tester/) with [MetaMask Flask](../get-started/install-flask.md) to verify that your Snap package was published correctly.

:::caution
If you are using the Snap monorepo project generated in the [quickstart](../get-started/quickstart.md),
make sure to only publish the Snap package in `/packages/snap`.
You can use the [Snaps sandbox](test-a-snap.md#test-in-the-sandbox) to verify
that your Snap was published correctly: in the sandbox settings, disable **Use current Snap ID** and specify the npm ID of your Snap.

Also, make sure to update the manifest file, icon file, and README to differentiate your Snap from the template.
:::
Expand Down
62 changes: 31 additions & 31 deletions snaps/learn/resources.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,36 +10,33 @@ View the following Snaps resources in addition to this documentation site.
## Primary resources

- [Snaps homepage](https://metamask.io/snaps/)
- [Snaps directory](https://snaps.metamask.io/) - A directory of allowlisted
- [Snaps directory](https://snaps.metamask.io/) - A directory of allowlisted
Snaps you can try in the MetaMask extension.
- [SIPs](https://github.com/MetaMask/SIPs) - Suggest new Snaps APIs with
- [SIPs](https://github.com/MetaMask/SIPs) - Suggest new Snaps APIs with
Snaps Improvement Proposals.
- [Builder Engagement Program](https://go.metamask.io/snaps-builders) -
Connect with the Snaps builder engagement team and get support while building
your Snap.

## Example Snaps

- [Example Snaps](https://github.com/MetaMask/snaps/tree/main/packages/examples) -
- [Example Snaps](https://github.com/MetaMask/snaps/tree/main/packages/examples) -
A directory of Snaps maintained by MetaMask.
- [Linea Voyager](https://github.com/Consensys/linea-voyager-snap) - View Linea
- [Linea Voyager](https://github.com/Consensys/linea-voyager-snap) - View Linea
XP balance, PoH status, and current Linea Voyage activations from within MetaMask.
- [Starknet](https://github.com/Consensys/starknet-snap) - Adds Starknet account
- [Starknet](https://github.com/Consensys/starknet-snap) - Adds Starknet account
and transaction functionality to MetaMask.
- [Simple Keyring Snap](https://github.com/MetaMask/snap-simple-keyring) - An
- [Simple Keyring Snap](https://github.com/MetaMask/snap-simple-keyring) - An
example account management Snap using the [Keyring API](../reference/keyring-api/index.md).
- [Mystery Fox](https://github.com/Montoya/mystery-fox) - Provides random answers to
- [Mystery Fox](https://github.com/Montoya/mystery-fox) - Provides random answers to
questions and showcases interactive UI and images.
- [Farcaster Insights](https://github.com/Montoya/farcaster-insights) - Shows if
- [Farcaster Insights](https://github.com/Montoya/farcaster-insights) - Shows if
the recipient in a transaction request has a Farcaster account and their stats.
- [Smart Account Template](https://github.com/bcnmy/smart-account-keyring-template) -
Template for integrating the Biconomy Smart Account with the
- [Smart Account Template](https://github.com/bcnmy/smart-account-keyring-template) -
Template for integrating the Biconomy Smart Account with the
[Keyring API](../reference/keyring-api/index.md).
- [Text Transformer](https://github.com/Montoya/transformer-snap) - Transforms
strings into Unicode bold, italic, and strikethrough characters for use on social
- [Text Transformer](https://github.com/Montoya/transformer-snap) - Transforms
strings into Unicode bold, italic, and strikethrough characters for use on social
media. Demonstrates [interactive JSX UI](../features/custom-ui/index.md) in a home page.
- [Social Names](https://github.com/Montoya/social-names-snap) - Adds Farcaster and
Lens handles to the send flow and petnames using
- [Social Names](https://github.com/Montoya/social-names-snap) - Adds Farcaster and
Lens handles to the send flow and petnames using
[custom name resolution](../features/custom-name-resolution.md).

## Developer tools
Expand All @@ -49,15 +46,18 @@ View the following Snaps resources in addition to this documentation site.
deploying your Snap, and a companion dapp UI you can build on.
- [Test Snaps](https://github.com/MetaMask/snaps/tree/main/packages/test-snaps) - A collection of
test Snaps and [a dapp for evaluating them](https://metamask.github.io/snaps/test-snaps/latest/).
- [`snaps-jest`](https://www.npmjs.com/package/@metamask/snaps-jest) - A Jest preset for end-to-end
- [`snaps-jest`](https://www.npmjs.com/package/@metamask/snaps-jest) - A Jest preset for end-to-end
testing MetaMask Snaps, including a Jest environment, and a set of Jest matchers.
See [how to test a Snap](../how-to/test-a-snap.md) using `snaps-jest`.
- [Snapper](https://github.com/sayfer-io/Snapper) - A tool for detecting security vulnerabilities,
identifying potential issues, and ensuring best coding practices in your Snap.
- [MetaMask Testing Tools](https://hugomrdias.github.io/metamask/) - A collection of tools for
testing MetaMask, MetaMask Flask, and MetaMask Snaps with [Playwright](https://playwright.dev/),
delivered as an npm package that provides a `createFixture` function that returns a `test` and
- [MetaMask Testing Tools](https://hugomrdias.github.io/metamask/) - A collection of tools for
testing MetaMask, MetaMask Flask, and MetaMask Snaps with [Playwright](https://playwright.dev/),
delivered as an npm package that provides a `createFixture` function that returns a `test` and
`expect` function that can be used to write tests.
- [Snap Install Tester](https://montoya.github.io/snap-install-tester/) - A simple web tool for loading and installing any Snap from npm.
Just provide an npm package ID and (optional) version number, then click to install in MetaMask Flask.
- [Snap Connect Example](https://github.com/Montoya/snap-connect-example) - Example code for connecting to MetaMask from a website and interfacing with a Snap in a reliable way.

## Blog posts

Expand All @@ -69,7 +69,7 @@ View the following Snaps resources in addition to this documentation site.
Here](https://metamask.io/news/latest/snaps-in-metamask-stable-and-where-we-go-from-here/) by Dan
Finlay
- [MetaMask Snaps Launch with Hardened JavaScript Under the
Hood](https://agoric.com/blog/announcements/metamask-snaps-launch-with-hardened-javascript-under-the-hood)
Hood](https://agoric.com/blog/announcements/metamask-snaps-launch-with-hardened-javascript-under-the-hood)
by Agoric
- [Navigating the Security Landscape of MetaMask Snaps](https://metamask.io/news/developers/navigating-the-security-landscape-of-metamask-snaps/)
by Martin Ortner & Valentin Quelquejay
Expand All @@ -92,25 +92,25 @@ View the following Snaps resources in addition to this documentation site.

## Community

- [Snaps GitHub discussions](https://github.com/MetaMask/snaps/discussions) - Browse
- [Snaps GitHub discussions](https://github.com/MetaMask/snaps/discussions) - Browse
discussions and ask questions about Snaps.
- [Consensys Discord](https://discord.gg/consensys) - Ask questions about Snaps on
- [Consensys Discord](https://discord.gg/consensys) - Ask questions about Snaps on
the **mm-snaps-dev** channel.
- [Snaps GitHub issues](https://github.com/MetaMask/snaps/issues) - If you encounter
- [Snaps GitHub issues](https://github.com/MetaMask/snaps/issues) - If you encounter
any issues with Snaps, open a GitHub issue.

## Snaps for developers

Many Snaps are designed to be used by developers.

- [CubeSigner](https://cubist.dev/cubesigner-snap-hardware-backed-key-management-for-metamask-developers) -
Enables dapp developers to manage keys for Ethereum, Bitcoin, Solana, and more using
- [CubeSigner](https://cubist.dev/cubesigner-snap-hardware-backed-key-management-for-metamask-developers) -
Enables dapp developers to manage keys for Ethereum, Bitcoin, Solana, and more using
secure remote hardware.
- [Galactica ZK Vault](https://docs.galactica.com/galactica-developer-documentation) -
- [Galactica ZK Vault](https://docs.galactica.com/galactica-developer-documentation) -
Integrates the Galactica Network for dapps to leverage ZK-proofs for compliant privacy.
- [Hedera Wallet](https://docs.tuum.tech/hedera-wallet-snap) - Build Hedera dapps with
- [Hedera Wallet](https://docs.tuum.tech/hedera-wallet-snap) - Build Hedera dapps with
the methods provided by Hedera Wallet.
- [Leap Wallet](https://docs.leapwallet.io/cosmos/leap-metamask-snap/integrating-snaps) -
- [Leap Wallet](https://docs.leapwallet.io/cosmos/leap-metamask-snap/integrating-snaps) -
Connect Cosmos dapps to MetaMask with Leap Wallet.
- [MinaPortal](https://github.com/sotatek-dev/mina-snap/tree/master/packages/snap#methods) -
- [MinaPortal](https://github.com/sotatek-dev/mina-snap/tree/master/packages/snap#methods) -
Build ZkApps on Mina Network with the dapp methods provided by MinaPortal.
Loading