Development
Several files which are needed for developing on MetaMask.
Usually each file or directory contains information about its scope / usage.
Segment
Debugging with the Mock Segment API
To start the Mock Segment API:
- Add/replace the
SEGMENT_HOSTandSEGMENT_WRITE_KEYvariables in.metamaskrcSEGMENT_HOST='http://localhost:9090' SEGMENT_WRITE_KEY='FAKE' - Build the project to the
./dist/folder withyarn dist - Run the Mock Segment API from the command line
node development/mock-segment.js
Events triggered whilst using the extension will be logged to the console of the Mock Segment API.
More information on the API and its usage can be found here.
Debugging in Segment
To debug in a production Segment environment:
- Create a free account on Segment
- Create a New Workspace
- Add a Source (Node.js)
- Copy the
Write Keyfrom the API Keys section under Settings - Add/replace the
SEGMENT_HOSTandSEGMENT_WRITE_KEYvariables in.metamaskrcSEGMENT_HOST='https://api.segment.io' SEGMENT_WRITE_KEY='COPIED_WRITE_KEY' - Build the project to the
./dist/folder withyarn dist
Events triggered whilst using the extension will be displayed in Segment's Debugger.
Debugging Segment requests in MetaMask
To opt in to MetaMetrics;
- Unlock the extension
- Open the Account menu
- Click the
Settingsmenu item - Click the
Security & Privacymenu item - Toggle the
Participate in MetaMetricsmenu option to theONposition
You can inspect the requests in the Network tab of your browser's Developer Tools (background.html)
by filtering for POST requests to /v1/batch. The full url will be http://localhost:9090/v1/batch
or https://api.segment.io/v1/batch respectively.
Sentry
Debugging in Sentry
To debug in a production Sentry environment:
- If you have not already got a Sentry account, you can create a free account on Sentry
- Create a New Sentry Organization
- If you already have an existing Sentry account and workspace, open the sidebar drop down menu, then click
Switch organizationfollowed byCreate a new organization
- If you already have an existing Sentry account and workspace, open the sidebar drop down menu, then click
- Create a New Project
- Copy the
Public KeyandProject IDfrom the Client Keys section under your projects Settings- Select
Settingsin the sidebar menu, then selectProjectsin the secondary menu. Click your project then selectClient Keys (DSN)from the secondary menu. Click theConfigurebutton on theClient Keyspage and copy yourProject IdandPublic Key
- Select
- Add/replace the
SENTRY_DSNandSENTRY_DSN_DEVvariables in.metamaskrcSENTRY_DSN_DEV=https://{SENTRY_PUBLIC_KEY}@sentry.io/{SENTRY_PROJECT_ID} SENTRY_DSN=https://{SENTRY_PUBLIC_KEY}@sentry.io/{SENTRY_PROJECT_ID} - Build the project to the
./dist/folder withyarn dist
Errors reported whilst using the extension will be displayed in Sentry's Issues page.
Source Maps
Debugging production builds using Source Maps
To unbundle the extensions compiled and minified JavaScript using Source Maps:
- Open Chrome DevTools to inspect the
background.htmlorhome.htmlview - Click on the
Sourcestab in Chrome DevTools - In the Sources tab, click on the
Pagepanel - Expand the file directory in the Page panel until you see the source files you're after
- Select a source file in the Page panel
chrome-extension://{EXTENSION_ID}/common-0.js
- Double click the source file to open it in the Workspace
- Right click in the body of the source file and select
Add source map... - Enter the path to the corresponding source map file, and Click
Add
file:///{LOCAL_FILE_SYSTEM}/metamask-extension/dist/sourcemaps/common-0.js.map
- Repeat the steps above as necessary adding all the relevant source map files
- Your source maps should now be added to the DevTools Console, and you should be able to see your original source files when you debug your code