Six weeks from kickoff to public launch on both stores, with a four-engineer team and zero P0 crashes in week one. We've shipped enough React Native apps now to know what to invest in early and what to defer. Here's the shortlist.

Architecture: thin shell, fat features

We keep navigation, auth, and the API client in a tiny shared shell. Every feature is its own folder with its own components, hooks, and tests. New features get added without touching the shell. This sounds obvious; it is also the single biggest predictor of whether a React Native codebase stays maintainable past month six.

OTA updates with EAS Update

We ship JS-only bug fixes via EAS Update without going through app review. The win isn't speed — it's the ability to roll back instantly. Our deploy script tags every OTA bundle with the commit SHA, so reverting a bad release is a one-command operation.

The three Expo features we actually used

  • expo-router — file-based routing meant zero navigation boilerplate.
  • expo-image — image caching and progressive loading without writing any of it ourselves.
  • expo-notifications — push setup that took half a day instead of half a sprint.

Crash monitoring on day zero

Sentry was wired up before the first beta build. We caught a JSI binding crash that only fired on certain Android 11 devices — caught it in TestFlight equivalents, fixed it before public launch. Without crash reporting from day one, that bug would have shipped.