competitive - we can market the extension as a alternative to MetaMask
familiar - users typically think of wallets as extensions, rather than web app able to act as a wallet via WalletConnect
Browser support
Initially Chrome only. Chrome is ~70% of browser usage according to Mixpanel. Firefox is <3%.
Architecture
Load app.shapeshift.com within an iframe in a thin Chrome extension. Rationale - Chrome Web Store update review time. We typically ship 1-2 releases per day that take <10 minutes to go to production for web and mobile users. The Chrome Web Store review process says most are reviewed within 24 hours, but up to 3 days. This is not ideal for UX consistency and bug fixes.
Present as window.ethereum as per the EIP-1193 spec (as MetaMask/XDEFI do)
This should live in the web repo such that we can share the Content Security Policy with the extension
Out of scope
Injecting CosmosSDK support via window.keplr - this functionality is not popular per Mixpanel. EVM is where it's at.
UTXO support (requires spike for existing competitors, e.g. XDEFI)
Tickets
Service worker
Probably required to prevent a cold load of static assets (30mb+) from the CDN each time the extension is loaded
It would be ideal to avoid this if possible, if we can background the extension for example.
Removing the native password modal/lazy password prompting
This is necessary such that they're not prompted for their password every time they open the extension.
WalletProvider changes. We have a similar strategy for the mobile app where we only support connecting via WalletConnect and the ShapeShift wallet.
We will not support connecting to the extension as a dapp via WalletConnect initially, as
the initial V1 implementation where we are a dApp is a technical cluster fuck, and
V1 is being sunset mid 2023 by WalletConnect upstream
it adds additional scope
we want users to migrate from other wallets
We can't talk to other extensions, so MetaMask won't be able to connect to us.
TBD - KeepKey support.
We should simplify the UX to be similar to the mobile experience, and only support importing/creating a native wallet.
We should support the demo wallet for user acquisition purposes
Implement support for EIP-1193 interface (window.ethereum). This allows us to inject into dApps as MetaMask does.
UI/UX for handling
Signing requests. We could repurpose the way we handle this in WalletConnect
Wallet switch requests to unsupported networks, e.g. as of writing we currently don't support Arbitrum
Size and responsiveness
IMO MetaMask seems unnecessarily small
It would be ideal to perhaps be "mid sized", e.g.
Extension build script
This needs a good developer experience for local development + updates
yarn build:extension
Creates a .zip file to be uploaded to Chrome Web Store
We may need to submit extension updates when the Content Security Policy changes, however this is infrequent
Chrome Web Store developer account ownership
Ideally the Fox Foundation similar to the App Store and Google Play Store @willyogo
Deployment documentation
Similar to the mobile app, as this is not deployed frequently, we need thorough correct documentation to be able to ship infrequent updates when necessary as developers will not be intimately familiar.
Marketing and branding
We need a big bikeshed for clear naming and messaging, as we will be a web based dApp, wallet, mobile app, and extension (🤯). We've previously dropped the "native" word from the branding of the wallet.
Limitations
The extension supports injecting to dApps like MetaMask as EVM only, and only the set of EVM chains that ShapeShift currently supports
Ethereum
Polygon
Optimism
Binance Smart Chain
Polygon
Gnosis soon
Users can use all the regular wallet functionality within the extension itself
Future improvements
CosmosSDK support by injecting as window.keplr
Hardware wallet support (KeepKey/Ledger/Trezor/Grid)
Motivation
Bundling the web app as a browser extension allows the wallet to be more
Browser support
Architecture
window.ethereum
as per the EIP-1193 spec (as MetaMask/XDEFI do)web
repo such that we can share the Content Security Policy with the extensionOut of scope
window.keplr
- this functionality is not popular per Mixpanel. EVM is where it's at.Tickets
Service worker
Removing the native password modal/lazy password prompting
WalletProvider
changes. We have a similar strategy for the mobile app where we only support connecting via WalletConnect and the ShapeShift wallet.Implement support for EIP-1193 interface (
window.ethereum
). This allows us to inject into dApps as MetaMask does.Size and responsiveness
Extension build script
yarn build:extension
.zip
file to be uploaded to Chrome Web StoreChrome Web Store developer account ownership
Deployment documentation
Marketing and branding
Future improvements
window.keplr