What is metamask-extension built with?

metamask-extension is a TypeScript repo built with React, react-router-dom, and Koa. It signs people in with @simplewebauthn/browser and jsonwebtoken, watches its errors with Sentry, connects to GitHub, makes its content with qrcode-generator, qrcode.react, dompurify, he, react-markdown, and 3 more, validates its data with prop-types, is tested with Testing Library, redux-mock-store, mockttp, Mocha, Jest, and 7 more, deploys with serve-handler, and uses localforage. It has 1,537,435 written lines, with 3,172 test files.

Read on November 10, 2026, at commit 854e9e7. Read it as markdown

Frontend

The base 2

Styles 5

Interface 14

2 more
  • react-focus-lock1 file
  • react-toggle-button1 file

Backend

Support

Content 8

Validation 1

Testing 12

  • Testing Library1,272 files
  • mockttp234 files
  • Mocha177 files
  • Jest61 files
  • Selenium50 files
  • nock39 files
  • @playwright/test31 files
  • sinon6 files
  • jsdom1 file
  • redux-mock-store385 files
  • fake-indexeddb3 files
  • jest-canvas-mock1 file

Deploy 1

  • serve-handler1 file

Tools 27

  • Webpack19 files
  • webpack-dev-server5 files
  • schema-utils4 files
  • yargs4 files
  • ESLint2 files
  • Prettier2 files
  • SWC2 files
  • tsx2 files
  • TypeScript2 files
  • actions1 file
  • Babel1 file
  • browserslist1 file
15 more
  • eslint-plugin-react-hooks1 file
  • eslint-plugin-storybook1 file
  • eslint-plugin-tailwindcss1 file
  • typescript-eslint1 file
  • json-schema-to-ts3 files
  • madge2 files
  • commander1 file
  • copy-webpack-plugin1 file
  • eslint-plugin-react1 file
  • fast-glob1 file
  • globby1 file
  • mini-css-extract-plugin1 file
  • react-compiler-webpack1 file
  • source-map1 file
  • terser-webpack-plugin1 file

Other 49

  • react-redux843 files
  • Lodash85 files
  • reselect60 files
  • TanStack30 files
  • @reduxjs/toolkit16 files
  • uuid12 files
  • Redux11 files
  • viem9 files
  • SemVer8 files
  • Ethers5 files
  • @metamask/eth-sig-util3 files
  • chalk3 files
37 more
  • fuse.js3 files
  • Immer2 files
  • noble2 files
  • node-fetch2 files
  • redux-thunk2 files
  • yargs-parser2 files
  • .ENV1 file
  • @scure/base1 file
  • micromatch1 file
  • readable-stream1 file
  • rxjs1 file
  • tweetnacl1 file
  • web-vitals1 file
  • clsx195 files
  • bignumber.js114 files
  • loglevel74 files
  • webextension-polyfill19 files
  • luxon9 files
  • ws7 files
  • uri-js4 files
  • bowser3 files
  • @lydell/node-pty2 files
  • bs582 files
  • fast-json-stable-stringify2 files
  • base64-js1 file
  • buffer1 file
  • detect-port1 file
  • duplexify1 file
  • fs-extra1 file
  • humanize-duration1 file
  • ip-regex1 file
  • process1 file
  • punycode1 file
  • sprintf-js1 file
  • string.prototype.matchall1 file
  • unzipper1 file
  • yazl1 file

Other repos with a similar stack

Ordered by how much of its stack they share with metamask-extension, then by stars.

Frequently asked questions

What language is metamask-extension written in?
metamask-extension is written in TypeScript, with 1,537,435 written lines.
What framework does metamask-extension use?
metamask-extension is built with React, react-router-dom, and Koa.
What does metamask-extension sign people in with?
metamask-extension signs people in with @simplewebauthn/browser and jsonwebtoken.
What services does metamask-extension use?
metamask-extension watches its errors with Sentry, connects to GitHub, and uses localforage.

The proof: shared/lib/trace.ts, line 2

Does metamask-extension have tests?
Yes. metamask-extension has 3,172 test files and is tested with Testing Library, redux-mock-store, mockttp, Mocha, Jest, Selenium, nock, @playwright/test, sinon, fake-indexeddb, jest-canvas-mock, and jsdom.
Which repos have a stack like metamask-extension's?
The ones that share most of its stack:strapi/strapiCherryHQ/cherry-studioRocketChat/Rocket.Chat

See inside your code, today.

Paste your repo and see it drawn, part by part: a medium one in under a minute.

Free, no account.

Or look inside SeeRepo's own →

Is it your repo? Add its badge, keep it up to date or take it down →