Develop

Host your web experience

Updated: Sep 23, 2026

Overview

After you build a WebXR or 2D web experience for Meta Quest, host it at a publicly accessible URL. Meta Quest Browser loads the experience from that URL, the same way any browser loads a website.
This page covers what a host has to provide, names two options, then walks through one deployment with Vercel.

Requirements

  • Serve the site over HTTPS from a publicly accessible origin.
  • Serve the static files that your build produces.
Web Launch accepts HTTPS targets, so an HTTPS origin also lets you send the experience to a headset.

Choose a host

Any host that meets the requirements works. For example:
  • GitHub Pages publishes the static build from a repository, using a GitHub Actions workflow.
  • Vercel deploys from the command line and creates the project on the first deploy. The rest of this page walks through it.

Deploy with Vercel

Set the Vite base path

Vercel serves the site from the domain root, so keep Vite’s default base of "/". You do not need to set base for a root deployment.
If instead you serve the site from a subdirectory, set base to that explicit path so static assets resolve correctly:
// vite.config.js
export default { base: "/subpath/" };

Run the deploy

Confirm which account the Vercel CLI is signed in to:
npx vercel@latest whoami
Deploy to production in the current scope:
npx vercel@latest deploy --prod --yes
To deploy under a team instead of your current scope, list your teams and pass the team slug with --scope:
npx vercel@latest teams ls
npx vercel@latest deploy --prod --yes --scope <team-slug>
--yes creates the project and links it without prompting. Vercel detects Vite, runs vite build, and serves dist/. Vite copies the public/ directory into dist/. Run the same command again to publish a later change.

Use the production URL

Use the production domain or alias that Vercel prints when the deploy finishes, such as https://<project>.vercel.app. Share that URL wherever your public URL is required.
If Deployment Protection is enabled for the project, some generated per-deploy URLs require authentication and return 401. Verify that the URL you share returns 200 without authentication, as shown in Verify the deployment.

Verify the deployment

Confirm that the site root returns 200:
curl -s -o /dev/null -w "%{http_code}\n" https://<DOMAIN>/
Open the URL in Meta Quest Browser and test the experience. Use remote debugging to inspect the page from your development computer.