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

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
| Option | Language | iPhone and Android from one codebase | Best for |
|---|---|---|---|
| ARKit (Swift) plus ARCore (Kotlin) | Swift and Kotlin | No, two apps | Teams that want the newest platform features on one OS first |
| Unity with AR Foundation | C# | Yes | Game studios and teams already in Unity |
| WebXR and WebAR (Three.js, A-Frame) | JavaScript | Partly, browser support varies (iPhone Safari has no WebXR AR) | Short campaigns where a link matters more than performance |
| ViroReact by ReactVision | TypeScript and React Native | Yes, native ARKit and ARCore | App teams, React developers, and anyone building with an AI coding agent |
How to choose
Ask three questions.
- 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.
- 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.
- 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 installOr add ViroReact to an existing React Native or Expo app:
npm install @reactvision/react-viroViroReact 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.