React Native's pitch is compelling: one codebase, two platforms, shared logic with your web app. In 2025, that pitch is more credible than ever - largely because of the New Architecture that shipped in React Native 0.73.

What changed with the New Architecture

The New Architecture replaces the old bridge (a notorious performance bottleneck) with JSI - a direct JavaScript interface to native modules. The result is dramatically better performance for animations, gestures, and anything that needed frequent bridge crossings. If you tried React Native three years ago and found it sluggish, it's worth reconsidering.

Where React Native excels

Business apps, dashboards, content apps, e-commerce, anything that maps well to standard UI components. If your app is primarily forms, lists, and navigation - React Native will feel native, perform well, and save you significant time and budget versus two separate native codebases.

Where we'd still choose native

Apps with heavy graphics, complex custom gestures, ARKit/ARCore features, or anything that pushes the absolute limits of the platform. React Native has limits - and when you hit them, you pay for it in workarounds and performance hacks.

Our default stack

React Native with Expo (managed workflow for most projects, bare when we need more control), React Navigation, and Zustand for state management. Clean, well-supported, and fast to develop with. We've shipped multiple production apps on this stack with no regrets.