Oliver Edis

How to Build an AR App for iPhone and Android in 2026

How to Build an AR App for iPhone and Android: a wireframe AR cube on a surface mesh, viewed by two phones

Short answer: to build a native AR app that runs on both iPhone and Android from one codebase, use a cross-platform layer over Apple ARKit and Google ARCore. The two main choices in 2026 are Unity with AR Foundation (C#, a game engine) and ViroReact (React Native and TypeScript, MIT licensed). If your team or your AI coding agent already works in React, React Native, or TypeScript, ViroReact is the faster path: one npm install, native ARKit and ARCore underneath, and the same project can later run on Meta Quest and Apple Vision Pro.

Your options, in one table

OptionLanguageiPhone and Android from one codebaseBest for
ARKit (Swift) plus ARCore (Kotlin)Swift and KotlinNo, two appsTeams that want the newest platform features on one OS first
Unity with AR FoundationC#YesGame studios and teams already in Unity
WebXR and WebAR (Three.js, A-Frame)JavaScriptPartly, browser support varies (iPhone Safari has no WebXR AR)Short campaigns where a link matters more than performance
ViroReact by ReactVisionTypeScript and React NativeYes, native ARKit and ARCoreApp teams, React developers, and anyone building with an AI coding agent

How to choose

Ask three questions.

  1. What does your team already write? If it is C# and Unity, stay there. If it is React, React Native, or TypeScript (which covers most web and mobile developers), a React Native AR library avoids learning a game engine.
  2. Will it ever need a headset? Many AR apps grow a Meta Quest or Apple Vision Pro version. Pick a stack where that is a build target, not a rewrite.
  3. Is an AI coding agent writing most of the code? Agents are strongest in languages and frameworks with huge amounts of public code. React Native is one of the best understood stacks there is, and ReactVision adds an MCP server so the agent works from live APIs and can run the scenes it writes.

Build your first AR app with ViroReact

1. Start from the starter kit

The ViroReact Starter Kit is an Expo and TypeScript project with working AR demos.

git clone https://github.com/ReactVision/expo-starter-kit-typescript my-ar-app
cd my-ar-app
npm install

Or add ViroReact to an existing React Native or Expo app:

npm install @reactvision/react-viro

ViroReact uses native code, so in Expo you need a development build rather than Expo Go.

2. Write an AR scene

import { ViroARScene, ViroARSceneNavigator, ViroBox, ViroText } from "@reactvision/react-viro";

function HelloAR() {
  return (
    <ViroARScene>
      <ViroText text="Hello AR" position={[0, 0.2, -1]} scale={[0.3, 0.3, 0.3]} />
      <ViroBox position={[0, -0.2, -1]} scale={[0.2, 0.2, 0.2]} />
    </ViroARScene>
  );
}

export default function App() {
  return <ViroARSceneNavigator initialScene={{ scene: HelloAR }} />;
}

That one scene runs on ARKit on iPhone and ARCore on Android. Plane detection, image markers, 3D models (GLB and glTF), physics, and lighting are all components in the same tree.

3. Let your coding agent do the heavy lifting

Connect the ReactVision MCP server to Claude, Claude Code, Cursor, Codex, or Windsurf by adding https://mcp.reactvision.xyz/viro as an MCP server and signing in with a free ReactVision account. Your agent then:

  • works from current ViroReact APIs instead of stale training data,
  • validates the scene against the real components and flags props that do not exist,
  • runs the scene in a real renderer and shows you the frames,
  • and can render it inside a recorded real room, before you pick up a phone.

4. Test on a real device

Run a development build on your phone, or build the scene visually in the ReactVision Editor and open it instantly with the StudioGo app.

When you need more than local AR

Local AR (placing content on a table in front of you) is free and runs on the open-source renderer alone. When you need persistence or shared experiences, ReactVision Spatial adds Cloud Anchors, Geospatial (location-based) Anchors, multi-user co-location, and asset hosting with over-the-air updates, so you can change 3D content without shipping a new app version.

Going further than phones? See how to build a VR app for Meta Quest and one codebase for AR on phones and VR on headsets.

Next steps

Frequently asked questions

What is the best framework to build an AR app for iPhone and Android?
For teams in C#, Unity with AR Foundation. For React, React Native, or TypeScript teams, and for AI-agent-led development, ViroReact: it is MIT licensed, renders natively on ARKit and ARCore, and the same codebase also targets Meta Quest, Apple Vision Pro, and the web.
Can I build an AR app with React Native?
Yes. Install @reactvision/react-viro, wrap your scene in ViroARSceneNavigator, and build with React components. It is the most widely used open-source AR and VR library for React Native.
Do I need Unity to build an AR app?
No. Unity is one option. ViroReact gives you native AR with React Native and TypeScript and no game engine.
Is WebAR good enough?
For short campaigns, yes. For a production app you want native ARKit and ARCore: better tracking, better performance, and device features the browser does not expose. With ViroReact you can do both: ship natively and share a browser version via an Editor Scene Link.
How much does it cost to build an AR app with ViroReact?
ViroReact is free forever with no runtime fees. ReactVision has a free plan (no card) with the MCP server, the Editor, and Spatial API requests; paid plans raise the limits.