mobile: implement onboarding create flow (backlog #25) - #583
mobile: implement onboarding create flow (backlog #25)#583popdadyrisky wants to merge 8 commits into
Conversation
…mobile create flow
|
@popdadyrisky is attempting to deploy a commit to the miracle656's projects Team on Vercel. A member of the Team first needs to authorize it. |
|
@popdadyrisky Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
|
Thanks! One thing to reconcile before this lands: |
|
Thanks @popdadyrisky — nice onboarding UX. Blocker: this is written for the web runtime and won't run on React Native as-is — it uses #594 just landed the correct native pattern — please rebuild on top of it:
Happy to help scope it. |
|
Apologies for the month this waited — that is on us. Reviewed it against current Nothing routes to this screen. The onboarding folder currently holds only // app/(onboarding)/welcome.tsx:51
const handleCreate = async () => {
await AsyncStorage.setItem(SEEN_WELCOME_KEY, '1');
router.push('/create-wallet');
};
Which is the intent?
Either is fine; what cannot land is a screen with no way in. We have had that pattern bite twice recently — most recently a hook that was added but never mounted, so the feature it described never ran. If you would rather not carry this forward after the delay, that is completely fair. Not closing it either way. If option 1 is the intent and you want me to check the two screens against each other and tell you what |
Implement mobile onboarding create flow that:
Registers a WebAuthn passkey via the Invisible Wallet SDK
Derives a deterministic fee-payer Keypair from the passkey credential ID (HKDF → Ed25519)
Funds the fee-payer via Friendbot (testnet) or verifies mainnet funding
Deploys the wallet contract through the factory using wallet.deploy()
Writes session state (invisible_wallet_address, veil_signer_secret) to sessionStorage and navigates to /dashboard
Files:
frontend/mobile/app/(onboarding)/create.tsx
Acceptance:
WebAuthn credential created → wallet contract deployed → session set → dashboard landing (see QA steps)
Notes:
The mobile flow keeps the signer secret ephemeral until after deploy (opt-in reveal). Web onboarding persists the secret prior to deploy; consider aligning behavior if desired.
closes #453