Solana Mobile Best Practices
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.
FAQs
iOS status?
Check Solana Mobile docs - prioritize Android MWA testing today.
Same app as Next.js?
Share kit + Codama packages; separate UI layer.
Seed Vault on all phones?
Seeker hardware feature - do not claim on generic Android.
Related
- Solana Mobile Basics - intro
- Building a Mobile dApp - Expo
- Wallet Integration Best Practices - shared UX
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.