Documentation, performance improvements, security with SESify and more.
Docs for the Buidlers
We’re happy to announce the launch of our new developer documentation site. It includes everything you need to get your dapp up and running, including sample code for some basic interactions, best practices to help your users get the most of MetaMask, and technical details on supported signing methods, APIs, and more. We’ll continue to add over time, and if there’s something you think is missing, we’d love to hear from you!
Protecting our dependency tree with Secure EcmaScript
Back in November, news broke about several wallets being compromised by malicious code in the wallets’ dependency graph. MetaMask has never been compromised, and we plan to keep it that way.
Since we do rely on a number of dependencies, we’re working on a project to reduce supplychain attacks by using Agoric’s Secure ECMAScript (SES) to isolate each module in its own SES container. We’ll be sharing more details about the SESify project soon as we improve its usability.
Devs: we want to hear from you
If you’re a developer using MetaMask to build your business, dapp, side project, main project, or anything in between — we’d love to chat. We’re always grateful for your suggestions via Github, but the MetaMask user experience research team has a number of broader questions & hypotheses they’d like to test. If you’re willing to help MetaMask improve, please fill out this form!
MetaMask, Infura, & performance
Today, MetaMask relies on a service called Infura to read Ethereum data and submit transactions to the blockchain. While we have ambitious long-term plans to decentralize this access layer, Infura makes dapp development simple in the meantime. The data show it: as of July 2018 Infura’s Mainnet endpoint serviced about 100,000 requests per second.
A substantial portion of this traffic comes from MetaMask users. In the past couple weeks, we’ve worked to make MetaMask’s requests to Infura more efficient by consolidating requests that fetch token balances (#6049), and by caching known method signatures (#6052). We’ll continue to trim down where possible over the coming weeks. This work will improve the performance of our application and ease our load on Infura’s infrastructure.
MetaMask Mobile — coming soon
We’ve been hard at work building MetaMask for iOS and Android. Mobile dapps are the future, and we want to take you there!
MetaMask Mobile will be available in app stores this spring, but we’ll be launching a Public Beta version for anyone who wants to get a sneak peek and provide feedback. Stay tuned for news on how to sign up!
MetaMask 5.3.4 just hit browser stores near you — it includes features and fixes to improve the experience for devs, end-users, and everyone in between.
Fixes for some common usability issues 🤓
- We now provide a timeout and clear error message when the extension can’t connect to a user-provided custom RPC network. (#5893)
- Since transactions must specify the address they’re sending from, we disabled the editable “From” address on Send screen. (#5922)
- Users repeatedly thought they couldn’t access accounts once they overflowed the account menu, so we’ve added a scroll button to the accounts list. (#5992)
- Several users reported confusion at seeing multiple transaction entries for attempts to speed up or cancel a single transaction. The activity log will now show one entry per nonce, grouping cancellations and speed up attempts under the transaction they modify. (#5886)
Bugs and patches 🐛
- Prevent invalid Chain IDs when adding custom networks (#6026)
- Fixed incorrect token conversion rates from Balanc3 (#6005)
- Fixed date and time displays in the Activity Log (#5932)
- Disabled account dropdown on signing screens to prevent signing from the wrong account (#6024)
- Order Shapeshift transactions by time within the transactions list (#6021)
- Prevent an infinite spinner bug caused by missing Network ID (#5924)
- Confirm screen now shows proper function name when sending Ether transactions with hex data (#6008)
- Updated Slovenian & French translations (#5966, #5970)
- Fixed UI errors when calling non-standard ERC20 methods (#5995)