Frame.sh Desktop Ethereum dApp Wallet Review
Authors Note: Shortly after this review was written Frame released a new updated version with all of the features of the canary builds in a stable package. See my post about what's new in Frame 0.6.
One of the things I’ve always disliked about cryptocurrencies, especially Ethereum, is the lack of Desktop wallet applications. It seems as though most wallet applications for the Desktop are either web apps or browser extensions. I struggled to find a decent Desktop native app … until I found Frame.sh.
Frame? Never Heard Of ‘Em.
Me either until just a few short weeks ago. Frame is a free, open source, cross platform, desktop application to store your Ethereum, ETH based tokens (ERC20, 721, 1155). It also facilitates interactions with dApps in the Ethereum ecosystem. With the free browser extension it can also perform all the same functions as browser extension based wallets like Metamask. Functions that we all enjoy like signing transactions or purchasing NFT’s from Looksrare.org.
Mmhmm, Frame Sounds Real Nice, Go On…
Really? Usually no one wants to hear me talk about this stuff. Uhm … wow, cool. For the purposes of this review, I installed Windows 10 in a VM and installed the Windows version of Frame. If you don’t use Windows, no worries. They have a build for macOS and Linux too, so no one except BeOS users are left out.
Good question, because as you know … I don’t like Windows. Well, when I installed the latest release version of Frame, 0.5.0-beta.22 as of right now, in Linux many of the icons were missing. Buttons were offset in some windows … generally it was broken and unpolished looking. I tried in Fedora 36 & 37, Ubuntu 20.04 & 22.04. Gnome, Plasma, I tried the native .deb package, the AppImage and the Snap package. They all were basically the same. While the wallet still worked, it just didn’t show well. So … Windows 10 it is for this demo.
Note: The Frame canary build is much more polished on Linux. If you're a Linux user you might want to try those packages before the official stable release.
Downloading and Installing Frame
Ok with explanations out of the way let’s move on. I loaded up Windows 10 in a VM, launched Firefox and went to frame.sh to download a fresh copy of the wallet. As of this post, version 0.5.0-beta.22 is the latest release version. After a long delay, that button in the screenshot above will offer a link to download for your specific operating system. I’m not sure if I’m alone, but I think that button takes way too long to populate. If you get bored you can click the “View all releases” link below the button to go to the github download page.
Oh, and if you have a wallet like Metamask already installed, Frame will automatically ask you to sign a message and connect to Frame.sh. Why Frame!? Why!? Please, don’t just assume I want to connect my wallet to your website. Please!
Ok, rant over. I am going to assume you know how to install an application you downloaded for your operating system. At least I hope so, because this isn’t really a basic computer class. Nope, not even in the slightest, it’s exactly what I’ve been saying it is; a review of the Frame.sh crypto currency wallet. So go ahead and install the application or sign up for computer classes if necessary.
Launching Frame For The First Time
When you launch Frame for the first time, it will open in a fr… ohhh! That’s why they call it Frame! Like I was saying, it will open in a frame on the right side of your desktop. There’s a nice little welcome message from the Frame team there. Go ahead and read it just to make sure you aren’t agreeing to sell them your house for a dollar or something. When you’re sure everything looks legit, hit the button that says “Let’s Go!”
Adding Your First Account To Frame
Once you hit the Let’s Go! button, a second Frame will pop out of the first frame that would normally list all your accounts, but since you’re new here it will instead ask you to add an account. Now you might be confused, because unlike every other browser extension wallet, or web app wallet, Frame doesn’t make you create a new hot wallet address.
In fact, they don’t even offer the option to create a new hot wallet at all! I like this because it promotes the use of hardware wallets. I also like this because that means it’s made for people like you, sexy people, smart people, people that already know what Etherium is. Everyone securing more than the cost of a hardware wallet should really be using a hardware wallet, which is most people if I’m being honest. Considering the open source Trezor One is only $70, it’s worth the investment to transact securely and not worry about your private key slipping into someone else’s hands.
If you don’t have a hardware wallet, Frame will allow you to import a hot wallet with an existing seed phrase, but it won’t generate a new one for you. Make sense? Cool. So hit the “+” symbol switch button thingy in the first Frame to add a new account.
Hardware Wallets, Hot Wallets, We Got All The Wallets!
As you can see from the screenshot above, Frame supports a lot of options to import your wallet. They even support some options I haven’t seen on other wallets like Keystore File and Aragon DAO. Another interesting choice in that frame is Watch-Only Account which lets you put in a public address and watch it as if it were your own wallet. Of course without the accompanying private key you can’t sign transactions or transfer funds, but it’s still fun having Vitalik.eth in your wallet and pretending you’re a leet ass hacker that hacked Vitty’s wallet, but also so morally strong and ethically sound that you don’t steal all his ETH.
Oooowee! That Hot Wallet Is Sooo Hot Girl!
Aight, so rather than resetting my Trezor or Ledger to use for this review, and thereby creating a bunch of extra work for myself, I decided to create a hot wallet for this review and import it into Frame using a seed phrase. So, I made up a new 24 word phrase by throwing darts at pages of an Oxford Dictionary I stole from the school Library back in 1994. I was super nerdy and poor! Don’t judge me! If you opt to import your hot wallet, Frame will ask you to create a password to secure it. Make this password strong. Frame requires a minimum of 12 characters. I recommend a minimum of 16. Longer is better of course.
Time To Make Your Public Address
This selection screen is the same whether you’re using a hardware wallet or a hot wallet. Five unique public addresses are generated for you to choose from. If you don’t like the first five, Frame offers 15 more to choose from. Go ahead and click on one of those public addresses to add it to Frame as a wallet. This process is the same for hardware wallets as well. Not much else to say here, any or all of the addresses generated should be fine. If you connected a hardware wallet it will list the public addresses already generated when you set up your hardware wallet originally.
Wallet Imported, Rock And Roll Baby!
Awh! WTF!? A password!? Yep, if you imported a hot wallet you had to choose a password for it. After selecting your new public key, Frame will ask for your password. If you used a hardware wallet, Frame will ask you to unlock on your chosen hardware wallet device. So go ahead and do that. I won’t go over how that’s done for each hardware wallet option, obviously, but you’re smart so I know you’ll figure it out.
Your Crypto Wallet Details
Alright so you got all authenticated and you’re now logged into your wallet. The wallet list here puts each of your wallets in it’s own accordion tab. I only have one, so no extra tabs for me here. Clicking the arrow next to the wallet shows that wallets assets. As you can see, my newly generated wallet address has nothing in it. Bummer, I keep hoping one day I’ll just randomly generate a wallet address that’s already full of ETH but so far no dice. C’est la vie!
The Fee Monitor
Inside, there is a nicely laid out fee monitor that I’ve found to be pretty accurate. It updates automatically with the latest fee estimates and times.
Next up is the most important info, how much money you have. Also known as your wallet balances. I have no assets in this wallet, but this will show your Ethereum, wETH, DAI and many more here. I like that it provides the current price of the asset and the 24-hour change. There’s a line item for each asset as well as a grand total at the bottom. Unfortunately I couldn’t find a way to change the currency conversion from USD to any other currency. That really sucks hard for the remaining 87% of the world. Maybe I missed it though?
Below all that is a section labeled “Inventory.” I don’t have any inventory here, but what Frame means by inventory is NFT’s. The inventory section will show all your NFT’s, ERCs, ENS’s and what’s that… wtf …
send.frame.sh already has “permissions” enabled on my newly created wallet? What are permissions anyway? Why does Frame have permissions by default? I’m just gonna switch that off for now. Like I was saying, your NFT’s are listed here. If you have NFT’s a little thumbnail will pop up, and the quantity will be shown next to it. In the apps settings you can also add custom tokens if Frame doesn’t already support them out of the box.
The permissions section is websites you’ve given permission to connect to. Sites like Caches, Looksrare, and even Frame.sh use this to authenticate you with your wallet. With these switches on, Frame will not ask you to sign or authenticate when you visit those sites. It will log you in automatically. Personally, I don’t like this behavior, so I switch them off when I’m not using them. While it is convenient, I’m not quite sure about the security and privacy implications yet.
Finally we have a button that says “Verify Address” and “Account Settings” … verify address is not super useful with a hot wallet, but with a hardware wallet clicking that button will cause your wallet to ask for your PIN, and approval for frame. I would recommend doing this from time to time during long crypto sessions just for security. The Account Settings button just opens that familiar accounts tab we saw earlier to add, edit or delete your accounts.
Configuring Your Network
Frame allows you to connect to several different chains, even Ethereum testnet chains like Ropsten. I won’t go into detail about each of them. By default however, the Ethereum main net is active and connected to Infura’s node. I know there has been some controversy over Infura’s logging policies and privacy practices lately, so fortunately Frame offers you a few more choices. I really appreciate this as changing your endpoint is sometimes difficult or impossible with other wallets. I do wish they would offer you a way to change this endpoint during the initial setup, before you connect your wallet however.
Just click the drop down and you can select Alchemy, Infura, Local or Custom. This is one of my favorite features of Frame if I’m being honest. The ability to easily use your own local node, or a custom one … like your own validator is priceless. If you aren’t running a validator, and you have the time and resources, I highly recommend setting up your own Ethereum node.
Below that you can choose a “secondary” endpoint. I really really like this feature as well. If your primary node can’t be reached, Frame will automatically switch to the secondary one. This is really great when you just gotta dApp but the node your wallet uses is down.
Web Browser Integration
Because you have to use a web browser to use dApps, Frame includes a free browser extension for all the major web browsers out there. This allows you to use Frame like you would Metamask to authenticate, sign, and just use dApps on the web. Also, it just works! Just like Metamask or WalletConnect, the Frame browser extension can inject Frame into websites like Caches. Here’s the download links for Chromium based browsers, and for Firefox. You can also find the download links inside the settings of the actual app itself if you don’t trust me… which is good because you shouldn’t.
Doin’ The Frame Pop Out
Desktop Apps Do It Better
Another benefit of having a full fledged Desktop app is the amount of information you can display to the user “above the fold.” Meaning, the amount of information you can show them without them having to scroll. In the screenshot above, I’m signing a message to authenticate with Caches. Authentication usually doesn’t contain a lot of information, so this is a really poor example. My bad.
In transactions, especially complex ones involving smart contracts, where there are long address strings, and several functions are run, and approvals are needed for permissions, having all the information displayed to you is invaluable. Frame does still truncate some address strings, but hovering them will show the full string, and it shows you contract data, the costs, and what you’re agreeing to.
This is vastly improved in the Canary builds so I hope Frame keeps developing out this part of it. Most people that get exploited out of their crypto are victims of not enough information, or important information is hidden below the fold. Good work so far from the Frame team here though.
Other Cool Features
That about wraps up my little review here, but I wanted to highlight some other great features I didn’t cover above. This is by no means an exhaustive list. Frame has a lot of fantastic options and settings. It’s configured to be easy to use for newbie crypto users, but robust enough for power users.
Quick Fee Adjustments
Frame always tries to show you the cheapest and fastest fee. But if you want to adjust your gas fees, priority fees and more Frame gives you that option too.
To adjust the fee just click the “Max Fee” on the transaction approval screen before you hit the “Sign” button. In there you can adjust any setting you could ever want. I appreciate that Frame is always trying to get you the best price but still allows power users to override it.
On The Fly Adjustments
You can even speed up existing transactions by adjusting or increasing your fees if you miscalculated, or if your transaction got stuck because blocks filled fast. On this same screen you can view details about the transaction currently in progress, or even cancel it if possible.
If you have an ENS tied to your wallet address, Frame will automatically show that instead of your actual wallet address. Unfortunately I don’t have any screenshots of that in action, but it you don’t have to do anything to enable it and it’s a really nice feature. If you don’t have an ENS, you can use the Account tagging feature to label your accounts to make it a bit easier to manage.
I really appreciate what the Frame team is developing here and it’s extremely important in a world of mostly browser based crypto wallets. While it’s feature filled and stable, it lacks some important features, like being able to transfer an NFT. I couldn’t find that option anywhere. I could view them, the associated Meta data and IPFS Photos populated, but there was no where I could see to transfer them. That combined with the broken mess I encountered on Linux proves the “Beta” tag the Frame team gave it it is 100% true.
For Windows and macOS users, you will love it, and if you ever need to transfer an NFT, it’s easy enough to load up another wallet. With all that said, I recommend people use the Canary build of Frame. Despite it’s “Beta of a Beta” status, it’s much more polished overall. It’s prettier, easier to use, with all the missing features added. Oh, and it looks and works on Linux just like it does any other Operating System.
Overall Frame has replaced Metamask for me in my day to day crypto operations, and despite the few things it lacks I feel it is a safer, more robust option than any browser extension wallet.