Expo + Realtime Map Stack
The delivery-ready stack: Expo, react-native-maps, Supabase Realtime for driver location, push for order updates. Three roles, one codebase.
The delivery-ready stack: Expo, react-native-maps, Supabase Realtime for driver location, push for order updates. Three roles, one codebase.
Starter Kit
Expo + Supabase Realtime + react-native-maps ships a delivery app with three roles, realtime tracking, and the Apple review rules for location.
Delivery, field service, rideshare-style apps. Anything with moving drivers, realtime order status, and a customer waiting to see where their thing is. Native iOS and Android, one codebase, three role-based screen sets.
react-native-maps for the map view.Customer + driver flows with realtime tracking:
About 46 hours total. Backoffice (a simple web view of orders) adds ~6 hours but is separate from the mobile codebase.
The rookie move is streaming driver location every second. Battery drops 30% per hour and Apple rejects the app for "not handling location responsibly". The right move:
react-native-reanimated does this in ~30 lines.Two channels:
order:<orderId> — state changes for this order. Customer subscribes.driver:<driverId>:location — location updates. Customer subscribes while waiting.Presence tells you when a driver goes offline so you can free the order.
One binary, two screen sets. Gate them on the user role column in Supabase. Customer sees the browse and track screens; driver sees the queue and navigation handoff screens. Put the logic in a single useRole hook and let Expo Router switch roots.
orders, drivers, driver_locations.assign_order with SELECT FOR UPDATE SKIP LOCKED to avoid assignment races.One-time purchase. Full-stack boilerplate + 11 AI agents. No subscription.