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

Authors
Jan Jaworski
Software Engineer
@
Callstack

Hello, there!

Now that you know how to develop React Native apps for Meta Quest and have a clear idea of what you want to build, the next question is a practical one: how do you publish it to users?

Worry not, as we’re here to answer it! Today, we’ll take a look at the next few pieces of the Meta Quest puzzle: preparing a production build, submitting it to the Meta Horizon Store, and presenting your app in a way that meets the platform’s standards.

Prerequisites

Building

The first thing that you have to do is to build your app. We’ve covered the basics of building for Meta Quest in a previous article, but what we haven’t discussed there how to create a production build and where to find the build APK. Now’s the time to do that.

Before you create your production build, make sure to use the expo-horizon-core plugin, so that your app builds meet store requirements.

The easiest way to do it is to run from your terminal in your project folder:

npx expo run:android --variant questRelease

After your build is done, you should be able to find it at:

android/app/build/outputs/apk/quest/release/

Alternatively, you can use Expo EAS services to build your app. At the moment, EAS doesn’t integrate directly with the Meta Horizon Store, so you won’t be able to publish it automatically. However, you can still download your production build output and upload it manually or integrate with a CI/CD solution of your choice to grab build artifacts and upload them to the store.

Here’s how to configure your eas.json to build .apk with Meta Quest-specific settings:

{
		...
    "production-quest": {
      "android": {
        "gradleCommand": ":app:assembleQuestRelease"
      }
    }
    ...
}

Run the build with eas build --profile production-quest --platform android.

It will show up as an Android build, but you can download and sign it for Meta Horizon submission:

To automate your workflow, you can experiment with expo-github-action, grab the build artifact, and use the upload-meta-quest-build action to publish it automatically to the store.

Publishing

The next step is setting up your Developer Account. The submission process is similar in spirit to App Store or Google Play, but with Quest‑specific requirements.

We recommend using the Meta Quest Developer Hub desktop application, as it makes the submission process much easier. Follow Meta’s submission flow:

  • Verify guidelines: expo-horizon-core takes care of build manifest and prohibited permissions, but make sure to verify other regulatory requirements. Check VRC Guidelines for a complete list of items that you need to verify when submitting your app.
  • Sign your application: If you use Expo EAS, you can skip this step as they take care of it for you, otherwise follow instructions from Meta documentation.
  • Upload app build: The easiest way to do it is through Meta Quest Developer Hub.
  • Create release channels (optional): Useful for testing before production release.

Before you’re able to submit your apps to the Meta Horizon Store, you’ll have to complete all regulatory actions on the Meta Horizon Developer Dashboard.

After you complete all regulatory requirements. It’s time to create and submit your app build.

Go to “App Distribution” tab and press on “Create a new app“. It will open the Meta Horizon Developer Dashboard, where you can fill out all the necessary information.

Go back to the Meta Quest Developer Hub and click on the name of your newly created app.

Select which track you want to use to upload your production build .apk. Ensure that your build meets all the necessary requirements.

You’re now ready to start submission. Fill out all the necessary information, submit, and wait for review.

App screenshots

Screenshots are an important part of showing your app on the Meta Horizon Store. Taking good screenshots in VR is a bit tricky compared to mobile, so we’ve come up with a few tips and tricks to help you make your app look great and stand out among others.

Start with the official Meta guidelines to understand the required formats.

One of the challenges is aligning your viewport so the app fills most of the captured image. What you see in the headset and what appears in a 2D screenshot often differ, which makes framing tricky. To make this more consistent, install the Meta Quest Developer Hub. In addition to offering some nice development-supporting features, it lets you cast your headset view and trigger screenshots directly, giving you a clear preview for alignment. Also, enable Immersive Home to keep the background clean and well-lit (better keep the messy room hidden).

To preview your Meta Quest viewport, connect your device via USB. You’ll see it listed under the Device Manager tab. If it doesn’t appear, select Set Up New Device from the dropdown.

Once connected, you’ll see a list of Device Actions. These tools support development, debugging, and performance profiling. For screenshots, focus on the Cast Device feature, though it’s worth exploring the other tools as well.

‍

After enabling casting, a new window opens with a live preview of your viewport. You can adjust the proportions, tweak additional settings, and use the controls at the bottom to capture screenshots, record video, or even interact using your mouse and keyboard.

Our recommended way of taking screenshots is to select 2D app view, so that the interface is the only element captured and can be embedded into the background of your choice.

If you’re looking for inspiration on how to make great screenshots, take a look at apps like Instagram and WhatsApp.

Source: https://www.meta.com/en-gb/experiences/instagram/6894135610696226/

Monetization

There are multiple ways to monetize your app on Meta Horizon Store.

As we’re focusing on regular apps, we’ll skip the topics related to game monetization, like DLCs and microtransactions, as they are rarely used in other areas. Still, if you want to explore all monetization options on Meta Quest, make sure to check out Meta’s official documentation.

For typical applications (not games), you can go for:

  • One‑time purchase
  • Subscriptions (for SaaS‑style apps)
  • Try Before You Buy (TBYB), which allows users to test your app for 15–30 minutes before purchasing

TBYB is especially useful because it encourages conversions without requiring you to implement your own trial system. It’s a unique feature in Meta Horizon Store that you won’t find in App Store or Google Play.

If you need in‑app purchases, you can use expo-iap, which we discussed previously. In case you want to go with a different solution or implement your own, you can integrate directly with the Meta IAP SDK or the Meta Horizon Billing Compatibility SDK.

Meta offers a wide range of pricing strategies to help you optimize and reach a broader audience, ultimately increasing conversions. You can implement A/B testing, regional pricing, sales, bundles, and preorders.

Summary

Publishing your app to the Horizon Store can feel like a large task, but it becomes manageable once you understand the steps. Don’t expect things to go fast; review times can take up to two weeks, so plan ahead and ensure your submission follows all guidelines. With a solid build, well‑prepared assets, and careful attention to the process, your app will have a strong chance of being approved.

Ready to put your ideas into action? Meta’s Developer Competition is open now. Build something with React Native for a chance to win $25,000. There’s a $1.5 million total prize pool and multiple categories to explore, so find your niche and start creating.

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

Dec 4Live Stream

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

See Meta Quest used as a practical dev setup and watch the team build and test React Native features directly inside a VR workspace.

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 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

Oct 8Article

Learn Once, Write for VR: A React Native Showcase for Meta's HorizonOS

Learn how a React Native app was built for Meta's HorizonOS, proving its viability for creating performant, cross-platform mixed reality experiences.

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.