If your team already writes React/TypeScript, or you need deep integration with a JS-heavy backend, React Native wins on hiring pool and code reuse. Flutter is a fair pick for a small team starting from zero with no web codebase. Fully native (Swift/Kotlin) earns its cost only when the app is a thin shell over heavy platform-specific graphics or hardware — think camera-first or AR-first products. Most business apps don't need that.
We write a native module — a small Swift or Kotlin bridge exposed to JS through TurboModules/JSI. This is normal, not a failure mode: payments SDKs, BLE, and some AR/camera APIs regularly need it. We scope native-module work up front during discovery so it's budgeted, not a surprise mid-build.
JS and asset changes ship instantly over the air via EAS Update — no store review, staged rollout, instant rollback. What OTA can't touch: native code changes, new permissions, or anything that alters the compiled binary — those still go through App Store / Play Store review. We architect features to maximize what's OTA-safe.
Both are legitimate, and the honest answer is "it depends on the native surface." Expo's managed workflow (with prebuild/config plugins) covers the large majority of apps and gets you EAS Build/Update for free. Bare workflow earns its complexity when you need low-level native control the config-plugin ecosystem doesn't cover yet. We default to Expo and drop to bare only when a specific requirement demands it — happy to go deeper on this, it's genuinely its own topic.
Local-first storage (SQLite or MMKV) plus a queued mutation layer — actions taken offline replay when connectivity returns, with conflict resolution defined per entity. TanStack Query handles cache invalidation and background refetch on reconnect. We test this explicitly: airplane-mode QA is part of every build's checklist, not an afterthought.
You do. Repo, EAS project, and OTA update channel are yours from day one. Store listings live under your own Apple Developer and Google Play accounts — we get invited as a team member, never as the owner. No embedded SDKs or licensing strings attached.
10 — Start
Let's build something worth shipping.
Two-week diagnostic, four-week MVP, twelve-week ground-up. Bring the brief — we'll send a plan, not a pitch deck.