React Native makes it possible to build iOS and Android applications with React and a shared JavaScript/TypeScript codebase. This does not mean “one codebase with no exceptions”: some behavior, integrations, and UI can still be platform-specific.

How to Start a New Project

Current React Native documentation recommends using a framework, including Expo, for new applications. This approach provides routing, access to common native APIs, and tools for building and updating from the start.

When a Native Environment Is Needed

If a project has specific constraints or requires direct work with native code, React Native can be used without a framework. Android then requires Android Studio and the relevant SDK, while local iOS builds require macOS and Xcode.

What Can Actually Be Reused

Business logic, API work, types, part of state management, and a significant portion of components can be shared. At the same time, permissions, push notifications, deep links, background tasks, payments, and platform-specific UI patterns should be tested separately on each platform.

When React Native Is a Good Fit

  • the team already has strong React/TypeScript expertise;
  • you need to support two mobile platforms efficiently;
  • the product does not depend on a large amount of custom native code;
  • shared product logic across platforms is important.

When to Evaluate Alternatives

If the application integrates deeply with platform APIs, has strict requirements for specialized graphics, or large native teams already exist, separate native applications may be easier to maintain in the long term.

Source: React Native — Get Started.