Forking Yours Wallet onto phones
We took the Yours Wallet browser extension and wrapped it as an iPhone and Android app with Capacitor, without rewriting its code.
Why fork at all
Yours Wallet is an open-source BSV wallet for Chrome, released under the MIT licence by its authors. It already handled BSV, 1Sat Ordinals, BSV-21 tokens and MNEE, and it used the BRC-100 wallet standard. It had no phone app. We wanted one, and we wanted to build our own products on top of a wallet that already worked, rather than start a new one.
Our branch starts from upstream version 5.1.0 (an upstream commit dated 16 September 2026). The first commit of our own is dated 29 September 2026. Everything on this blog happened after that.
The approach: leave upstream alone
The first commit packaged the extension as native apps with Capacitor, and it did not modify upstream's src/ folder. Instead we added a small mobile layer:
- a stand-in for the
chrome.*APIs that an extension expects; - the extension's background script running in a Web Worker;
- extension pop-up windows turned into overlays inside the app;
- native storage for what the extension kept in
storage.local.
The reason was simple: we wanted to keep taking upstream fixes. The same day we replaced some early hacks (watching the page for text, CSS overrides) with small, optional hooks, so the mobile code plugs into upstream at named points instead of fighting it. That choice paid off on 4 October, when we merged upstream's latest main, including its storage repair work, without a rewrite.
What went in on day one
- A dApp browser inside the app, so BSV websites can talk to the wallet.
- Biometric unlock, with the password as a fallback.
- On Android: no cloud backup of app data, and screenshots blocked in release builds. On iPhone: the app-switcher snapshot is covered.
- A first TestFlight build and an Android APK, plus a small download site.
- A security review guide written for the Yours Wallet team, and the Yours-branded port shared with them. It is tagged
yours-mobile-v0.1in our repository.
The first real bug
On phones, the wallet could hang while starting up. The cause was duplicate rows in a sync-state table, which the extension never hit in practice. The fix shipped as iOS build 3 on the first day. It was a useful reminder that the extension's code had been tested in one environment, and a phone is a different one.
What we owe
bWallet and bWalletX are built on Yours Wallet. We are not affiliated with its authors, and they have not endorsed our work. Their licence and credit stay in the repository. We also lean on the 1Sat tooling (@1sat/actions, @1sat/templates), the BSV wallet toolbox and Capacitor.
What's not done
- Pinning our dependencies to upstream's lockfile works, but every upstream merge means re-pinning and re-testing.
- The mobile layer is still a shim. Anything new upstream does with
chrome.*can break it without warning. - Tests run on our builds. We have not had an independent security review of the mobile layer.