VeztaVezta
Guides

Mobile Development

Status of the Vezta mobile app

A native Vezta mobile app is planned but not yet implemented. This page describes the current state and the planned stack.

Current Status

  • Designs -- Complete (plans/mobile/). 5-tab nav, bottom-sheet trading, Lite/Pro toggle, 61 screens, 29 reusable components, 8 phases.
  • Implementation -- Not started in code. The vezta-mobile/ directory does not yet exist in the repository.
  • Backend support -- Already in place: push-notification module, app-version module, device-token endpoints, and a DeviceToken Prisma model are wired up so the mobile client can plug in immediately when implementation begins.
  • Telegram-first interim -- The @vezta_bot interactive trading bot (plans/vezta-bot/) is being built first as a faster path to a "mobile-feeling" experience while the native app is in flight. The signal bot @vezta_signal_bot is already shipping insider alerts to @vezta_signals.

Planned Stack

TechnologyVersionPurpose
Expo SDK55Managed workflow with EAS Build
React Native0.83Cross-platform mobile rendering
Expo Router--File-based routing with typed routes
NativeWindv4Tailwind CSS for React Native via className prop
React Native Reanimatedv4High-performance animations
TanStack Queryv5Server state with offline persistence (AsyncStorage persister)
Zustand--Local UI stores
Jotai--WebSocket atom state
Socket.IOv4Real-time data with AppState-aware connect/disconnect
expo-secure-store--Refresh-token storage (device secure enclave)
expo-local-authentication--Biometric auth (Face ID / Touch ID)
expo-notifications--Push notifications
@gorhom/bottom-sheet--Trading sheet and modal presentations
expo-image--Image rendering with caching
expo-updates--OTA updates
Jest + RNTL--Unit testing

Planned Navigation Structure

5-tab bottom navigation:

TabPathScreens
Home(tabs)/home/Feed, trending, balance overview, notifications
Markets(tabs)/markets/Browse, search, filter, [slug] market detail + trading sheet
Portfolio(tabs)/portfolio/Positions, orders, watchlist, PnL analytics (auth required)
Social(tabs)/social/Leaderboard, copy trade, wallet activity
More(tabs)/more/Settings, rewards, events, AI signals, monitor, help

Auth screens ((auth)/ group) display without the tab bar: login, welcome-back, access-key, biometric setup, onboarding, waitlist.

Code Sync from Web

When the mobile app starts development, several layers will be shared with vezta-fe and kept in sync manually:

Shared LayerPathSync Method
API types, schemas, hookslib/api/gen/Copy from vezta-fe after pnpm generate
Utilitieslib/utils.tsCopy from vezta-fe
Constantslib/constants.tsCopy from vezta-fe
TypeScript interfaceslib/types/Copy from vezta-fe
Trading helperslib/trading/Copy from vezta-fe

Never hand-edit lib/api/gen/. After any backend API change, regenerate in vezta-fe with pnpm generate, then copy the output to vezta-mobile/lib/api/gen/.

Auth Plan

Mobile auth uses the same wallet-based + Google flow as the web. Key differences:

  • Refresh tokens are stored in expo-secure-store (not AsyncStorage). SecureStore uses the device's secure enclave.
  • Access tokens stay in-memory.
  • The API client at lib/api/client.ts handles automatic 401 refresh-and-retry.

Never use AsyncStorage for sensitive data (tokens, keys). SecureStore has a 2048-byte value limit, so only store tokens -- not large data blobs.

Planned Gotchas

When implementation starts:

  • NativeWind v4 uses className -- not the style prop for Tailwind classes
  • Reanimated v4 requires the babel plugin in babel.config.js
  • Bottom sheet (@gorhom/bottom-sheet) needs GestureHandlerRootView as an ancestor
  • Expo Router typed routes require experiments.typedRoutes: true in app config
  • Font loading must complete before rendering -- use expo-splash-screen to prevent flash
  • Always disconnect and reconnect WebSocket on AppState background/foreground transitions
  • Decimal values from the API are strings -- parse with parseFloat() before math
  • Use expo-image instead of React Native's <Image> for better caching performance
  • plans/mobile/ -- 8-phase implementation plan with screen designs
  • plans/vezta-bot/ -- interactive Telegram trading bot (currently in development as a near-term mobile alternative)

On this page