Mobile App Development Company

React Native Development

Near-native performance with React Native.

Delivery focus

Built to move from idea to production.

For teams that want fast iteration and easy long-term maintenance, our React Native development services deliver near-native performance with a JavaScript-based, shared codebase. The work sits inside Mobile App Development Company and is scoped, built, reviewed, and handed over as one engagement.

JavaScript codebase

Fast iteration

Easy maintenance

Near-native performance

Scope

ClickMasters builds production-grade React Native applications using the New Architecture JSI, Fabric renderer, and TurboModules for B2B companies across the USA, Europe, Canada, and Australia. TypeScript throughout. Zustand for state. WatermelonDB for offline data. Detox for E2E. EAS Build for CI/CD that produces iOS builds without a macOS runner. Both stores from one TypeScript codebase.

iOS and Android in TypeScript With the New Architecture That Eliminates the Bridge

ClickMasters builds production-grade React Native applications using the New Architecture JSI, Fabric renderer, and TurboModules for B2B companies across the USA, Europe, Canada, and Australia. TypeScript throughout. Zustand for state. WatermelonDB for offline data. Detox for E2E. EAS Build for CI/CD that produces iOS builds without a macOS runner. Both stores from one TypeScript codebase.

  • React Native is built and maintained by Meta (Facebook) used in production by Facebook, Instagram, Discord, Shopify, and Microsoft
  • React Native is the most widely adopted cross-platform framework by number of developers (Stack Overflow 2024)
  • Largest developer talent pool any React/TypeScript developer can contribute to a React Native project
  • React Native 0.76 (2024) ships the New Architecture as default eliminating the bridge that caused RN's performance limitations

React Native New Architecture Why It Matters

React Native's reputation for performance issues was largely earned by the Legacy Architecture a design where JavaScript and native code communicated via an asynchronous JSON bridge. Every time the JavaScript thread needed to call a native API (access the camera, update a view, call a sensor), it serialised the call to JSON, sent it across the bridge, waited for a response, and deserialised the result. This bridge was the performance bottleneck responsible for frame drops on complex animations and sluggish native module calls. The New Architecture, shipped in stable form in React Native 0.71 (2023) and made the default in React Native 0.76 (2024), eliminates the bridge entirely with three components: JSI (JavaScript Interface a direct C++ interface between JavaScript and native code, enabling synchronous calls without serialisation), Fabric (the new React Native UI renderer replaces the legacy UI Manager with a C++ component that renders synchronously and correctly handles concurrent React features), and TurboModules (lazy-loaded native modules that load only when first called, reducing startup time). The result is React Native that performs significantly closer to native than the legacy architecture and is compatible with React 18's concurrent features (Suspense, transitions, automatic batching).

✅ Is Your React Native Agency Building on the New Architecture?

The New Architecture is default in React Native 0.76+. If an agency's React Native work uses the legacy bridge architecture (you can identify this from their stack descriptions AsyncStorage as the primary storage, no mention of JSI or TurboModules, no EAS Build), they are building on deprecated patterns. ClickMasters builds all new React Native projects on the New Architecture and can migrate legacy codebases to the New Architecture as part of a modernisation engagement.

Expo Managed Workflow vs. Bare React Native Which to Choose

Expo is the most popular toolchain for React Native development. Understanding the two Expo approaches is important for buyers evaluating React Native.

  • Expo Managed Workflow: Limited native code access (cannot add arbitrary native code). Minimal setup complexity. OTA updates via Expo Updates. Build without Mac via EAS Build. When to use: standard requirements, smaller teams, fast prototype/MVP, teams without native mobile experience.
  • Bare React Native (or Expo Bare): Full native code access (write Kotlin/Swift directly). Higher setup complexity (Xcode + Android Studio required). OTA updates via EAS Update. Build without Mac via EAS Build (available for bare too). When to use: custom native code requirements, hardware SDK integration, maximum native performance, teams with native specialists.

What Is React Native?

React Native is an open-source framework developed by Meta (Facebook) for building native iOS and Android mobile applications using JavaScript and TypeScript, with the React component model. Unlike hybrid web apps wrapped in a WebView, React Native renders using actual native platform UI components iOS UIKit components on iOS, Android Material components on Android via a bridge (Legacy Architecture) or directly via JSI (New Architecture). The result is apps that look, feel, and perform like native apps while sharing a single JavaScript/TypeScript codebase across both platforms. React Native is used in production by Meta, Instagram, Discord, Shopify, and Microsoft. Its primary advantage over Flutter is language familiarity any React web developer can contribute to a React Native project with minimal ramp-up.

React Native State Management Zustand vs Redux Toolkit vs Jotai

State management is the most commonly debated React Native architecture decision. The answer has become clearer as the ecosystem has matured.

  • Zustand (Default): Very small bundle size (~3KB). Minimal boilerplate store in one function. Very low learning curve. Excellent TypeScript. Zustand Devtools compatible with Redux Devtools. Best for most new React Native projects simplicity, performance, easy async. ClickMasters default for all new projects.
  • Redux Toolkit: Medium bundle size (~15KB). Medium boilerplate (slices, actions, selectors). Medium learning curve. Excellent TypeScript. Redux Devtools best in class. Best for legacy codebases with existing Redux, complex state machines, large teams.
  • Jotai: Small bundle size (~8KB). Minimal boilerplate (atoms). Low learning curve. Excellent TypeScript. Jotai Devtools. Best for atomic state (fine-grained reactivity), similar to Recoil.
  • MobX: Medium bundle size (~16KB). Low boilerplate (observables + actions). Medium learning curve. Good TypeScript. MobX Devtools. Best for reactive programming advocates, complex derived state. Not recommended for new projects.

EAS Build Cloud iOS Builds Without a Mac

Expo Application Services (EAS) Build is one of the most valuable tooling improvements in the React Native ecosystem it enables building iOS apps in the cloud without requiring a macOS machine for every developer. EAS Build handles certificate and provisioning profile management automatically (no Fastlane match required), builds both iOS (.ipa) and Android (.apk/.aab) on cloud infrastructure, and distributes directly to TestFlight and Play Store internal testing. GitHub Actions trigger EAS builds on merge to main a complete CI/CD pipeline without a self-hosted macOS runner.

  • Cloud iOS builds: Windows or Linux developers can trigger iOS builds without a Mac eliminating the macOS machine requirement from the CI/CD pipeline
  • Automatic code signing: No Fastlane match required EAS manages certificates and provisioning profiles automatically in the cloud
  • Internal distribution: EAS builds can be distributed directly to TestFlight (iOS) and Play Store internal track (Android) after a successful build
  • EAS Update (OTA): Push JavaScript bundle updates to users instantly without going through App Store review within Apple's guidelines for bug fixes and minor feature changes
  • Build profiles: Development (local dev client), preview (internal testing, no store), production (signed, store-ready) build profiles in eas.json
  • GitHub Actions integration: Trigger EAS builds via GitHub Actions on PR or push to main builds and distributes to test tracks automatically

What this engagement delivers

React Native (New Architecture)

JSI + Fabric + TurboModules eliminates legacy bridge. TypeScript, Zustand, TanStack Query, WatermelonDB, MMKV. Hermes engine.

Expo-First Development

Managed Workflow with Expo Router. EAS Build (cloud iOS without macOS), EAS Submit, EAS Update (OTA JS updates).

React Native Enterprise Apps

SSO (react-native-app-auth), certificate pinning, biometrics (react-native-biometrics), MDM compatibility (Intune), offline-first WatermelonDB.

Native TurboModule Development

JSI-based custom modules via Codegen spec. Fabric Native Components. Synchronous native access with no bridge overhead.

React Native MVP

Expo Managed or Bare. Firebase Auth, Zustand, TanStack Query, FCM push, EAS Build, both stores. 8-12 weeks.

RN Performance Optimisation

Bundle analysis, re-render profiling, New Architecture migration, AsyncStorage→MMKV migration, Hermes optimisation.

Process

  1. Phase 1 · Week 1

    Architecture Design

    Expo Managed vs Bare decision, New Architecture confirmation, Zustand default, React Navigation 6 vs Expo Router, MMKV+WatermelonDB vs lighter, EAS Build profile setup, both store accounts. Deliverable: React Native Architecture Document.

  2. Phase 2 · Week 2-4

    Design & Component System

    Figma designs (390pt iOS, 360dp Android). Platform-adaptive design decision. React Native Paper or custom system. Dark mode (Appearance API). Safe area handling.

  3. Phase 3 · Week 3-10

    Core App Development

    TypeScript functional components, React Navigation auth flow, Zustand store with MMKV persistence, Axios auth interceptor, TanStack Query config, WatermelonDB schema, Firebase config. react-native-reanimated animations.

  4. Phase 4 · Week 7-11

    Native Modules & Features

    Push notification permissions, biometric auth, in-app purchases (RevenueCat), deep links (Universal Links + App Links), custom TurboModules, background processing.

  5. Phase 5 · Week 9-12

    Testing & QA

    Jest + RNTL unit/component, MSW API mocking, Detox E2E (critical flows), Maestro regression, Hermes bytecode analysis, device testing (iPhone 15, SE, Galaxy S, budget Android).

  6. Phase 6 · Week 11-13

    EAS Build → Both Stores

    EAS Build production profiles, automatic code signing, TestFlight external beta, Play Store open testing, staged rollout, EAS Update OTA channel. 30-day support.

Tech stack

Core
React Native New Architecture (0.76+), TypeScript strict, React 18, Metro, Hermes JS engine
Navigation
React Navigation 6 (Stack/Tab/Drawer), Expo Router (file-based for Expo apps)
State Management
Zustand (primary immer, persist), Redux Toolkit (legacy), TanStack Query (server state)
Storage
MMKV (key-value 10x AsyncStorage), WatermelonDB (relational offline-first), react-native-keychain
Networking
Axios (interceptors, retry), TanStack Query, fetch (simple cases)
Push & Analytics
@react-native-firebase/messaging, react-native-push-notification, firebase/analytics + crashlytics, Sentry
Native Modules
New Architecture TurboModules (JSI + Codegen), react-native-reanimated, react-native-vision-camera
CI/CD & Testing
EAS Build, GitHub Actions, Jest + RNTL, Detox, Maestro, MSW

How we work

Architecture

New Architecture (JSI + Fabric + TurboModules) | Legacy: Async bridge (pre-0.71)

State Management

Zustand (minimal boilerplate) | Legacy: Redux (heavy boilerplate)

Data Storage

WatermelonDB + MMKV | Legacy: AsyncStorage (deprecated)

CI/CD

EAS Build cloud iOS builds without macOS | Legacy: Self-hosted macOS runners

Testing

Detox + Maestro E2E | Legacy: Manual testing only

Where this is used

B2B Field Service

Offline-first React Native with WatermelonDB. Zustand for state. New Architecture for performance. Single TypeScript codebase deploys to iOS and Android fleets.

E-commerce & Retail

iOS + Android commerce apps from one codebase. TanStack Query for cart/purchases. RevenueCat for in-app purchases. EAS Build CI/CD.

Healthcare & Wellness

react-native-biometrics for secure access. Realm or WatermelonDB for patient data. New Architecture TurboModules for HealthKit/Health Connect integration.

Startup MVPs

Expo Managed workflow. Firebase Auth + Firestore. Zustand. EAS Build to both stores. 8-12 weeks from concept to TestFlight + Play Store internal track.

Pricing guidance

These ranges are planning anchors. The quote names scope, timeline, and what is excluded. Talk through a quote.

React Native Scoping

$2,000 - $5,000

1 week

Architecture, Expo vs bare, state management, native module map

React Native MVP (Expo)

$15,000 - $35,000

8 - 12 weeks

Expo Managed, TypeScript, Firebase, EAS Build, both stores

React Native MVP (Bare)

$18,000 - $40,000

8 - 12 weeks

Bare/New Architecture, Zustand, WatermelonDB, both stores

Consumer App (Full)

$25,000 - $60,000

9 - 14 weeks

Full features, RevenueCat IAP, custom animations, Detox E2E

Enterprise App

$28,000 - $70,000

10 - 15 weeks

SSO, offline-first, MDM, TurboModules, certificate pinning

Native TurboModule Dev

$8,000 - $25,000

3 - 6 weeks

JSI + Codegen spec, New Architecture compatible, both platforms

New Architecture Migration

$10,000 - $35,000

4 - 8 weeks

Legacy bridge → JSI + Fabric + TurboModules migration

RN Legacy Modernisation

$10,000 - $30,000

4 - 8 weeks

TypeScript, Zustand, MMKV, New Architecture, test coverage

React Native Retainer

$2,500 - $7,000/mo

Ongoing

OS updates, store compliance, feature dev, crash monitoring

FAQs

What is React Native?

React Native is an open-source framework developed by Meta (Facebook) for building native iOS and Android mobile applications using JavaScript and TypeScript, with the React component model. Unlike hybrid web apps wrapped in a WebView, React Native renders using actual native platform UI components iOS UIKit components on iOS, Android Material components on Android via a bridge (Legacy Architecture) or directly via JSI (New Architecture). The result is apps that look, feel, and perform like native apps while sharing a single JavaScript/TypeScript codebase across both platforms. React Native is used in production by Meta, Instagram, Discord, Shopify, and Microsoft. Its primary advantage over Flutter is language familiarity any React web developer can contribute to a React Native project with minimal ramp-up.

What is the React Native New Architecture?

The React Native New Architecture is a complete re-engineering of how React Native's JavaScript layer communicates with native iOS and Android code, shipped as default in React Native 0.76 (2024). It consists of three components: JSI (JavaScript Interface) a direct C++ bridge between JavaScript and native code that enables synchronous calls without JSON serialisation, eliminating the asynchronous message-passing overhead of the Legacy Architecture; Fabric the new React Native UI renderer that replaces the legacy UIManager with a C++ implementation that renders synchronously and supports React 18's concurrent features; and TurboModules lazy-loaded native modules that initialise only when first called, reducing app startup time. The New Architecture delivers significantly improved performance for animations, reduces bridge latency, and enables React Native to support React 18 features like Suspense and automatic batching.

Should I use Expo or bare React Native?

Expo Managed Workflow is the right choice for: projects where all required APIs exist within the Expo SDK, teams without native iOS/Android expertise, MVPs where development speed matters more than native customisation, and projects that benefit from OTA updates (EAS Update pushes JavaScript bundle changes without App Store review). Bare React Native (or Expo Bare) is the right choice for: apps requiring native code that is not in the Expo SDK, custom native module development, enterprise apps requiring specific MDM configuration, and projects where the team includes native mobile developers who need direct access to Kotlin/Swift. EAS Build works with both the CI/CD advantage of Expo (cloud iOS builds without macOS) is available regardless of whether you use the Managed or Bare workflow.

How much does React Native app development cost?

React Native app development costs range from $2,000 for a scoping session to $70,000 for a full enterprise app with SSO, offline-first architecture, and custom TurboModule development. A React Native MVP costs $15,000-40,000 depending on whether Expo Managed or Bare is used and the feature scope. A full consumer app costs $25,000-60,000. An enterprise app with offline-first data, SSO, and MDM compatibility costs $28,000-70,000. New Architecture migration of an existing legacy React Native app costs $10,000-35,000. Both stores are included as standard on all engagements.

What is EAS Build and do I need it?

EAS (Expo Application Services) Build is Expo's cloud build service for React Native apps it compiles iOS and Android builds in the cloud without requiring a macOS machine for iOS builds. It is not strictly required for React Native development (you can build iOS locally with Xcode and a Mac, and Android locally with Android Studio), but it significantly reduces CI/CD complexity and cost: no macOS runners in CI, automatic certificate and provisioning profile management, and one-command distribution to TestFlight and Google Play. ClickMasters uses EAS Build for all React Native projects regardless of whether Expo Managed or Bare workflow is used it is the most cost-effective path to automated iOS builds in a CI/CD pipeline.

What is WatermelonDB and why use it instead of AsyncStorage?

WatermelonDB is a high-performance SQLite database library for React Native, designed for building offline-first applications with large data sets. It uses lazy loading (only data that is actually rendered is loaded into memory), reactive queries (database queries return Observable results that automatically update the UI when underlying data changes), and is optimised specifically for React Native's bridge (or JSI in New Architecture). AsyncStorage is React Native's original built-in key-value storage it stores serialised JSON strings and has no querying capability. AsyncStorage has been deprecated as a default package and extracted to @react-native-async-storage it is appropriate only for simple key-value configuration data. For any app storing structured data (user records, orders, inventory, content), WatermelonDB delivers superior performance and query capability. MMKV (from WeChat's team) is the recommended replacement for AsyncStorage for simple key-value storage it is synchronous, encrypted, and 10x faster.

How do you test React Native apps?

React Native testing uses a layered approach. Unit tests with Jest and React Native Testing Library (RNTL): test individual components in isolation, render components and assert on their output, mock native modules via jest.mock. API mocking with MSW (Mock Service Worker) intercept network requests in tests rather than mocking fetch/Axios directly. E2E tests with Detox: grey-box testing (Detox has knowledge of React Native's JavaScript state, enabling more deterministic tests than pure black-box UI automation), runs on real iOS Simulators and Android Emulators, tests the actual app binary. Maestro: YAML-based E2E flows that are faster to write than Detox tests, good for smoke testing critical paths. ClickMasters maintains a minimum of 70% code coverage on business logic and Detox tests for all critical user flows before production release.

Can React Native apps access hardware like Bluetooth and NFC?

Yes. React Native accesses platform hardware via Native Modules (Legacy Architecture) or TurboModules (New Architecture). For common hardware APIs, mature community libraries exist: Bluetooth LE via react-native-ble-plx (most feature-complete BLE library for React Native), NFC via react-native-nfc-manager, camera via react-native-vision-camera (New Architecture compatible, supports frame processors for real-time image processing), GPS via @react-native-community/geolocation or Expo Location, and biometrics via react-native-biometrics. For hardware-specific SDKs without community packages (industrial scanner SDKs, payment terminals, proprietary peripherals), ClickMasters writes custom TurboModules using the New Architecture Codegen specification type-safe, JSI-based native modules that call platform SDKs directly from the JavaScript thread without bridge serialisation overhead.

Related reading

React Native Development is one line inside Mobile App Development Company. Teams with an adjacent problem often compare it with Custom Mobile App Development and Mobile App Development. For a written delivery narrative, read the SaaS booking platform QA case study and the rest of the case studies.