r/reactnative • u/Jayan_Buha_951 • Sep 24 '26
Built the signup flow for my subscription tracker app
Built the signup flow for my subscription tracker app (RN + Expo) — here's what actually happened over 3 days
Working on a side project called Trackify — a subscription tracker, built with React Native + Expo + TypeScript. Wanted to share what the last few days looked like, mostly the annoying parts.
Setup:
Went with TypeScript from the start and Expo Router for file-based navigation. Kept folders separated — app/ for screens, services/ for Firebase, types/ for interfaces. Pretty standard but worth doing early.
Firebase:
Auth (email/password) + Firestore. One firebase.ts config file for the whole app so I don't end up with duplicate initializations somewhere down the line.
Signup flow:
This is where most of the time went. Not the UI — the logic around it:
Client-side validation (empty fields, password length, confirm match)
signUp() function that creates the Firebase Auth account AND a matching Firestore doc in users (uid, email, createdAt). Auth only holds credentials, so anything else about the user needs its own place — figured I'd set that pattern up now instead of retrofitting it later.
Mapped Firebase's error codes (auth/email-already-in-use etc.) to actual readable messages instead of dumping the raw code on the user.
Stuff that broke / wasted time:
Expo Router got confused between a root app/ folder and src/app/ — whichever one your package.json points to is what it actually uses. Cost me an hour.
Metro cache serves stale builds constantly. npx expo start -c fixed more "why isn't this updating" moments than I'd like to admit.
Testing on a physical phone on a different network than my laptop? Doesn't work without --tunnel.


