TypeScript + React + business logic.
Screens, navigation, state, API calls, data models, validation, styling, animations. Written once in TS + React, runs the same on both platforms.
Expo-Router-first React Native. One TypeScript codebase for iOS and Android, OTA updates, and store-ready deployments.
React Native ships 92 percent of code once across iOS and Android. Platform-specific native bridges handle the remaining 8 percent.
The discipline is knowing which 8 percent lives on each branch. CoreLocation vs Android Camera2. StoreKit vs Play Billing. HealthKit vs Health Connect. Get the boundary right, and your app feels native on both platforms. Get it wrong, and it feels like a compromise on both.
Screens, navigation, state, API calls, data models, validation, styling, animations. Written once in TS + React, runs the same on both platforms.
CoreLocation, CoreBluetooth, HealthKit, StoreKit, specific WidgetKit or Live Activities work. Either via an Expo module or, for deep work, native Swift code.
Camera2, Play Billing, Android Keystore, specific Health Connect integration, background services. Via Expo module or Kotlin for deep work.
The old "Expo cannot do X" argument is largely outdated. Expo with dev client and the Expo Modules API covers 85 percent of what once forced bare workflow.
We use bare only for deep native work: specialized Bluetooth, custom camera pipelines, background audio processing. For everything else, Expo's speed, OTA updates, and EAS Build pipeline win.
| dimension | Expo (managed + dev client) | Bare workflow |
|---|---|---|
| setup time | minutes | days (Xcode + Android Studio + signing) |
| OTA updates | EAS Update, built-in | CodePush or self-hosted |
| build pipeline | EAS Build (cloud) | Fastlane + local Xcode/Android |
| custom native code | via Expo Modules API | direct Swift/Kotlin |
| team ramp-up | React devs productive in days | native expertise required |
| best for | 85% of modern RN work | deep native integration, specialized hardware |
EAS Update ships JavaScript bundle changes to users without store review. Bug fixes and content updates reach users in minutes, not days.
Native changes still need store submission. We set up channel-based rollouts: canary for early testers, beta for opt-in users, production for everyone. Rollbacks happen from the command line and go live in 5 minutes.
Signed iOS and Android binaries built in the cloud. Credentials managed by EAS, rotate without touching local machines. Production builds typically 20-40 minutes.
JS bundle updates over the air, reach users in minutes not days. Channels for staged rollouts. Rollback from CLI if issues surface.
App Store and Play Store submissions from CLI. Release notes, metadata, screenshots handled declaratively in EAS config.
| metric | target | measured on |
|---|---|---|
| cold start to first screen | < 1.8s | mid-tier Android, iPhone 12 |
| warm start | < 600ms | both platforms |
| list scroll fps | 60 fps | FlashList or Reanimated 3 |
| time to interactive | < 2.5s | first meaningful interaction |
| crash-free users | > 99.7% | Sentry, 30-day rolling |
Companion app for a Shopify subscription brand. Order history, skip + swap flows, loyalty tier, push campaigns. Expo + Expo Router + TanStack Query. 12 weeks to production, 4.7 App Store rating, 4.6 Play Store.
Field technician app for a B2B service company. Works offline on site, syncs when network returns, signature capture, barcode scan, photo upload queue. WatermelonDB for offline store, Expo Modules API for custom barcode scanner. 18 weeks.
2 weeks. Expo vs bare, native surface, store readiness. Refundable.
10-16 weeks. 15-25 screens, auth, push, OTA, store submit.
14-22 weeks. Native modules, offline, IAP, deep links.
16-26 weeks. iOS or Android native → React Native.
Use Expo (managed with dev client) for 85 percent of modern React Native projects. The dev client workflow lets you add most native modules Expo doesn't include out of the box. So the old objection "Expo cannot do X" is outdated in 2026.
Use bare workflow only when you need deep native work that cannot live behind an Expo config plugin: custom Bluetooth stacks, specialized camera pipelines, background audio processing, or hardware-specific integrations.
Team size matters. For 2 to 4 engineers shipping a standard app, Expo wins. For teams with dedicated iOS and Android engineers doing specialized native work, bare may fit better.
Senior React Native engineers run $145-200/hour at boutique agencies in the US and UK, and $85-140/hour in India.
An MVP with Expo Router, auth, push notifications, OTA updates, and store submission takes 10-16 weeks. A production build with native modules, offline sync, in-app purchases, and deep links takes 14-22 weeks. A rewrite from native iOS or Android takes 16-26 weeks depending on features.
A 2-week audit is refundable. You'll get a scoped quote in 48 hours.
Over-The-Air (OTA) updates via EAS Update let you ship JavaScript bundle changes to users without App Store or Play Store review. JS-only changes reach users in minutes, not 1-7 days. These include bug fixes, content updates, feature flags, and new screens using existing native modules.
Native changes still need store submission. OTA matters because it decouples JS velocity from review cycles. You can roll out fixes same-day and use staged rollouts (beta, canary, production).
Three paths. One: use an existing Expo module like expo-camera, expo-notifications, or expo-location. Two: use a community module with an Expo config plugin. Most major libraries have these now. Three: write a custom Expo module when the need is unique.
The Expo Modules API is mature enough to write Swift and Kotlin code inside an Expo project. So "we need custom native code" is no longer a reason to leave Expo. We recommend bare only when native work is large enough to justify dedicated iOS and Android engineers.
Yes. For simple offline (cached API responses, offline write queues), TanStack Query with persistent cache via AsyncStorage or MMKV handles most cases.
For full offline-first with collaborative editing and complex sync, WatermelonDB or Legend State plus a custom sync layer is our pattern. For the hardest cases (offline with CRDTs or operational transforms), Replicache or PowerSync via a managed backend.
Offline-first adds 4-8 weeks to scope. We map offline requirements in week one.
expo-notifications handles the client side. Firebase Cloud Messaging (FCM) on Android and APNs on iOS deliver the payloads. On the backend, we integrate with a provider: Expo Push for small volumes, OneSignal or Customer.io for marketing and rich notifications, or direct APNs/FCM when you need full control.
Critical UX details: permission prompts appear at the right moment, not on app launch. Not-opted-in state is handled gracefully. Silent push for background data is measured and respected by iOS throttling rules.
EAS Submit handles both stores from the command line. Before your first submit, we set up App Store Connect and Google Play Console accounts under your organization. We configure signing certificates (managed via EAS), write store listings, and create screenshots in every required size using our Figma template.
We prepare privacy labels and data safety forms. First submit typically takes 1-3 days of review on Apple, same-day on Google. We run a dry-run internally against the review guidelines before submitting. Rejection is rare; if it happens, we fix and resubmit within a week.
You do, fully. GitHub repository under your organization. Apple Developer Program membership and Google Play Developer account under your legal entity. EAS account and signing certificates under your EAS organization with DH engineers as named collaborators removable any time. Push notification provider (Expo Push, OneSignal) under your billing. On exit: repository transferred, credentials rotated, store access handed off, 30-day support tail. No lock-in through signing, tooling, or vendor choice.
Two weeks. Expo vs bare, native module surface, store readiness. Refundable against any engagement that follows. Scoped quote in 48 hours.
Published reviews from our Fiverr profile, reproduced word for word. 397 public reviews across 4 gigs, from clients in 36 countries. Read them all on Fiverr.
incredible experience with this team They built my website exactly how I envisioned clean, modern and optimized for conversions they kept me updated throughout, and even suggested improvements I hadn’t thought of. Everything was delivered on time and works perfectly across devices. You can tell they genuinely care about the quality of their work highly recommended !!
Great experience working together! The website looks amazing and everything works perfectly. All my requests were implemented quickly, and communication was smooth throughout. Definitely recommend!
Very impressed with the quality of work The developer understood our requirements quickly and delivered a powerful well-structured website
Working with this developer was an excellent experience They completely understood what we wanted for our pet accessories brand and translated it beautifully into a clean website Very impressed with the attention to detail, animations and overall execution Highly recommended
Completed Phase 1 of my project. Looking forward to starting and completing Phase 2. The level of work thus far on Phase 1 has been absolutely exceptional! The communication was easy and I am very pleased with the project and how it's coming along so far!
We’re extremely impressed with the outcome. The system is clean, structured, and works exactly as we wanted it to be. The team was supportive, really helpful, and ensured everything was executed perfectly. We’re excited to continue working together.
Reviews are reproduced as published on Fiverr, captured 2026-08-03. Fiverr shows the buyer's username and country publicly; no other client detail is used here.
115 people across five studios in New York, Delhi, London, Sydney and Lucknow, shipping ecommerce, web, software and mobile work for founder-led brands. Senior engineers only, no account-manager relay, and the same team from kickoff to launch.
Published · Last updated .
Pinch, scroll or double-tap to zoom · drag to pan
Share your name and email so we can follow up.
Please enter your name and a valid email.