| sidebar_label | Introduction |
|---|---|
| title | Snaps introduction |
| description | Introduction page for the MetaMask Snaps documentation. |
import CardList from '@site/src/components/CardList' import YoutubeEmbed from '@site/src/components/YoutubeEmbed'
Snaps is an open source system that allows anyone to safely create a mini app that runs inside the MetaMask extension, enabling new web3 end user experiences. Get started building your own Snaps by installing MetaMask Flask.
A Snap can add new API methods to MetaMask, add support for different blockchain protocols, or modify existing functionalities using the Snaps API. Learn more in this video:
The following Snaps features are available in the stable version of MetaMask:
<CardList
items={[
{
href: 'features/cron-jobs',
title: 'Cron jobs',
description: 'Schedule periodic actions for your users.',
},
{
href: 'features/custom-evm-accounts',
title: 'Custom EVM accounts',
description: 'Connect to custom EVM accounts in MetaMask.',
},
{
href: 'features/custom-name-resolution',
title: 'Custom name resolution',
description: 'Resolve names to addresses and vice versa.',
},
{
href: 'features/custom-ui',
title: 'Custom UI',
description: 'Display custom UI in MetaMask using a set of pre-defined components.',
},
{
href: 'features/data-storage',
title: 'Data storage',
description: 'Store encrypted and unencrypted data within a Snap.',
},
{
href: 'features/custom-ui/dialogs',
title: 'Dialogs',
description: 'Display custom alert, confirmation, or prompt screens in MetaMask.',
},
{
href: 'features/custom-ui/home-pages',
title: 'Home pages',
description: 'Display a dedicated UI page in MetaMask for your Snap.',
},
{
href: 'features/custom-ui/interactive-ui',
title: 'Interactive UI',
description: 'Display interactive UI in MetaMask that can be updated dynamically.',
},
{
href: 'features/lifecycle-hooks',
title: 'Lifecycle hooks',
description: 'Call an action when your Snap is installed or updated.',
},
{
href: 'features/localization',
title: 'Localization',
description: "Translate your Snap UI based on the user's locale.",
},
{
href: 'features/network-access',
title: 'Network access',
description: (
<>
Access the internet using the fetch function.
</>
),
},
{
href: 'features/non-evm-networks',
title: 'Non-EVM networks',
description: 'Manage non-EVM accounts and assets in MetaMask.',
},
{
href: 'features/notifications',
title: 'Notifications',
description: 'Notify users directly in MetaMask, or natively in their OS.',
},
{
icon: require('./assets/features/signature-insights.png').default,
href: 'features/signature-insights',
title: 'Signature insights',
description: 'Provide signature insights before a user signs a message.',
},
{
icon: require('./assets/features/getfile.png').default,
href: 'features/static-files',
title: 'Static files',
description: 'Lazy-load static files such as Wasm modules or ZK circuits.',
},
{
href: 'features/transaction-insights',
title: 'Transaction insights',
description: "Provide transaction insights in MetaMask's transaction confirmation window.",
},
]}
/>
The following Snaps features are only available in MetaMask Flask, the canary distribution of MetaMask:
<CardList items={[ { href: 'features/custom-evm-accounts#account-abstraction-erc-4337', title: 'Account abstraction', description: 'Connect to ERC-4337 accounts in MetaMask.', flaskOnly: true, }, ]} />
If you're new to Snaps, get started learning with the following topics:
<CardList items={[ { href: 'learn/about-snaps', title: 'About Snaps', description: 'See a high-level, technical overview of the Snaps system.', }, { href: 'learn/about-snaps/apis', title: 'About the Snaps APIs', description: 'Learn about how Snaps, dapps, and MetaMask communicate with each other.', }, { href: 'learn/tutorials/gas-estimation', title: 'Gas estimation Snap tutorial', description: 'Follow an end-to-end tutorial to create a Snap that estimates gas fees.', }, { href: 'learn/resources', title: 'Snaps resources', description: 'Learn and explore MetaMask Snaps with supplemental resources, tools, examples, and guides.', }, ]} />
If you have questions about using MetaMask Snaps or want to propose a new feature, you can interact with the MetaMask Snaps team and community on GitHub discussions and the mm-snaps-dev channel on Consensys Discord.
See the full list of Snaps resources for more information.
:::info MetaMask user support If you need MetaMask user support, visit the MetaMask Help Center. :::