Sachin Maurya
All work

No. 01 · Production work

Promoter platform inside a React Native app

A React and Vite web app that runs inside a React Native client through a WebView: onboarding, KYC, referrals, transactions, withdrawals, and invoice previews.

Role
Primary owner from zero to production. I built the app and the WebView integration layer.
Outcome
Serves 100K+ users inside the client. Form error rates fell ~50% across KYC and financial flows.
Stack
React, Vite, TypeScript, React Native WebView, TanStack Query, and React Hook Form

Problem

Promoter workflows had to feel native inside the mobile app while shipping as a web module the team could deploy on its own.

What I built

  • KYC with document upload
  • Onboarding with contract signing
  • Withdrawals with PDF invoice previews
  • Referrals, transactions, and a dashboard

Key decisions

  • The auth handshake reads the session token from storage first and falls back to a one-time value injected by the native shell. The injected value is saved and cleared immediately so a re-render can't read it twice, which closed a race condition that had blocked rollout.
  • One message listener, bound to both window and document, normalizes native-to-web messages across Android and iOS WebViews. Only type-tagged payloads are handled, so unrelated postMessage traffic is ignored.
  • A keyboard-aware layout reads the visualViewport API and exposes the live offset as a CSS custom property, so inputs stay above the on-screen keyboard without a resize event from the native side.
  • An in-app debug console, used alongside chrome://inspect, makes issues diagnosable on real devices.

Trade-offs

  • Accepted the cost of coordinating over the bridge to avoid maintaining a second, native UI.
  • Made forms, auth, uploads, and keyboard handling stable before adding decorative interactions.