React Native on Meta Quest: What We Learned About Building for VR

Featuring
Łukasz Chludziński
Engineering Manager
@
Callstack
Kewin Wereszczyński
Software Engineer
@
Callstack
Jan Jaworski
Software Engineer
@
Callstack

This session is focused on Meta Quest as a VR device and what makes it a compelling environment for developers. It is an Android-powered system wrapped in an immersive interface, which makes the path from traditional mobile development to VR less daunting than expected.

Jan is our guest for this episode, as he is the most experienced with the platform. He led the demonstration, bringing three months of hands-on experience building with the device and sharing what he learned while writing about the platform.

Meta Quest VR experience in general

On Meta Quest, every screen can be resized, repositioned, or centered to focus on the task at hand. The interaction feels physical: you point at a corner, grab the handle, and stretch the window to the scale you want. Even though the viewers saw a slightly distorted perspective through the stream feed, Jan confirmed that inside the headset the curved UI reads naturally. Input flexibility is a highlight. Developers can switch between hand tracking, controllers, a mouse, or a keyboard.

Developer experience: using Meta Quest as a development platform

The practical demonstration showed how quickly Meta Quest can become a working development setup. Casting a MacBook screen into VR creates a set of virtual desktops where the editor, terminal, and browser run as usual. The responsiveness is surprisingly good: fluid enough that Jan used it for his daily work.

From there, the workflow mirrors standard React Native development. Expo Go can be installed directly from the Meta store, and a new project behaves like any other mobile app. After running the project from the Mac’s terminal, the app appears inside Quest as another VR window. It can be resized, pushed aside, or centered while remaining interactive through hand tracking, a mouse, or controllers.

The team emphasized that the platform-specific details covered in the stream are also documented in their articles, so developers can follow the same setup independently.

Advanced use case: live-coding the camera app

For the second half of the stream, the team built a small camera demo to see how far a common mobile pattern can be taken inside VR. They initialized an Expo app, added react-native-vision-camera, and wired it to the device’s available camera feed.

The surprise came when Jan switched to the front-facing camera. Instead of showing his real face, the feed surfaced his Shrek avatar, thanks to Quest’s virtual camera pipeline.

The unexpected result elevated the demo from a technical exercise to a moment of discovery about how VR layers real input, passthrough features, and avatar systems. It also illustrated how familiar React Native tools adapt in surprising ways once they run inside a headset environment.

Wrap-up

The stream closed with reflections on how approachable VR development becomes when the environment feels familiar. Meta Quest’s Android base, flexible input system, and integration with Expo and React Native bring down the barrier to entry. The team highlighted that you can experiment with standard mobile patterns (navigation, gestures, camera access) and see them respond inside a three-dimensional workspace. For developers curious about VR but unsure where to start, the message was clear: the tools you use today already take you most of the way there.

‍

Watch the full recording to see each demo step in action and explore additional guides on bringing React Native apps to Meta Quest.

Insights

Learn more about Virtual Reality

cover

Oct 15Article

Multi-Window React Native Apps With the Meta VR Layout SDK

Build multi-window React Native apps for Meta Quest with the Meta VR Layout SDK. Learn shared state, fallbacks, positioning, and simulator testing.

cover

Dec 8Article

Mobile vs. VR: Key Differences in Features, UI, and UX

Explore how VR reshapes layout behavior, typography, spacing, accessibility expectations, and interaction patterns in React Native.

cover

Nov 26Podcast

Bringing React Native to VR on Meta Quest

Learn how Meta Quest uses React Native for 2D panels in 3D spaces, why AOSP matters, and how developers can bring existing RN apps to VR with minimal friction.

cover

Nov 20Article

How to Release a React Native App on the Meta Horizon Store

Learn how to build, submit, and publish your React Native app on the Meta Horizon Store.

cover

Nov 6Article

What You Can Build With React Native on Meta Quest

Get React Native app ideas for Meta Quest, inspired by Meta's $1.5M developer competition. Explore VR/MR concepts for meditation, games, and social apps.

cover

Oct 30Article

Using Expo Libraries on Horizon OS: A Guide to Compatibility

Learn how to use Expo libraries for React Native development on Meta's Horizon OS. This guide covers compatibility differences, what works out-of-the-box, and what requires specific alternatives like expo-horizon-core and expo-iap.

cover

Oct 22Article

Getting Started With Expo on Meta Quest

Start building React Native apps for Meta Quest with Expo. This guide details the setup using Expo Go for fast iteration and explains how to use development builds for full native capabilities on Met Horizon OS.

cover

Mar 19Tutorial

The Hard Way vs. The React Native AI SDK Way: Stop Writing Custom Modules for Every Model

Learn how React Native AI uses a unified provider model to switch between cloud and on-device LLMs without rewriting application logic, enabling reliable AI experiences online and offline.

cover

Mar 12Tutorial

Build Smarter Apps: Tool Calling & AI Orchestration Explained

Learn how on-device models in React Native can call tools, interact with external APIs, and return structured outputs you can use directly in application logic.

cover

Mar 5Tutorial

MLC LLM + React Native: On-Device AI Without the Pain

Learn how to run third-party on-device LLMs in React Native using MLC LLM. Choose your models, run them efficiently across platforms, and keep a unified JavaScript API with React Native AI.

cover

Feb 24Tutorial

Intelligent Fallbacks with Apple Intelligence in React Native

Learn how to use Apple’s built-in Foundation Models in React Native apps, reduce memory usage, and enable fast, fully on-device AI with React Native AI Apple.

cover

Feb 10Tutorial

What Is the React Native AI SDK? A Complete Intro & Quickstart

Learn why on-device AI matters for React Native apps, how local LLMs behave offline, and what problems React Native AI is designed to solve from day one.

cover

Jan 29Tutorial

Implementing an Android TurboModule with Kotlin

Learn how to implement a React Native TurboModule on Android, from the TypeScript spec and Codegen to the Kotlin implementation and package registration.

cover

Jan 19Tutorial

Working with Different Threads in Swift TurboModules

Learn how JavaScript, native module, background, and main threads interact in React Native TurboModules, and how to use GCD queues to run async work safely in Swift.

cover

Jan 9Tutorial

How to Add Type-Safe Constants to Swift TurboModules

Learn how to expose typed, immutable constants from a Swift TurboModule using Codegen, and get full end-to-end type safety between native and JavaScript.

cover

Dec 30Tutorial

Adding Event Emitters to Your TurboModule in Swift

Learn how to emit native events from a Swift TurboModule and subscribe to them in JavaScript, including proper memory management and Codegen integration.

cover

Dec 22Tutorial

Writing Your First TurboModule in Swift

Learn how to build a fully working TurboModule in Swift, integrate it with Codegen, and bridge it through Objective‑C inside an Expo app.