Solana Mobile Best Practices
25 practices for reliable mobile signing UX.
Search across all documentation pages
25 practices for reliable mobile signing UX.
Physical device testing: MWA intents fail differently on emulators (Mobile Wallet Adapter).
Expo dev client for MWA: Expo Go is insufficient for native wallet modules.
Complete authorize identity: name, uri, and icon required for wallet trust.
Cluster matches RPC: devnet wallet with devnet RPC only.
Use @solana/kit 7.0.0 messages: Same pipeline as web; avoid new web3.js.
Minimize transact scope: Long callbacks timeout wallet UI.
Handle authorize cancel: Catch errors; offer retry (Deep Links & Session Handling).
Secure auth token storage: expo-secure-store, not plain AsyncStorage.
Deauthorize on logout: Clear token locally and in wallet when supported.
Intent filters validated: Wallet must return to your scheme.
Monorepo shared Codama clients: One IDL source for web + mobile.
Priority fees on mainnet mobile: Congestion affects mobile users equally.
Transaction UX native alerts: Spinner + explorer link on confirm.
Do not bundle secret keys: MWA only for user keys.
Release signing keys in EAS secrets: Never commit keystore (The dApp Store).
Privacy policy before dApp Store submit: Disclose RPC and analytics.
Test Seeker Seed Vault path: Hardware-backed signing story for marketing truth.
Android versionCode discipline: Every store update bumps code.
Offline RPC errors: Mobile networks flap - backoff retry UI.
Deep link cold start: App reopened from wallet after kill.
Reduce bundle size: Tree-shake program clients for startup time.
Biometric failures: User education when wallet rejects.
Separate devnet builds: Different package name or label for internal QA.
Log wallet adapter version: Support matrix per release.
Incident runbook: Disable transact-heavy features if wallet bug discovered.
Check Solana Mobile docs - prioritize Android MWA testing today.
Share kit + Codama packages; separate UI layer.
Seeker hardware feature - do not claim on generic Android.
Stack versions: This page was written for Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0, and LiteSVM 0.6.x.
Reviewed by Chris St. John·Last updated Jul 19, 2026