2025

Designing a crypto wallet across extension and mobile

Leather began as a browser extension for managing Bitcoin and Stacks assets. Bringing it to mobile meant creating a more accessible way for people to manage their assets and explore the Stacks ecosystem, all from their phone.

Leather's balance and token list, side by side on desktop and on a phone

ContextThe gateway to Stacks

Stacks expands what people can do with Bitcoin, from holding BTC and Stacks tokens to interacting with decentralized applications and smart contracts. Leather makes these interactions possible while giving people control over their assets, keys and transactions.

Design challengeHow could we make Leather easier to discover?

Leather had grown primarily as a browser extension, which worked well for people already using Stacks applications on desktop. But discovery was increasingly happening elsewhere, through communities, events, social media and conversations on people's phones. We wanted mobile to become a new entry point into Leather.

A phone held in one hand showing the Receive screen: a Bitcoin QR code above the native segwit address it encodes
A phone showing a collectible held in the wallet: number 1234 from Megapont Ape Club, a pixel-art ape, with its description and details below

Mobile walletBringing self-custody to a familiar device

A self-custodial wallet doesn't behave like a conventional financial app. There is no account on our server to reset if someone forgets a password. New users could create a wallet and back up their Secret Key, while existing users could restore one on the device. PIN and biometrics made everyday access quick, while the Secret Key remained the recovery mechanism if the phone was lost or replaced.

Send, with $20.21 of Bitcoin, 0.0003 BTC, entered for a bc1p address, from a balance of 0.01076 BTC, and a Review button

Mobile didn't replace the extension. The extension remained the natural place for connecting to desktop applications and hardware wallets, while mobile made the wallet something people could carry with them.

On desktop, sBTC's Earn yield with Bitcoin page, with sBTC rewards to choose, and the Leather extension's Approve transaction window over it: $1,000 of sBTC to an SP address, a standard fee of $1.65 at about 20 minutes

TransactionsSending isn't one moment

A bank transfer often feels binary: you send money and it is sent. Blockchain transactions have more states. But broadcasting does not mean the transaction is finished. It still needs to propagate through the network and eventually be confirmed. We designed the experience around that lifecycle rather than treating the confirmation screen as the end.

EcosystemThe wallet becomes a permission layer

A wallet becomes more interesting once other products can ask it to do things. An in-app browser allowed people to discover Stacks applications, connect their wallet and approve smart contract interactions without leaving Leather. The wallet was now simultaneously a portfolio showing what you own, an identity representing your account to another application, a permission layer asking whether an application could connect or perform an action, and a signer authorizing transactions with your keys.

ReflectionDesigning beyond the product

Before working deeply on wallets, it is easy to think of them as portfolio apps with a Send button. The harder part lives underneath. The work was less about simplifying everything, and more about deciding what needed to stay visible, what could recede into the background, and where consistency mattered most.