02 · Mobile · MVP · Consumer
Expo + Expo Router + Supabase
A feed-shaped app with auth, storage and realtime from a hosted backend, and not a line of native code.
Agent fit5/5 MVP · Ship it Reviewed
The stack
- Framework
- Expo (managed workflow) + Expo Router
- Data
- Supabase (Postgres, Storage, Realtime)
- Auth
- Supabase Auth
- Hosting
- EAS Update for over-the-air JavaScript, TestFlight and internal testing
- Also
-
- NativeWind for styling
- FlashList for feeds
- expo-image for media
- Expo Notifications
Why agents do well here
5/5- Expo Router makes screens files and params types, so the agent navigates the app the way it navigates a web app.
- Supabase gives the agent one client for auth, data, files and realtime, all typed from the database schema.
- Over-the-air updates mean an agent's fix ships in minutes, keeping the feedback loop tight enough to be useful.
Avoid at this tier
- Ejecting or adding a custom native module for anything the Expo SDK already covers.
- A bespoke backend; you will spend the MVP on plumbing instead of the feed.
- Redux or a large state library; TanStack Query plus a small store is enough.
How it fits together
Consumer apps are lists, media and notifications. Pick the list, image and push libraries first, because retrofitting them is exactly the kind of cross-cutting change an agent does badly.
Folder layout
app/ (tabs)/feed.tsx, (tabs)/profile.tsx, post/[id].tsx, _layout.tsx
src/features/ feed/, auth/, profile/ {hooks, components, queries}
src/lib/ supabase.ts, query-client.ts
supabase/ migrations/, seed.sql First five decisions
Lock these in before the agent writes the second feature. Each one removes a choice it would otherwise make differently every time.
- 01 Managed workflow with no native code
- 02 Expo Router with typed routes
- 03 FlashList and expo-image from the start
- 04 Supabase RLS for authorisation
- 05 EAS Update wired before the first tester
When to move on
Stay here until the product forces the next tier. You are ready for Growth when:
- Users keep old versions for weeks after a release
- A store rejection costs you a launch date
- You need analytics, crash reporting and push that you own
- The backend is your code, shared with a web product or not