When is React Native the right choice for a US product team?
React Native is the right choice when your company already builds with React, when you want iOS and Android from one TypeScript codebase, and when being able to ship small fixes without waiting for store review matters to you. If none of those apply, look at Flutter or native before defaulting to it.
Most of the US teams who ask us about React Native app development fit one of three patterns. A B2B SaaS with a Next.js dashboard wants a mobile companion for notifications, approvals and quick edits. A consumer startup has a web MVP gaining traction and customers asking for an app. A services business built a React customer portal and now wants the same features in a pocket-sized form. In all three, the React web code is an asset, and throwing it away for a different language would waste months of decisions already made.
React Native is a weaker fit for graphics-heavy games, apps whose core is a complex native SDK with no JavaScript wrapper, and teams with no JavaScript skills at all who would be learning React from scratch.
- Yes: you have a React web app, a TypeScript team, and features that mirror the web product.
- Probably: you are starting fresh but plan to hire JavaScript engineers later.
- Think twice: the product is mostly 3D, camera processing or a native-only SDK.
What should a React Native app development company deliver?
A React Native app development company should deliver working iOS and Android apps in the stores, a typed codebase in your repository, a repeatable build and release pipeline, and documentation good enough for your own engineers to take over. Screens alone are not the product; the pipeline behind them is what lets you keep shipping.
Concretely, when we finish a React Native project you should have: the app published under your Apple and Google accounts; the source in your GitHub with a clear folder structure; EAS Build profiles for development, preview and production; an EAS Update channel setup with rollout and rollback instructions; automated tests for business logic and key screens; crash reporting wired to your account; and a README that explains environment variables, how to run the app locally, and how to cut a release.
You should also receive the decisions, not just the code. We write short architecture notes: why a state library was chosen, which parts of the web code are shared, which native modules exist and why, and which third-party services cost money each month. Those notes are what stop the next developer from quietly rewriting everything.
How much code can a React Native app share with your React web app?
Typically the logic shares and the UI does not. Types, validation schemas, API clients, data-fetching hooks, formatting helpers and business rules move straight into a shared package; components built on HTML elements and CSS do not, because React Native renders to native views rather than the DOM.
The cleanest structure is a monorepo with three parts: your web app, the React Native app and a shared package both import. When a pricing rule changes, you change it once and both clients pick it up. When the API adds a field, the shared TypeScript type updates and the compiler flags every screen on web and mobile that needs attention. That compile-time safety is the quiet reason React Native app development suits web-first companies so well.
There is a middle layer worth sharing selectively: design tokens such as colours, spacing and type scales can live in the shared package, so the app and the site feel related without pretending to be identical. Some teams go further with cross-platform component libraries; we recommend that only when the product genuinely needs identical components in both places, because it adds build complexity.
Shares well
TypeScript types, Zod or Yup schemas, API and GraphQL clients, TanStack Query hooks, date and currency helpers, feature flags, analytics event names.
Rebuilt for mobile
Layout components, navigation, forms using native inputs, gestures, file pickers and anything touching the browser window or DOM.
Expo or bare React Native: which workflow should you use?
For almost every new project, start with Expo. The React Native documentation itself recommends building new apps with a framework, and names Expo as the example, because it bundles navigation, native APIs and dependency management that you would otherwise assemble by hand.
The old worry that Expo locks you out of native code no longer holds. Expo's documentation describes Continuous Native Generation: the iOS and Android projects are generated from configuration when you build, and config plugins apply your native customisations each time. You can still write custom native modules, use development builds, and include libraries that ship native code. What you gain is reproducibility: upgrading the Expo SDK becomes a matter of regenerating projects rather than hand-merging hundreds of lines of Xcode and Gradle changes.
A bare workflow, where the native folders are committed and edited by hand, still makes sense in a few cases: an existing brownfield app where React Native screens live inside a large native app, or heavy native customisation that no config plugin can express. If you inherit a bare project, we assess whether moving to Expo would pay for itself in easier upgrades before touching anything.
What can you ship over the air in a React Native app?
You can ship JavaScript, styling and image changes over the air; you cannot ship native code, new permissions or SDK upgrades that way. That line decides which fixes reach users in minutes and which wait for store review.
Expo's documentation says EAS Update lets an app update its non-native pieces, such as JavaScript, styling and images, and that changes to native code, native dependencies, app permissions or the Expo SDK version need a new build. It also says updates must follow App Store and Play Store guidelines. Apple's guideline 2.5.2 says apps may not download code that introduces or changes features or functionality. So our rule is conservative: over-the-air updates for bug fixes, copy, small layout corrections and configuration; new features go through normal store review.
Operationally we set up separate channels for staging and production, roll updates out to a percentage of users first, and keep a one-command rollback in the runbook. Every over-the-air update is tagged in Git, so you always know which JavaScript bundle a given user is running, and crash reports carry the update ID.
- Crash in a screen's JavaScript: fix and publish an update after testing on staging.
- Typo or wrong price label: update over the air.
- New camera feature needing a permission: new build, store review.
- Expo SDK upgrade: new build, store review.
When does a React Native app need native modules?
A React Native app needs a native module when a device feature, OS capability or vendor SDK has no maintained JavaScript library. For typical business apps that is a small slice of the work, but it is where inexperienced teams lose weeks.
Common triggers in US projects include vendor SDKs for payment terminals, identity verification or proprietary hardware; Bluetooth devices with custom protocols; home-screen widgets and Live Activities on iOS; background tasks with strict battery rules; and deep integration with Apple Health or Android's Health Connect. We check the library landscape first, because many of these already have maintained modules, and only then write Swift or Kotlin.
When we do write native code, we write it for React Native's New Architecture using its typed module system, so JavaScript calls the native side directly through the JavaScript Interface instead of serialising messages across the old bridge. Each module comes with a small example screen and tests, and the handover notes explain what it does in plain English for the developer who inherits it.
React Native's New Architecture: why it matters for your app
The New Architecture is React Native's redesigned core, and since version 0.76 it has been enabled by default in all new projects, according to the React Native documentation. If your existing app predates it, upgrading is one of the best investments you can make in its future.
The documentation describes three practical gains. Layout can be read and applied synchronously, which removes visual jumps when a component measures itself. The concurrent renderer supports modern React features such as Suspense, transitions and automatic batching, so the same patterns your web engineers use now work on mobile. And the JavaScript Interface lets JavaScript hold references to native objects and call them directly, without serialising every message. React Native also ships with Hermes as its default JavaScript engine, which is tuned for mobile start-up time.
For a buyer, the point is simpler: libraries are moving to the New Architecture, and apps that stay on the old bridge will find more and more packages unsupported. When we quote a rescue or upgrade, we list which of your dependencies are ready, which need replacing, and what the upgrade will cost before any work begins.
React Native app development company or US mobile engineers: what does each cost?
A React Native project with BtechWaleTech starts at US$600, or US$900 with back-end work, and is paid by milestone. Hiring US mobile engineers means salaries, benefits, payroll taxes, equipment and recruiting time before the first line of code, and that cost continues after the app ships.
The right comparison is not the hourly rate but the cost of getting a stable version one into users' hands and keeping it healthy. An in-house hire gives you permanent knowledge and full-time focus, which matters once mobile is a core revenue channel. A small outside team gives you a working app sooner and a codebase your future hires can inherit, which matters when you are still proving the mobile channel. Many companies do both in sequence: build the first version with a React Native app development company, then hire in-house once usage justifies it.
Other studios' and freelancers' quotes vary widely, and the spread usually reflects scope assumptions: whether design is included, whether tests are written, who handles store submission and billing, and whether any post-launch support is part of the price. Ask each bidder to price the same screen list and state what month four looks like.
For a broader view of app budgets, read how much it costs to build an app, and for a line-by-line look at outsourcing economics, see how to outsource app development safely.
What makes a React Native estimate go up or down?
Code reuse pushes a React Native estimate down; native modules, offline sync, payments and extra user roles push it up. The single biggest discount is a well-documented API your web app already uses.
We look at six things when we price React Native app development. First, API readiness: if endpoints exist and are documented, the mobile app mostly consumes them; if not, back-end work joins the scope. Second, the number of distinct screen types. Third, authentication: reusing your existing auth provider is quick, while adding enterprise SSO or passkeys takes longer. Fourth, offline behaviour, which needs local storage, conflict rules and a sync queue. Fifth, payments: digital subscriptions go through App Store and Google Play billing, while physical goods and services use card or wallet checkout. Sixth, native modules, each estimated separately so you can decide whether a feature is worth its cost.
- Existing, documented API: lowers cost.
- Shared TypeScript types in a monorepo: lowers cost and bugs.
- Custom native SDK integration: raises cost, priced per module.
- Multiple roles (customer, staff, admin): raises testing effort.
- Offline-first requirement: raises cost noticeably.
- Tablet-optimised layouts: moderate extra work.
Questions to ask any React Native app development company
Ask how they share code with your web app, whether they use Expo and why, how they handle over-the-air updates within store rules, and who owns the Expo and store accounts. Clear, specific answers to those four questions separate experienced teams from ones learning on your budget.
A few follow-ups are revealing. Ask which React Native version and Expo SDK they would start on today; the answer should be current or one step behind, with a reason. Ask how they test: unit tests with Jest, component tests with React Native Testing Library, and end-to-end flows with a tool such as Maestro or Detox on real devices. Ask what their release checklist includes, and whether they have dealt with App Store rejection before and how. Ask to see a sample README or runbook from a past project, with client details removed.
Also ask what they will not do. A team that claims every native feature is trivial has not built many of them. We are open about our limits: we do not supply hardware, run on-site workshops or provide legal sign-off on privacy policies, and we are three people, so we suit focused products better than programmes needing a dozen parallel squads. Our about page explains who does what on the team.
The testing and release pipeline a React Native app development company should run
Every React Native app we build ships with automated tests for business logic, component tests for critical screens, and at least one end-to-end smoke test run on device builds before each release. Builds come from EAS Build, so any developer on your side can reproduce them.
The release path is the same on every project. A pull request runs type checks, linting and tests. Merging to the main branch produces a preview build that testers install through TestFlight on iOS and an internal testing track on Google Play. When a release is approved, EAS Build creates signed production builds, EAS Submit sends them to App Store Connect and the Play Console, and we write the release notes. Over-the-air updates follow the same review: nothing goes to the production channel without passing staging first.
If your company opens a new personal Google Play developer account, be aware of a policy in Google's Play Console Help: personal accounts created after November 13, 2023 must run a closed test with at least 12 testers opted in for 14 continuous days before applying for production access. An organisation account avoids that step, and we tell you which applies before the timeline is fixed in the plan.
Most slow React Native apps are slow because of long lists, oversized images and needless re-renders, not because of React Native itself. Fix those three and the app feels native to almost every user.
Our defaults: virtualised lists with stable keys and item heights where possible, so a feed of five thousand records scrolls smoothly; images served at the size they are displayed, cached on the device; memoisation where profiling shows repeated renders, rather than everywhere by habit; and heavy work, such as parsing large JSON payloads, kept off the path of the first screen. Hermes, the default engine, helps start-up time, and we keep the initial bundle small by loading rarely used screens lazily.
We measure rather than guess. The estimate includes a start-up time target and a scroll smoothness check on a mid-range Android phone, because an app that flies on a new iPhone can stutter on the devices many of your customers actually own. Crash and performance data from production then guides which screens deserve attention after launch.
Accessibility in React Native apps for US users
React Native exposes the accessibility tools that VoiceOver on iOS and TalkBack on Android rely on, so an accessible app is a matter of discipline rather than special technology. We build with labels, roles, focus order and dynamic text sizes from the first screen, because retrofitting them later costs far more.
In practice that means every tappable element has an accessible label and role, custom controls announce their state, touch targets are large enough for thumbs, colour contrast meets WCAG guidance, and layouts survive the largest text size a user can choose. Forms explain errors in words, not only colour. We test key flows with VoiceOver and TalkBack before each release and note any known gaps in the handover.
The US Department of Justice states that ADA requirements apply to the goods and services public accommodations offer on the web, and many companies extend the same expectation to their apps. We are developers, not lawyers: we build to WCAG-based practices and document what was tested, and your counsel decides what your legal obligations are. For web-side work, our page on ADA compliant website design goes further.
How React Native app development works with a team in India
You get a daily hand-off rather than a daily stand-up. Our evenings in India line up with US Eastern mornings, so you see yesterday's work when you start your day, answer questions in the first hours, and we build while you are in meetings and asleep. Early Pacific calls work for West Coast teams.
A typical week has one video review of the latest preview build, a written progress note, and pull requests you or your engineers can comment on. If your team uses Jira, Linear or GitHub Projects, we work inside your board rather than a separate tool. Estimates are in USD, payments go by wire, Wise or PayPal, and invoices come from India; your accountant handles how you book them. Milestones and deliverables sit in the written quote you approve before anything is billed, and our terms page describes the general basis.
The first two weeks follow a pattern. In the first days, you invite us to your GitHub organisation and Expo account, and we read your web codebase to map what can be shared. By the end of week one you get a monorepo plan and a clickable flow for the first feature. In week two, a preview build appears on your phone, running against your staging API, with the shared types package already wired in.
React Native app development ownership: Expo accounts, EAS credentials and store listings
Everything sits in your name: the GitHub organisation, the Expo organisation, the Apple Developer and Google Play accounts, and any analytics or crash-reporting projects. We are invited members, and we leave cleanly when the project ends.
React Native projects built with Expo have a few credentials worth tracking. EAS can manage iOS distribution certificates and provisioning profiles and the Android upload keystore; we make sure those live under your Expo organisation, not a personal account. Google Play App Signing keeps the app signing key with Google, so a lost upload key can be reset. Push notification keys, API secrets and environment variables go into your secret store, and the handover document lists every one of them with where it lives.
The written quote describes intellectual property and confidentiality terms; if you would like your attorney to review them, please do. At the end you can remove our access in minutes, and the release runbook lets any competent React Native developer cut the next version. Two months of free maintenance follow launch, then care from US$120/mo if you want us to stay.
Worked example: a hypothetical Next.js SaaS adding a React Native app
Imagine a Denver-based B2B SaaS with a Next.js dashboard used by property inspectors, whose customers keep asking for a phone app to capture photos on site. This scenario is illustrative only; it is not a client project.
We would start by reading the web codebase and moving its TypeScript types, Zod schemas and API client into a shared package. The React Native app, built with Expo, would cover login through the existing auth provider, a list of today's inspections, a checklist screen with photo capture, and offline storage so inspectors in basements and rural sites can keep working. When the phone reconnects, a sync queue uploads photos and answers, and the web dashboard shows them as it does today.
Native work would be limited: camera and file access are covered by Expo libraries, so no custom module is needed. Because the product needs new sync endpoints and conflict handling, the estimate would start from US$900 rather than US$600. Milestones might run: shared package and auth; inspection list and checklist; photo capture and offline queue; store release. After launch, copy fixes and small layout corrections ship over the air, and new features go through store review.
Why React Native app development projects fail, and how to avoid it
React Native projects usually fail for organisational reasons: store accounts in a vendor's name, no tests, a web team and mobile team that stop sharing code, or upgrades postponed until they become rewrites. The framework itself is rarely the culprit.
Here are the patterns we see most in apps brought to us for rescue. Dependencies pinned years ago, so the app cannot build against current Xcode. Native folders edited by hand with no record of why, making every upgrade a guessing game. Over-the-air updates used to ship whole features, risking a store policy problem. A copy-and-paste of web logic into the app instead of a shared package, so bugs get fixed on web and stay broken on mobile. And no crash reporting, so the team learns about problems from one-star reviews.
The fixes are dull and effective: keep React Native and Expo within a version or two of current, record native changes as config plugins, share logic through a package, watch crashes daily after each release, and budget a small monthly amount for upkeep. That is what our care plans, from US$120/mo, are designed to cover.