Building VR Apps for Meta Quest: A Step-by-Step Guide with React Native
Introduction
React Native has empowered developers to reuse code across platforms for years. With the announcement at React Conf 2025, this capability now extends to Meta Quest VR headsets. Meta Quest runs on Meta Horizon OS, an Android-based system, so your existing React Native Android knowledge transfers seamlessly. This guide walks you through setting up your first app, using Expo Go for rapid prototyping and development builds for native features, all while keeping a natural, engaging workflow.
What You Need
- A Meta Quest headset (Quest 2, Quest 3, or Quest Pro) with updated firmware.
- A computer with Node.js (LTS) and npm installed.
- The Expo CLI—install globally via
npm install -g expo-cli. - (Optional) Android Studio for advanced native module debugging.
- A stable Wi-Fi connection between your computer and headset during development.
- Patience for initial setup; your first build may take a few minutes.
Step-by-Step Instructions
Step 1: Install Expo Go on Your Meta Quest
Expo Go is available on the Meta Horizon Store. Search for “Expo Go” and install it directly on your headset. This app acts as a development client, allowing you to test code changes instantly without full builds. If you cannot find it, side-load the APK from the Expo website—but the official store method is simplest.
Step 2: Create a New Expo Project
Open a terminal on your computer and run:
npx create-expo-app@latest my-quest-app
cd my-quest-appNo special template is needed—the standard Expo project works out of the box. This creates a React Native app with all dependencies.
Step 3: Start the Development Server
Launch the Expo dev server with:
npx expo startA QR code will appear in the terminal. Keep this terminal open; it enables live reloading and debugging.
Step 4: Connect Your Quest via Expo Go
Put on your Meta Quest headset and open Expo Go. Select Scan QR Code and point the headset camera at the QR code on your computer screen. The app will load in a new window—you may need to adjust the window size by grabbing its edges with the controllers. Your code is now running on the headset.
Step 5: Iterate with Live Reloading
Edit any file (e.g., App.js) in your project. Save the file, and the app will automatically reload on the headset—just like on a phone. Use this rapid cycle for early prototyping: tweak layouts, test interactions, and verify performance.
Step 6: Create a Development Build for Native Features
Expo Go is great for basics, but for native modules (e.g., custom VR hand tracking or controllers) you need a development build. Run:
npx expo prebuild --platform androidThis generates an Android project inside android/. Then build with EAS or locally:
- EAS Build:
npx eas build --platform android --profile development apk - Local: Open the
android/folder in Android Studio and run on a connected device (useadbover Wi-Fi).
Install the resulting APK on your headset. Now you can add platform-specific code using react-native native modules or Expo's config plugins.
Step 7: Adapt Design for VR
Meta Quest apps are not flat screen windows—they live in 3D space. Consider these UX shifts:
- Use immersive mode (hide system bars) via
react-native-immersive-mode. - Prefer gaze-based or controller ray interactions over touch.
- Optimize for 90+ FPS; disable heavy animations and reduce draw calls.
- Use
Platform.selectto handle VR-specific components differently from mobile.
For a deeper dive, see the Tips section below.
Tips for Success
- Test on device early—the Quest emulator is slow; use a real headset for realistic performance.
- Keep the headset connected via Wi-Fi to avoid USB tethering issues; use
adb connectfor native builds. - Leverage Expo's config plugins to automate Android manifests (e.g., VR mode enablement).
- Debug with Chrome DevTools:
npx expo start --webshows a web UI with console, but for VR you'll rely on device logs viaadb logcat. - Respect the 3D space—avoid putting interactive elements at the edges of the user's view.
- Join the community: the Meta Horizon Dev Forums and React Native Discord have helpful VR channels.
With these steps, you're ready to build and ship React Native apps for Meta Quest. The tools are familiar—the possibilities are infinite.
Related Articles
- React Native 0.78: A New Era with React 19 and Enhanced Platform Support
- Why We Built a High-Performance Analytics Service Entirely in Swift: The TelemetryDeck Story
- React Native 0.81 Released: Mandatory Android 16 Edge-to-Edge, Deprecated SafeAreaView, and Faster iOS Builds
- Decoding Nothing's Pokémon Hints: A Step-by-Step Guide to Predicting Their Next Product
- Implementing Under-Display Face Authentication with Metalenz Polar ID: A Step-by-Step Guide
- Google Home Restores Full RGB Light Color Controls After April Bug
- Holographic Horizons: Inside the Rumored 'Spatial iPhone' and Next-Gen 3D Displays
- Flutter Embraces Swift Package Manager: What You Need to Know About the Upcoming Shift