Browser-based example application demonstrating the Vultisig SDK for fast vault management.
- 🔐 Create fast vaults with email verification
- 🛡️ Create secure vaults with multi-device MPC (QR pairing)
- 📦 Import/export vault files
- 💰 Check balances across multiple chains
- 💸 Send transactions (fast vault: instant, secure vault: device coordination)
- 🔄 Cross-chain swaps with automatic discount tier display
- 🏆 VULT discount tier display and refresh
- 📲 QR code display for mobile device pairing
- 📊 Real-time event logging and device join tracking
- 🎨 Modern React UI with Tailwind CSS
- 📑 Multi-vault tab interface
- Node.js 20+
- Yarn 4.x (via Corepack or your preferred install)
- A full repository checkout so Yarn can link workspace packages
From the repository root:
yarn install
yarn workspace @vultisig/example-browser devYou can also start it from this folder:
cd examples/browser
yarn devThe example checks local workspace artifacts before Vite starts. It rebuilds shared package outputs such as packages/mpc-wasm/dist/ when they are missing or stale, then rebuilds packages/sdk/dist/ when SDK sources are newer than the generated artifacts.
From the repository root:
yarn workspace @vultisig/example-browser build
yarn workspace @vultisig/example-browser previewOr from this folder:
yarn build
yarn preview- Click "Create New Vault"
- Select "Fast Vault" type
- Enter vault name, email, and password
- Check email for verification code
- Enter code to complete creation
- Click "Create New Vault"
- Select "Secure Vault" type
- Enter vault name and number of devices (e.g., 3 for 2-of-3)
- Optionally set a password for vault encryption
- A QR code displays on screen
- Other participants scan with Vultisig mobile app (iOS/Android)
- Device join progress shows in real-time
- Keygen runs automatically when all devices join
- Vault is created and ready to use
- Click "Import Vault(s)"
- Select one or more .vult files
- Vaults will open in separate tabs
- Click "Import Seedphrase"
- Choose vault type (FastVault or SecureVault)
- Enter your 12 or 24-word recovery phrase
- Optionally enable:
- Discover chains with existing balances - Scans all chains for funds
- Use Phantom wallet derivation path for Solana - Enable if your seedphrase was created in Phantom wallet (uses a different derivation path)
- For FastVault: Enter name, email, password and complete email verification
- For SecureVault: Enter name, configure devices, then scan QR with mobile app
Note: When "Discover chains" is enabled, the app automatically detects if Phantom's Solana derivation path should be used.
- Select a vault from the tabs
- Click "Check Balances" to fetch balances for all chains
Fast Vault:
- Select chain and enter recipient address
- Enter amount to send
- Click "Send Transaction"
- Transaction is signed instantly and broadcast
Secure Vault:
- Select chain and enter recipient address
- Enter amount to send
- Click "Send Transaction"
- A QR code displays for signing session
- Other participants scan with Vultisig app to approve
- Device join progress shows (e.g., "2/3 devices ready")
- Once threshold reached, signature is generated
- Transaction is broadcast
Your VULT discount tier is displayed in the vault Overview tab. The tier is based on your VULT token and Thorguard NFT holdings on Ethereum.
Tier Levels:
- Bronze - 1,500+ VULT (0.45% fee)
- Silver - 3,000+ VULT (0.40% fee)
- Gold - 7,500+ VULT (0.30% fee)
- Platinum - 15,000+ VULT (0.25% fee)
- Diamond - 100,000+ VULT (0.15% fee)
- Ultimate - 1,000,000+ VULT (0% fee)
Thorguard NFT holders receive a free tier upgrade (except platinum and above).
Click "Refresh" to update your tier after acquiring more VULT tokens.
- Navigate to the Swap tab
- Select source and destination chains/tokens
- Enter amount to swap
- Click "Get Quote" to see estimated output and fees
- Your discount tier is displayed in the quote details
- Click "Swap" to execute the transaction
- React 18: UI framework
- Vite: Build tool and dev server
- TypeScript: Type safety
- Tailwind CSS: Utility-first CSS framework
- Vultisig SDK: Wallet functionality
- IndexedDB: Vault storage (via SDK)
- LocalStorage: App settings
- 7z-wasm: LZMA compression for QR payloads (secure vault)
The browser example is a Vite workspace that consumes the local SDK package through Yarn workspaces.
- Open multiple vaults simultaneously
- Switch between vaults instantly
- Independent operations per vault
- Unified event log showing activity from all vaults
- All SDK and vault events are logged in real-time
- Events are color-coded by type
- Auto-scroll option for monitoring
- Events show vault context with name prefixes
The example includes specialized components for secure vault operations:
- SecureVaultCreator - Multi-step form for vault creation with device pairing
- SigningModal - Transaction signing flow with QR and device tracking
- QRCodeModal - Displays QR codes for mobile app scanning
- DeviceProgress - Shows device join progress (e.g., "2/3 devices ready")
- ProgressModal - Generic progress display for keygen/signing phases
- Uses Web Crypto API and IndexedDB
- Polyfills for Node.js modules
- WASM support for cryptographic operations
- Responsive design with Tailwind CSS
yarn typecheck:example-browserRun this from the repository root before finishing changes to examples/browser or
examples/shared. It checks the shared example package first, then the browser
example, using the repo-local TypeScript toolchain pinned by Yarn.
yarn buildThe build output will be in the dist/ directory.
- Ensure
vite-plugin-wasmis installed - Check that WASM files are accessible
- Verify
vite-plugin-node-polyfillsis configured - Check the polyfill settings in
vite.config.ts
- Clear browser data
- Implement vault cleanup/archiving
- Check VultiServer connectivity
- Verify vault is unlocked
- Ensure network connection is stable
MIT