explaingit

metamask/metamask-extension

13,120TypeScriptAudience · developerComplexity · 4/5Setup · hard

TLDR

MetaMask is the source code for the MetaMask browser extension, an Ethereum wallet that stores crypto, connects to decentralized apps, and lets you approve blockchain transactions directly from Chrome or Firefox.

Mindmap

mindmap
  root((repo))
    What it does
      Ethereum wallet
      Transaction signing
      Dapp connector
    Features
      Crypto storage
      Approval prompts
      Private key safety
    Tech
      TypeScript
      Node 24
      Yarn Corepack
    Supported Browsers
      Chrome
      Firefox
      Chromium based
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build and run a local development version of MetaMask to contribute a bug fix or new feature

USE CASE 2

Understand how a browser wallet communicates with decentralized apps by reading the extension source code

USE CASE 3

Fork MetaMask as a starting point for building a custom Ethereum wallet browser extension

Tech stack

TypeScriptJavaScriptNode.jsYarnReact

Getting it running

Difficulty · hard Time to first run · 1h+

Requires Node 24, Yarn via Corepack, and an Infura API key to build and run locally.

In plain English

MetaMask is a browser extension that acts as a wallet for Ethereum and other compatible blockchains. You install it in Chrome, Firefox, or another Chromium-based browser, and it gives you a way to store cryptocurrency, connect to decentralized applications (dapps), and sign transactions directly from your browser without going through a centralized exchange. When you visit a dapp, the website can ask MetaMask to show a prompt asking you to approve a transaction or sign a message. MetaMask sits between the website and the blockchain: the website requests an action, MetaMask shows you what is being asked, and you decide whether to approve or reject. Your private keys stay in the extension and are never sent to the website. This repository is the source code for that browser extension. It is written in TypeScript and JavaScript, built using Node.js and Yarn, and compiled into a distributable package you load into your browser as an unpacked extension. The README covers how to build it locally or spin up a development environment in GitHub Codespaces. Building requires Node 24, a Yarn setup via Corepack, and an Infura API key (Infura is a service that provides access to Ethereum nodes without running your own). The official release is available from metamask.io and the browser extension stores. This GitHub repository is where contributors submit bug fixes and new features. The project has separate documentation sites for end users, developers building dapps, and contributors working on the extension itself.

Copy-paste prompts

Prompt 1
Walk me through setting up a local build of the MetaMask browser extension using Node 24 and Yarn via Corepack, what commands do I run and how do I load it as an unpacked extension in Chrome?
Prompt 2
How do I get an Infura API key and configure it for a local MetaMask development build?
Prompt 3
I want to add support for a new blockchain network in the MetaMask extension, which source files do I need to change?
Prompt 4
How does MetaMask keep private keys safe inside the browser extension and prevent websites from accessing them directly?
Open on GitHub → Explain another repo

← metamask on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.