React Native development

React Native app development for React teams

React Native renders real platform components from a TypeScript codebase. Your React developers can work on the mobile app, with native modules for the parts JavaScript shouldn't handle. Comtau builds React Native apps and upgrades them on the current architecture.

Illustrative example - not a client project

Fit

Where React Native earns its place

React Native's strengths come from React and JavaScript, so the decision usually starts with your team and your existing code. The comparison with Flutter and native apps is on our cross-platform page.

Your React team

Web developers contribute to the mobile app with the language, tools and patterns they already know.

Shared logic

Types, API clients, validation and state can be shared with a React web app through one package.

Fast fixes

JavaScript fixes can reach users over the air within store rules, without waiting for review.

Native components

Lists, text inputs and navigation use real platform views, so the app behaves like a native one.

Architecture

Built on the New Architecture

Older React Native apps sent every call across an asynchronous bridge. The current architecture removes it. Any React Native app development company should build new apps on it, and plan the migration for existing ones.

  1. 01

    TypeScript throughout

    Strict types for API responses, navigation parameters and native module interfaces. Many bugs are caught before a build is made.

  2. 02

    Hermes, JSI and Fabric

    JavaScript runs on the Hermes engine and calls native code directly through JSI. The Fabric renderer keeps native views in sync without bridge round-trips.

  3. 03

    Data and state

    A query layer caches server data and handles retries and offline reads. Local UI state stays local, so screens only update when their data changes.

  4. 04

    Native modules

    TurboModules in Swift and Kotlin for capabilities that JavaScript shouldn't handle: camera pipelines, Bluetooth, payments, background tasks.

  5. 05

    Performance budget

    Virtualized lists, image caching, and startup and frame-time checks on low-end Android devices, not just the latest iPhone.

Two ways to ship

Store releases and over-the-air updates

A React Native app can reach users in two ways. We decide per change which one applies: anything that touches native code, permissions or core functionality goes through the stores.

Over the air

JavaScript changes in a React Native app

  1. BundleOnly the JavaScript bundle and assets change; native code stays the same.
  2. Staging channelTesters receive the update on a preview channel first.
  3. Check compatibilityThe update targets only app builds with a matching native runtime version.
  4. Production channelUsers get the update on next launch, with no store review involved.
  5. Roll backA bad update is reverted by republishing the previous bundle.

App Store

iPhone, iPad and Apple Watch apps

  1. Build & signCI builds the release, signs it with your distribution certificate and uploads it.
  2. TestFlightYour team and invited testers install the exact build that will ship.
  3. App ReviewApple checks the build, privacy details and store listing before release.
  4. Phased releaseAutomatic updates roll out to users gradually over seven days; it can be paused.
  5. MonitorCrash reports, performance and ratings decide whether the rollout continues.

Google Play

Android phones, tablets and foldables

  1. Build bundleCI produces a signed Android App Bundle; Play generates optimized APKs per device.
  2. Testing tracksInternal and closed testing tracks put the build on real devices first.
  3. Play reviewGoogle reviews the release against policy, target API level and data safety declarations.
  4. Staged rolloutThe update reaches a chosen percentage of users first and can be halted.
  5. MonitorAndroid vitals show crash and ANR rates by device and OS version.
  • Automated
  • Review or decision point
  • Live with real users

Project setup

Expo or a custom native setup

Both produce the same kind of app. The difference is who maintains the native project files and build tooling.

Usually our default

Expo with development builds

Expo generates and maintains the native projects. Custom native code still works through config plugins and modules.

Fits when
New apps, small native surface, a team that wants managed builds and over-the-air updates.
Trade-off
Some build settings are configured indirectly; unusual SDKs may need a config plugin.

When it is simpler

Bare React Native

The Xcode and Gradle projects are checked in and edited directly, like a native app with a React layer.

Fits when
An existing app, heavy custom native code, or React Native added to a native app.
Trade-off
Native project upgrades with each React Native release are your team's work.

What we deliver

React Native app development services

New apps, native capability, performance work and the upgrades that keep a React Native app healthy.

New React Native apps

  • TypeScript, navigation, data layer
  • iOS and Android from one codebase
  • Shared package with your web app

Native modules

  • TurboModules in Swift and Kotlin
  • Wrapping native-only SDKs
  • Expo config plugins

Performance

  • Startup time and bundle size
  • List and image performance
  • Profiling on low-end devices

Upgrades

  • New Architecture migration
  • React Native version upgrades
  • Replacing unmaintained libraries

Testing

  • Jest and Testing Library
  • End-to-end tests on both platforms
  • Real-device passes before release

Release

  • Signed store builds from CI
  • Over-the-air channels with rollback
  • Runtime versions kept in step

Questions

Frequently asked questions

Is React Native still a good choice?

Yes, for the right team and product. React Native is maintained by Meta and used in many large consumer and business apps. Its New Architecture removed the old asynchronous bridge, which was the main source of performance complaints. It is the natural choice when your developers already work in React and TypeScript, or when the app shares logic with a React web product.

Do you use Expo?

Usually, yes. Expo provides the build service, update delivery and a well-maintained module set, and it no longer stops you from writing custom native code. We use a bare React Native setup when an existing app, an unusual native SDK or build constraints make that simpler; the setup comparison on this page shows how we decide.

Can we share code between our React website and the mobile app?

Business logic, API clients, validation, types and state management can usually be shared through a common package. Interface components are a different matter: web and mobile components differ, so screens are normally written separately while still sharing design tokens and conventions. Sharing logic alone often removes a large class of inconsistencies.

What can be updated over the air without a store release?

Changes to JavaScript and assets, such as bug fixes, copy and small behaviour changes, can be delivered over the air to builds with a matching native runtime. Anything that changes native code, permissions or the app's purpose needs a normal store release. Apple and Google also don't allow over-the-air updates to change an app's core functionality, so we treat them as a fast path for fixes, not a way around review.

How much does a React Native app cost compared to two native apps?

Usually less, because one team builds one codebase for both platforms and most tests are shared. Native modules, platform-specific design details and two store releases are still separate work, so it is not half the price. See what drives mobile app development cost and our cross-platform comparison.

React Native or .NET MAUI?

.NET MAUI makes sense for organizations whose developers and backend are built on C# and .NET, especially for internal apps. React Native has a much larger mobile ecosystem and suits teams with JavaScript or TypeScript skills. If you are moving off Xamarin, both are options. We compare them against your existing code in a migration assessment.

Building with React Native?

Tell us about your team, your web stack and what the app needs. We'll suggest a setup and a first release that fits.

What happens next

  1. Tell us who will use the app and what it has to do.
  2. We suggest a first release and the approach that fits it.
  3. You get an estimate tied to a written first-release scope.
React Native app developmentDiscuss your app