magicblock-labs / magicblock-labs/Solana.Unity-SDK
MWA integration issues found on Solana Seeker with Seed Vault — Unity MWA Example App
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 199
- Forks
- 128
- PR merge metrics
- No merged PRs in 30d
Description
**Is your feature request related to a problem? Please describe.**
While building a Unity MWA example app tested on Solana Seeker with Seed Vault, I had to work around several missing features to achieve parity with the React Native MWA SDK. The SDK works,
but requires significant boilerplate for common MWA flows.
Working example app: https://github.com/mstevens843/unity-solana-mwa-example
1. LoginWalletAdapter() shows a wallet picker UI even when only one MWA adapter is available. Should auto-select.
2. Web3.Instance.Logout() only clears local state. No way to revoke MWA authorization.
3. No built-in auth token cache for MWA sessions. Had to build a custom IMwaAuthCache with PlayerPrefs.
4. GetCapabilities is not exposed in the SDK.
5. WebSocket Error: An exception has occurred during an OnMessage event fires on every MWA handshake. Non-blocking but pollutes logs.
6. No SignMessage(string) overload. Requires manual Encoding.UTF8.GetBytes().
7. No way to access the MWA auth token from LoginWalletAdapter() return value. Account only exposes PublicKey.
**Describe the solution you'd like**
Auto-select wallet adapter when only one is available (skip picker UI). Expose MWA auth token from LoginWalletAdapter() for external caching. Add built-in extensible auth cache layer (parity
with React Native SDK). Expose GetCapabilities for MWA 2.0. Add SignMessage(string) convenience overload. Suppress or fix WebSocket OnMessage exception during MWA handshake.
**Describe alternatives you've considered**
I built workarounds for all of these in the example app. Custom IMwaAuthCache interface with PlayerPrefs, manual byte conversion for SignMessage, hardcoded GetCapabilities defaults. These
work but should be in the SDK itself for React Native parity.
**Additional context**
Solana.Unity-SDK (latest via git), Unity 6000.4.1f1, IL2CPP, Solana Seeker hardware, Seed Vault wallet, Android API 35. All MWA flows confirmed working: authorize, sign message, sign
transaction, sign and send, disconnect, delete account, reconnect with cached auth.
Happy to contribute PRs for any of these.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the working Unity MWA example app and trace LoginWalletAdapter(), Web3.Instance.Logout(), GetCapabilities, SignMessage(string), and the IMwaAuthCache workaround. Compare these flows with the stated React Native parity needs and the WebSocket handshake log. Done means the requested adapter, cache, token, capability, signing, logout, and handshake behaviors are available without the listed workarounds.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp, unity
- Domain
- authentication, game-dev, mobile-dev
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100