Jump to content

WebXR: Difference between revisions

From VR & AR Wiki
No edit summary
No edit summary
 
(19 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{Platform Infobox
{{Platform Infobox
|image=
|image=[[File:webxr logo1.png|350px]]
|Type=Virtual Reality and Augmented Reality
|Type=[[Virtual Reality]], [[Augmented Reality]]
|Subtype=Web API
|Subtype=[[Web API]]
|Creator=[[Immersive Web Working Group]] and [[Immersive Web Community Group]]
|Creator=[[Immersive Web Working Group]] and [[Immersive Web Community Group]]
|Developer=[[W3C]]
|Developer=[[W3C]]
|Manufacturer=N/A
|Manufacturer=N/A
|Operating System=Cross-platform
|Operating System=Cross-platform
|Browser=[[Google Chrome]] 79+, [[Microsoft Edge]] 79+, [[Firefox]], [[Opera]] 66+, [[Samsung Internet]] 12+, [[Oculus Browser]], [[Safari]] (visionOS)
|Browser=[[Google Chrome]] 79+, [[Microsoft Edge]] 79+, [[Firefox]] (partial support), [[Opera]] 66+, [[Samsung Internet]] 12+, [[Oculus Browser]], [[Safari]] (visionOS)
|Devices=[[VR headsets]], [[AR headsets]], [[AR-enabled smartphones]]
|Devices=[[VR headsets]], [[AR headsets]], [[AR-enabled smartphones]]
|Accessories=[[Motion controllers]], [[Gamepads]], [[Hand tracking devices]]
|Accessories=[[Motion controllers]], [[Gamepads]], [[Hand tracking devices]]
|Release Date=2018 (initial specification)
|Release Date=5 February 2019 (First Public Working Draft)
|Price=Free Web Standard
|Price=Free Web Standard
|Website=https://www.w3.org/TR/webxr/
|Website=https://www.w3.org/TR/webxr/, https://immersiveweb.dev/, https://github.com/immersive-web/webxr/blob/master/explainer.md, https://developer.mozilla.org/en-US/docs/Web/API/WebXR_Device_API
}}
}}
'''WebXR Device API''' (commonly known as '''WebXR''') is a [[Web API]] developed by the [[World Wide Web Consortium]] (W3C) that provides interfaces for accessing [[virtual reality]] (VR) and [[augmented reality]] (AR) devices on the web. WebXR enables developers to create immersive experiences that work across a wide range of hardware platforms, including head-mounted displays, mobile AR devices, and desktop environments with appropriate peripherals.<ref name="w3c-webxr"></ref>
'''WebXR Device API''' (commonly known as '''WebXR''') is a [[Web API]] developed by the [[World Wide Web Consortium]] (W3C) that provides interfaces for accessing [[virtual reality]] (VR) and [[augmented reality]] (AR) devices on the web. WebXR enables developers to create immersive experiences that work across a wide range of [[hardware]] [[platforms]], including [[head-mounted display]]s, [[mobile AR devices]], and [[desktop environments]] with appropriate [[peripherals]].<ref name="w3c-webxr"></ref>


The API allows web applications to detect compatible VR/AR devices, query their capabilities, render 3D scenes to the devices at the appropriate frame rate, and respond to input from associated controllers. WebXR represents an evolution from the earlier [[WebVR API]], expanding the scope to include augmented reality and other immersive technologies under the "XR" (Extended Reality) umbrella.<ref name="mdn-webxr"></ref>
The API allows web applications to detect compatible [[VR/AR devices]], query their capabilities, render 3D scenes to the devices at the appropriate [[frame rate]], and respond to [[input]] from associated controllers. WebXR represents an evolution from the earlier [[WebVR API]], expanding the scope to include augmented reality and other immersive technologies under the "[[XR]]" (Extended Reality) umbrella.<ref name="mdn-webxr"></ref>


== History ==
==History==
 
===WebVR: The Predecessor===
=== WebVR: The Predecessor ===
The development of WebXR began with its predecessor, [[WebVR]]. The WebVR API was first conceived in spring 2014 by Vladimir Vukićević from Mozilla. Key contributors to the early API included Brandon Jones from Google, Boris Smus, and other members of the Mozilla team.<ref name="webxr-wiki"></ref>
The development of WebXR began with its predecessor, WebVR. The WebVR API was first conceived in spring 2014 by Vladimir Vukićević from Mozilla. Key contributors to the early API included Brandon Jones from Google, Boris Smus, and other members of the Mozilla team.<ref name="webxr-wiki"></ref>


On March 1, 2016, the Mozilla VR team and the Google Chrome team announced the WebVR 1.0 release. This early version of the API was implemented in Firefox and Chromium-based browsers, providing basic virtual reality functionality to web applications.
On March 1, 2016, the Mozilla VR team and the Google Chrome team announced the WebVR 1.0 release. This early version of the API was implemented in Firefox and Chromium-based browsers, providing basic virtual reality functionality to web applications.


=== Transition to WebXR ===
===Transition to WebXR===
As the technology evolved, developers recognized the need for a more scalable and ergonomic API that would break backward compatibility with WebVR. Initially referred to as "WebVR 2.0," the new API was officially renamed WebXR to acknowledge its expanded scope that would include both VR and AR content.<ref name="webxr-explained"></ref>
As the technology evolved, developers recognized the need for a more scalable and ergonomic API that would break backward compatibility with WebVR. Initially referred to as "WebVR 2.0," the new API was officially renamed WebXR to acknowledge its expanded scope that would include both VR and AR content.<ref name="webxr-explained"></ref>


Line 31: Line 30:
* Experience gained from the WebVR implementation
* Experience gained from the WebVR implementation
* A more mature landscape of immersive computing devices
* A more mature landscape of immersive computing devices
* The emergence of both mobile and headset AR technologies
* The emergence of both mobile and [[headset]] [[AR Glasses|AR technologies]]
* Multiple mature native APIs to draw inspiration from
* Multiple mature native APIs to draw inspiration from


On September 24, 2018, the Immersive Web Working Group became official, formalizing the development process for WebXR standards.<ref name="webxr-duhoc"></ref> WebXR was designed to completely replace WebVR, with all browsers that initially shipped WebVR committing to adopt WebXR once the API design was finalized.
On September 24, 2018, the Immersive Web Working Group became official, formalizing the development process for WebXR standards.<ref name="immersiveweb-community"></ref> WebXR was designed to completely replace WebVR, with all browsers that initially shipped WebVR committing to adopt WebXR once the API design was finalized.
 
===Recent Developments===
The WebXR standard continues to evolve, with the WebXR Device API advancing through the W3C standardization process as a Candidate Recommendation. The editors of the specification come from major technology companies including [[Google]] and [[Meta]], with additional input from [[Mozilla]], [[Microsoft]], [[Samsung]] Electronics, [[Apple]], as well as various startups and invited experts.<ref name="webxr-wiki"></ref>


=== Recent Developments ===
In 2023, a significant milestone was reached when Apple announced WebXR support for its visionOS platform, which powers the Apple Vision Pro mixed reality headset. Initially, WebXR support in Safari for visionOS was available behind a feature flag while Apple collaborated with the W3C Immersive Web Working Group.<ref name="apple-visionos-webxr"></ref>
The WebXR standard continues to evolve, with the latest WebXR Device API Working Draft published in February 2022. The editors of the specification currently come from major technology companies including Google and Meta, with additional input from Mozilla, Microsoft, Samsung Electronics, Apple, as well as various startups and invited experts.<ref name="webxr-wiki"/>


Notable updates to the specification have included enhanced AR capabilities, improved performance, and broader device support. The ongoing efforts focus on standardizing and advancing the WebXR API, providing developers with the necessary tools and resources to create immersive web experiences.
By early 2024, Apple expanded WebXR capabilities by adding support for the headset's natural input methods. In March 2024, visionOS 1.1 introduced support for gaze-and-pinch interactions in WebXR experiences, with Apple contributing a new "transient-pointer" input mode to the WebXR standard to accommodate these interactions.<ref name="webkit-webxr-blog"></ref>


== Technical Overview ==
With the announcement of visionOS 2 in mid-2024, Apple further committed to WebXR by making it enabled by default in Safari, eliminating the need for users to enable experimental feature flags. However, as of May 2025, WebXR on visionOS still only supports the immersive-vr session type, with the immersive-ar mode still in development.<ref name="immersiveweb"></ref>


=== Core Concepts ===
Ongoing efforts in the standard focus on improving performance, enhancing device compatibility, refining input methods, and expanding AR capabilities across platforms.


==== XR Session Modes ====
==Technical Overview==
===Core Concepts===
====XR Session Modes====
WebXR supports different modes of operation:
WebXR supports different modes of operation:
* '''inline''' - Renders XR content within an HTML element on a web page
* '''inline''' - Renders XR content within an HTML element on a web page
* '''immersive-vr''' - Provides an exclusive, fully immersive VR experience
* '''immersive-vr''' - Provides an exclusive, fully [[immersive VR]] experience
* '''immersive-ar''' - Blends virtual content with the real world environment<ref name="w3c-ar-module"></ref>
* '''immersive-ar''' - Blends virtual content with the real world environment<ref name="w3c-ar-module"></ref>


==== Reference Spaces ====
====Reference Spaces====
WebXR uses reference spaces to define coordinate systems:
WebXR uses reference spaces to define coordinate systems:
* '''viewer''' - Coordinates relative to the user's head/device
* '''viewer''' - Coordinates relative to the user's head/device
Line 57: Line 60:
* '''local-floor''' - Like local, but with Y=0 at floor level
* '''local-floor''' - Like local, but with Y=0 at floor level
* '''bounded-floor''' - A floor-relative space with defined boundaries
* '''bounded-floor''' - A floor-relative space with defined boundaries
* '''unbounded''' - A space for world-scale AR experiences<ref name="w3c-webxr"/>
* '''unbounded''' - A space for world-scale AR experiences<ref name="w3c-webxr"></ref>


==== Rendering Process ====
====Rendering Process====
At its most basic level, WebXR rendering works by:
At its most basic level, WebXR rendering works by:
1. Computing the perspective for each eye's viewpoint
#Computing the perspective for each eye's viewpoint
2. Rendering the scene from each eye's position
#Rendering the scene from each eye's position
3. Delivering the combined framebuffer to the XR device for display
#Delivering the combined framebuffer to the XR device for display


The API handles the complex timing and scheduling required for comfortable XR experiences, but does not directly manage 3D assets or perform rendering—that responsibility falls to WebGL or other graphics libraries.<ref name="mdn-fundamentals"></ref>
The API handles the complex timing and scheduling required for comfortable XR experiences, but does not directly manage 3D assets or perform rendering. That responsibility falls to WebGL or other graphics libraries.<ref name="mdn-fundamentals"></ref>


==== Input Handling ====
====Input Handling====
WebXR supports various input mechanisms:
WebXR supports various input mechanisms:
* Motion controllers (through the WebXR Gamepads Module)
* Motion controllers (through the WebXR Gamepads Module)
* Hand tracking
* Hand tracking
* Gaze-based input methods
* Gaze-based input methods
* Natural input interactions (such as gaze-and-pinch on Apple Vision Pro)
* Session-specific events (select, squeeze, etc.)<ref name="webxr-gamepads"></ref>
* Session-specific events (select, squeeze, etc.)<ref name="webxr-gamepads"></ref>


=== API Architecture ===
===API Architecture===
 
The WebXR Device API is organized into several key interfaces:
The WebXR Device API is organized into several key interfaces:


Line 82: Line 85:
! Description
! Description
|-
|-
| XRSystem
| [[XRSystem]]
| Main entry point for the WebXR API, accessed via `navigator.xr`
| Main entry point for the WebXR API, accessed via `navigator.xr`
|-
|-
| XRSession
| [[XRSession]]
| Represents an active XR session, managing the presentation loop
| Represents an active XR session, managing the presentation loop
|-
|-
| XRFrame
| [[XRFrame]]
| Provides information about a single frame to be rendered
| Provides information about a single frame to be rendered
|-
|-
| XRView
| [[XRView]]
| Represents a single view to be rendered (typically one per eye)
| Represents a single view to be rendered (typically one per eye)
|-
|-
| XRViewport
| [[XRViewport]]
| Defines the rectangular area of the output canvas
| Defines the rectangular area of the output canvas
|-
|-
| XRReferenceSpace
| [[XRReferenceSpace]]
| Defines spatial relationship to the user's environment
| Defines spatial relationship to the user's environment
|-
|-
| XRPose
| [[XRPose]]
| Contains position and orientation information
| Contains position and orientation information
|-
|-
| XRInputSource
| [[XRInputSource]]
| Represents input devices like controllers or hands
| Represents input devices like controllers or hands
|}
|}


=== Modular Structure ===
===Modular Structure ===
 
The WebXR specification is designed to be modular, with the core WebXR Device API providing fundamental functionality and additional modules extending its capabilities:
The WebXR specification is designed to be modular, with the core WebXR Device API providing fundamental functionality and additional modules extending its capabilities:


==== Core Module ====
====Core Module====
* **WebXR Device API** - Provides basic session management, device detection, and rendering capabilities<ref name="w3c-webxr"/>
* '''[[WebXR Device API]]''' - Provides basic session management, device detection, and rendering capabilities


==== Extension Modules ====
====Extension Modules====
* **WebXR AR Module** - Adds augmented reality support through the "immersive-ar" session mode<ref name="w3c-ar-module"/>
* '''WebXR AR Module''' - Adds augmented reality support through the "immersive-ar" session mode
* **WebXR Gamepads Module** - Provides interfaces for button, trigger, thumbstick, and touchpad input<ref name="webxr-gamepads"/>
* '''WebXR Gamepads Module''' - Provides interfaces for button, trigger, thumbstick, and touchpad input
* **WebXR Hand Input Module** - Enables hand tracking functionality
* '''WebXR Hand Input Module''' - Enables hand tracking functionality
* **WebXR Layers Module** - Supports rendering to multiple composited layers
* '''WebXR Layers Module''' - Supports rendering to multiple composited layers
* **WebXR Lighting Estimation Module** - Allows AR applications to match virtual lighting with real-world conditions<ref name="w3c-lighting"></ref>
* '''WebXR Lighting Estimation Module''' - Allows AR applications to match virtual lighting with real-world conditions
* '''WebXR DOM Overlay Module''' - Enables overlaying HTML content in immersive AR sessions
* '''WebXR Anchors Module''' - Provides spatial anchoring capabilities for persistent AR experiences


This modular approach allows the WebXR standard to evolve and expand while maintaining compatibility with existing implementations.
This modular approach allows the WebXR standard to evolve and expand while maintaining compatibility with existing implementations.


== Implementation and Support ==
==Implementation and Support==
 
===Browser Support===
=== Browser Support ===
 
WebXR is currently supported in several major browsers:
WebXR is currently supported in several major browsers:


Line 134: Line 136:
! Notes
! Notes
|-
|-
| Google Chrome
| [[Google Chrome]]
| 79+
| 79+
| Desktop and Android
| Desktop and Android
|-
|-
| Microsoft Edge
| [[Microsoft Edge]]
| 79+
| 79+
| Based on Chromium
| Based on Chromium
|-
|-
| Firefox
| [[Firefox]]
|  
|  
| Partial support
| Partial support
|-
|-
| Opera
| [[Opera]]
| 66+
| 66+
| Desktop and mobile
| Desktop and mobile
|-
|-
| Samsung Internet
| [[Samsung Internet]]
| 12+
| 12+
| Mobile
| Mobile
|-
|-
| Oculus Browser
| [[Oculus Browser]]
|  
|  
| For Oculus devices
| For Meta Quest devices
|-
|-
| Safari
| [[Safari]]
|  
|  
| Supported in visionOS for Apple Vision Pro
| Supported in visionOS for Apple Vision Pro
|}
|}


Safari on iOS has historically not supported WebXR, though the API is available in Safari for visionOS on the Apple Vision Pro mixed reality headset.<ref name="browserstack"></ref>
Firefox provides partial WebXR support with ongoing development to expand capabilities. Safari on iOS does not support WebXR, but Safari on visionOS for Apple Vision Pro does support WebXR, with full immersive-vr mode support in visionOS 2 (enabled by default) and experimental work on immersive-ar mode in development.<ref name="caniuse-webxr"></ref>


=== Hardware Compatibility ===
===Hardware Compatibility===


WebXR is designed to work with a wide range of hardware:
WebXR is designed to work with a wide range of hardware:


==== VR Devices ====
====VR Devices====
* Tethered headsets (HTC Vive, Oculus Rift, etc.)
*[[Tethered headsets]] ([[HTC Vive]], [[Oculus Rift]], etc.)
* Standalone headsets (Meta Quest, HTC Vive Focus, etc.)
*[[Standalone headsets]] ([[Meta Quest]], [[HTC Vive Focus]], [[Apple Vision Pro]], etc.)
* Mobile VR solutions (Google Cardboard, etc.)
*[[Mobile VR]] solutions ([[Google Cardboard]], etc.)<ref name="immersiveweb"></ref>
 
====AR Devices====
*[[AR headsets]] ([[Microsoft HoloLens]], [[Magic Leap]], [[Apple Vision Pro]])
*[[Mobile AR]] ([[ARCore]] on [[Android]], [[ARKit]] on [[iOS]])
*Video [[passthrough]] devices
 
===Input Mechanisms===
WebXR supports various input methods based on device capabilities:


==== AR Devices ====
* **Physical Controllers**: Traditional VR motion controllers with buttons, triggers, and thumbsticks
* AR headsets (Microsoft HoloLens, Magic Leap, Apple Vision Pro)
* **Hand Tracking**: Natural hand movements and gestures
* Mobile AR (ARCore on Android, ARKit on iOS)
* **Gaze-Based**: Targeting objects by looking at them
* Video pass-through devices<ref name="immersiveweb"></ref>
* **Platform-Specific**: Such as Apple Vision Pro's gaze-and-pinch interaction system
* **Hybrid Approaches**: Combinations of the above methods


=== Feature Detection and Fallbacks ===
The "transient-pointer" input mode, introduced in 2024, enables more natural and privacy-preserving interaction methods that don't rely on persistent controller data.


===Feature Detection and Fallbacks===
For backwards compatibility and progressive enhancement, developers can use:
For backwards compatibility and progressive enhancement, developers can use:


Line 187: Line 199:
* The WebXR API Emulator, a browser extension that simulates XR hardware for development and testing<ref name="mdn-startup"></ref>
* The WebXR API Emulator, a browser extension that simulates XR hardware for development and testing<ref name="mdn-startup"></ref>


=== Security Requirements ===
===Security Requirements===
 
Due to the sensitive nature of XR experiences, WebXR has specific security requirements:
Due to the sensitive nature of XR experiences, WebXR has specific security requirements:


* WebXR applications must be served over HTTPS or from localhost
* WebXR applications must be served over HTTPS or from localhost
* Permission is required from the user before accessing XR devices
* Permission is required from the user before accessing XR devices
* Additional user consent is required for features that access real-world information (like camera frames)<ref name="w3c-ar-module"/>
* Additional user consent is required for features that access real-world information (like camera frames)<ref name="w3c-ar-module"></ref>
 
== Use Cases ==
 
=== Virtual Reality Applications ===
 
* **Gaming and Entertainment** - Immersive gaming experiences, virtual theaters, and interactive storytelling
* **Education and Training** - Virtual classrooms, simulation-based training, and interactive educational experiences
* **Virtual Tours** - Museum exhibits, property showcases, and travel destinations
* **Social VR** - Virtual meeting spaces, collaborative environments, and social platforms
* **Therapeutic Applications** - Exposure therapy, pain management, and rehabilitation<ref name="browserstack"/>
 
=== Augmented Reality Applications ===


* **E-Commerce** - Virtual product try-ons, furniture placement, and interactive catalogs
==Use Cases==
* **Industrial Applications** - Assembly instructions, maintenance guides, and remote assistance
===Virtual Reality Applications===
* **Navigation** - Enhanced wayfinding, points of interest, and information overlays
*'''[[Gaming]] and [[Entertainment]]''' - Immersive gaming experiences, virtual theaters, and interactive storytelling
* **Art and Culture** - Interactive exhibits, enhanced performances, and public installations
*'''[[Education]] and [[Training]]''' - Virtual classrooms, simulation-based training, and interactive educational experiences
* **Education** - Interactive learning materials, visualizations, and simulations<ref name="google-webxr"></ref>
*'''Virtual Tours''' - Museum exhibits, property showcases, and travel destinations
*'''[[Social VR]]''' - Virtual meeting spaces, collaborative environments, and social platforms
*'''[[Therapeutic Application]]''' - Exposure therapy, pain management, and rehabilitation<ref name="caniuse-webxr"></ref>


=== Cross-Reality Experiences ===
===Augmented Reality Applications===
*'''[[E-Commerce]]''' - Virtual product try-ons, furniture placement, and interactive catalogs
*'''[[Industrial Applications]]''' - Assembly instructions, maintenance guides, and remote assistance
*'''Navigation''' - Enhanced wayfinding, points of interest, and information overlays
*'''[[Art]] and [[Culture]]''' - Interactive exhibits, enhanced performances, and public installations
*'''[[Education]]''' - Interactive learning materials, visualizations, and simulations<ref name="google-webxr"></ref>


===Cross-Reality Experiences===
WebXR's unified approach enables developers to create experiences that work across different reality modes:
WebXR's unified approach enables developers to create experiences that work across different reality modes:


* Applications that adapt between VR and AR depending on available hardware
* Applications that adapt between VR and AR depending on available hardware
* Collaborative experiences where some users are in VR and others in AR
* Collaborative experiences where some users are in VR and others in AR
* Progressive experiences that start in 2D and can transition to immersive modes<ref name="immersiveweb"/>
* Progressive experiences that start in 2D and can transition to immersive modes<ref name="immersiveweb"></ref>
 
== Development Tools and Frameworks ==
 
=== Graphics Libraries ===


* **WebGL** - Low-level 3D graphics API that forms the foundation for WebXR rendering
==Development Tools and Frameworks==
* **Three.js** - Popular JavaScript 3D library with WebXR support
===Graphics Libraries===
* **Babylon.js** - Comprehensive JavaScript framework for 3D experiences
* '''[[WebGL]]''' - Low-level 3D graphics API that forms the foundation for WebXR rendering
* '''[[Three.js]]''' - Popular JavaScript 3D library with WebXR support
* '''[[Babylon.js]]''' - Comprehensive JavaScript framework for 3D experiences


=== WebXR-specific Frameworks ===
===WebXR-specific Frameworks===
* '''[[A-Frame]]''' - Declarative framework for building VR experiences with HTML-like syntax
* '''[[React XR]]''' - React components for building WebXR applications
* '''[[Wonderland Engine]]''' - Engine optimized for WebXR performance


* **A-Frame** - Declarative framework for building VR experiences with HTML-like syntax
===Development Tools===
* **React XR** - React components for building WebXR applications
* '''[[WebXR API Emulator]]''' - Browser extension for testing without physical XR hardware
* **Wonderland Engine** - Engine optimized for WebXR performance
* '''[[WebXR Polyfill]]''' - JavaScript implementation for browsers without native support
* '''[[Mozilla WebXR Viewer]]''' - Experimental iOS app for testing WebXR content
* '''[[WebXR Input Profiles]]''' - Repository of controller models and binding information<ref name="mdn-fundamentals"></ref>


=== Development Tools ===
==Advantages and Limitations==
===Advantages===
*'''Cross-platform compatibility''' - Works across different devices and operating systems
*'''No installation required''' - Experiences run directly in the browser
*'''Discoverability''' - Content can be linked and shared like any web page
*'''Instant updates''' - Changes deployed immediately without app store approval
*'''Progressive enhancement''' - Can adapt to available hardware capabilities
*'''Integration with web ecosystem''' - Works with existing web technologies and services


* **WebXR API Emulator** - Browser extension for testing without physical XR hardware
===Limitations===
* **WebXR Polyfill** - JavaScript implementation for browsers without native support
*'''Performance overhead''' - Generally lower performance than native applications
* **Mozilla WebXR Viewer** - Experimental iOS app for testing WebXR content
*'''Browser compatibility issues''' - Inconsistent implementation across browsers
* **WebXR Input Profiles** - Repository of controller models and binding information<ref name="mdn-fundamentals"/>
*'''Hardware access restrictions''' - Limited access to device capabilities compared to native apps
 
*'''Battery consumption''' - Can drain mobile device batteries quickly
== Advantages and Limitations ==
*'''Feature gaps''' - Some advanced AR/VR features only available to native applications
 
=== Advantages ===
 
* **Cross-platform compatibility** - Works across different devices and operating systems
* **No installation required** - Experiences run directly in the browser
* **Discoverability** - Content can be linked and shared like any web page
* **Instant updates** - Changes deployed immediately without app store approval
* **Progressive enhancement** - Can adapt to available hardware capabilities
* **Integration with web ecosystem** - Works with existing web technologies and services<ref name="immersiveweb"/>
 
=== Limitations ===
 
* **Performance overhead** - Generally lower performance than native applications
* **Browser compatibility issues** - Inconsistent implementation across browsers
* **Hardware access restrictions** - Limited access to device capabilities compared to native apps
* **Battery consumption** - Can drain mobile device batteries quickly
* **Feature gaps** - Some advanced AR/VR features only available to native applications
 
== Comparison with Native XR Development ==


==Comparison with Native XR Development==
{| class="wikitable"
{| class="wikitable"
! Feature
! Feature
! WebXR
! [[WebXR]]
! Native XR (OpenXR, ARCore, ARKit)
! [[Native XR]] ([[OpenXR]], [[ARCore]], [[ARKit]])
|-
|-
| Installation
| Installation
Line 297: Line 296:
|}
|}


While WebXR has similarities to native APIs like OpenXR, ARCore, and ARKit, it provides a more accessible cross-platform alternative with some performance and feature tradeoffs.<ref name="webxr-wiki"/>
While WebXR has similarities to native APIs like OpenXR, ARCore, and ARKit, it provides a more accessible cross-platform alternative with some performance and feature tradeoffs.
 
== The Future of WebXR ==
 
=== Ongoing Development ===


==The Future of WebXR==
===Ongoing Development===
The WebXR specification continues to evolve with several areas of active development:
The WebXR specification continues to evolve with several areas of active development:


* **Enhanced AR capabilities** - Improved real-world integration and occlusion
*'''Enhanced AR capabilities''' - Improved real-world integration and occlusion
* **Hand tracking** - More advanced hand gesture recognition and interaction
*'''[[Hand tracking]]''' - More advanced hand gesture recognition and interaction
* **Multi-user experiences** - Better support for shared virtual spaces
*'''Multi-user experiences''' - Better support for shared virtual spaces
* **Performance optimization** - Reducing overhead for smoother experiences
*'''Performance optimization''' - Reducing overhead for smoother experiences
* **Advanced rendering techniques** - Support for features like ray tracing
*'''Advanced rendering techniques''' - Support for features like ray tracing
* **Haptic feedback** - More sophisticated tactile responses
*'''[[Haptic feedback]]''' - More sophisticated tactile responses
* **Integration with other web APIs** - Working with geolocation, WebAudio, etc.
*'''Integration with other web APIs''' - Working with geolocation, WebAudio, etc.
 
*'''Platform-specific interactions''' - Standardizing support for diverse input methods
=== Adoption Trends ===
*'''Spatial computing features''' - Supporting advanced room-scale experiences


===Adoption Trends===
WebXR adoption is growing across multiple sectors:
WebXR adoption is growing across multiple sectors:
*'''E-commerce platforms''' are integrating WebXR for product visualization
*'''Educational institutions''' are developing WebXR learning materials
*'''Cultural organizations''' are creating accessible virtual exhibits
*'''Enterprise training''' solutions are utilizing WebXR for cost-effective simulations
*'''Social platforms''' are exploring WebXR for shared experiences
*'''Mixed reality headsets''' like Apple Vision Pro are embracing WebXR standards


* **E-commerce platforms** are integrating WebXR for product visualization
===Challenges===
* **Educational institutions** are developing WebXR learning materials
* **Cultural organizations** are creating accessible virtual exhibits
* **Enterprise training** solutions are utilizing WebXR for cost-effective simulations
* **Social platforms** are exploring WebXR for shared experiences
 
=== Challenges ===
 
Despite its progress, WebXR faces several challenges:
Despite its progress, WebXR faces several challenges:


* **Fragmented mobile support** - Particularly on iOS devices
*'''Fragmented mobile support''' - Particularly on iOS devices
* **Hardware limitations** - Especially for mobile AR applications
*'''Hardware limitations''' - Especially for mobile AR applications
* **Performance expectations** - Compared to native applications
*'''Performance expectations''' - Compared to native applications
* **Development complexity** - For sophisticated experiences
*'''Development complexity''' - For sophisticated experiences
* **User awareness** - Many users are unfamiliar with web-based XR
*'''User awareness''' - Many users are unfamiliar with web-based XR
 
*'''Platform-specific implementations''' - Differences in implementation across vendors
== Conclusion ==


WebXR represents a significant advancement in making immersive technologies accessible through the web. By providing a standardized API for both virtual and augmented reality experiences, it enables developers to create cross-platform XR content that runs directly in web browsers without requiring specialized applications.
==References==
 
While it faces challenges in terms of performance and feature parity compared to native applications, WebXR's advantages in terms of accessibility, discoverability, and integration with the broader web ecosystem make it an increasingly important technology for the future of immersive computing.
 
As hardware capabilities continue to improve and browser support expands, WebXR is positioned to play a central role in democratizing access to virtual and augmented reality experiences, making them as ubiquitous and accessible as websites are today.
 
== References ==
<references>
<references>
<ref name="w3c-webxr">World Wide Web Consortium. (2022). WebXR Device API. W3C. Retrieved May 6, 2025, from https://www.w3.org/TR/webxr/</ref>
<ref name="w3c-webxr">World Wide Web Consortium. (2023). WebXR Device API. W3C. Retrieved May 6, 2025, from https://www.w3.org/TR/webxr/</ref>
<ref name="mdn-webxr">Mozilla Developer Network. (2025, April 4). WebXR Device API. MDN Web Docs. Retrieved May 6, 2025, from https://developer.mozilla.org/en-US/docs/Web/API/WebXR_Device_API</ref>
<ref name="mdn-webxr">Mozilla Developer Network. (2025, April 4). WebXR Device API. MDN Web Docs. Retrieved May 6, 2025, from https://developer.mozilla.org/en-US/docs/Web/API/WebXR_Device_API</ref>
<ref name="webxr-wiki">Wikipedia. (2025, April). WebXR. Retrieved May 6, 2025, from https://en.wikipedia.org/wiki/WebXR</ref>
<ref name="webxr-wiki">Wikipedia. (2025, April). WebXR. Retrieved May 6, 2025, from https://en.wikipedia.org/wiki/WebXR</ref>
<ref name="webxr-explained">Immersive Web Working Group. (n.d.). WebXR Device API Explained. Retrieved May 6, 2025, from https://immersive-web.github.io/webxr/explainer.html</ref>
<ref name="webxr-explained">Immersive Web Working Group. (2024). WebXR Device API Explained. Retrieved May 6, 2025, from https://immersive-web.github.io/webxr/explainer.html</ref>
<ref name="webxr-duhoc">DuHoc. (2024, February 27). Webxr: History, Design, Support. Retrieved May 6, 2025, from https://www.duhoctrungquoc.vn/wiki/en/WebXR</ref>
<ref name="immersiveweb-community">Immersive Web Community Group. (2024). About the Immersive Web Community Group. Retrieved May 6, 2025, from https://www.w3.org/community/immersive-web/</ref>
<ref name="w3c-ar-module">World Wide Web Consortium. (n.d.). WebXR Augmented Reality Module - Level 1. W3C. Retrieved May 6, 2025, from https://www.w3.org/TR/webxr-ar-module-1/</ref>
<ref name="w3c-ar-module">World Wide Web Consortium. (2023). WebXR Augmented Reality Module - Level 1. W3C. Retrieved May 6, 2025, from https://www.w3.org/TR/webxr-ar-module-1/</ref>
<ref name="mdn-fundamentals">Mozilla Developer Network. (2023, February 19). Fundamentals of WebXR. MDN Web Docs. Retrieved May 6, 2025, from https://developer.mozilla.org/en-US/docs/Web/API/WebXR_Device_API/Fundamentals</ref>
<ref name="mdn-fundamentals">Mozilla Developer Network. (2023, February 19). Fundamentals of WebXR. MDN Web Docs. Retrieved May 6, 2025, from https://developer.mozilla.org/en-US/docs/Web/API/WebXR_Device_API/Fundamentals</ref>
<ref name="webxr-gamepads">Immersive Web Working Group. (n.d.). WebXR Gamepads Module - Level 1. Retrieved May 6, 2025, from https://immersive-web.github.io/webxr-gamepads-module/</ref>
<ref name="webxr-gamepads">Immersive Web Working Group. (2023). WebXR Gamepads Module - Level 1. Retrieved May 6, 2025, from https://immersive-web.github.io/webxr-gamepads-module/</ref>
<ref name="w3c-lighting">World Wide Web Consortium. (n.d.). WebXR Lighting Estimation API Level 1. W3C. Retrieved May 6, 2025, from https://www.w3.org/standards/history/webxr-lighting-estimation-1/</ref>
<ref name="caniuse-webxr">Can I use. (2025, May). WebXR Device API. Retrieved May 6, 2025, from https://caniuse.com/webxr</ref>
<ref name="browserstack">BrowserStack. (2024, December 3). WebXR - Compatible Browsers & Implementation. Retrieved May 6, 2025, from https://www.browserstack.com/guide/webxr-and-compatible-browsers</ref>
<ref name="immersiveweb">Immersive Web. (2025). Immersive Web Developer Home. Retrieved May 6, 2025, from https://immersiveweb.dev/</ref>
<ref name="immersiveweb">Immersive Web. (n.d.). Immersive Web Developer Home. Retrieved May 6, 2025, from https://immersiveweb.dev/</ref>
<ref name="mdn-startup">Mozilla Developer Network. (2023). Starting up and shutting down a WebXR session. MDN Web Docs. Retrieved May 6, 2025, from https://developer.mozilla.org/en-US/docs/Web/API/WebXR_Device_API/Startup_and_shutdown</ref>
<ref name="mdn-startup">Mozilla Developer Network. (n.d.). Starting up and shutting down a WebXR session. MDN Web Docs. Retrieved May 6, 2025, from https://developer.mozilla.org/en-US/docs/Web/API/WebXR_Device_API/Startup_and_shutdown</ref>
<ref name="google-webxr">Google Developers. (2024). WebXR | ARCore. Retrieved May 6, 2025, from https://developers.google.com/ar/develop/webxr</ref>
<ref name="google-webxr">Google Developers. (2024, December 18). WebXR | ARCore. Retrieved May 6, 2025, from https://developers.google.com/ar/develop/webxr</ref>
<ref name="apple-visionos-webxr">Apple Developer. (2024, June). WebXR for visionOS. Retrieved May 6, 2025, from https://developer.apple.com/documentation/webkit/webxr_for_visionos</ref>
<ref name="webkit-webxr-blog">WebKit Blog. (2024, March). Natural Input for WebXR on visionOS. Retrieved May 6, 2025, from https://webkit.org/blog/14142/natural-input-for-webxr-on-visionos/</ref>
<ref name="w3c-webxr-history">World Wide Web Consortium. “WebXR Device API publication history.” W3C Standards. Retrieved May 6 2025, from https://www.w3.org/standards/history/webxr/</ref>
</references>
</references>
[[Category:Platforms]]
[[Category:VR Platforms]]
[[Category:AR Platforms]]
[[Category:Web Technologies]]
[[Category:APIs]]
[[Category:W3C Standards]]
[[Category:Mixed Reality]]
[[Category:Cross-Platform Tools]]
[[Category:Development Tools]]
[[Category:Browser Technologies]]
[[Category:Immersive Web]]

Latest revision as of 21:26, 7 May 2025

WebXR
Information
Type Virtual Reality, Augmented Reality
Subtype Web API
Creator Immersive Web Working Group and Immersive Web Community Group
Developer W3C
Manufacturer N/A
Operating System Cross-platform
Browser Google Chrome 79+, Microsoft Edge 79+, Firefox (partial support), Opera 66+, Samsung Internet 12+, Oculus Browser, Safari (visionOS)
Devices VR headsets, AR headsets, AR-enabled smartphones
Accessories Motion controllers, Gamepads, Hand tracking devices
Release Date 5 February 2019 (First Public Working Draft)
Price Free Web Standard
Website https://www.w3.org/TR/webxr/, https://immersiveweb.dev/, https://github.com/immersive-web/webxr/blob/master/explainer.md, https://developer.mozilla.org/en-US/docs/Web/API/WebXR_Device_API

WebXR Device API (commonly known as WebXR) is a Web API developed by the World Wide Web Consortium (W3C) that provides interfaces for accessing virtual reality (VR) and augmented reality (AR) devices on the web. WebXR enables developers to create immersive experiences that work across a wide range of hardware platforms, including head-mounted displays, mobile AR devices, and desktop environments with appropriate peripherals.[1]

The API allows web applications to detect compatible VR/AR devices, query their capabilities, render 3D scenes to the devices at the appropriate frame rate, and respond to input from associated controllers. WebXR represents an evolution from the earlier WebVR API, expanding the scope to include augmented reality and other immersive technologies under the "XR" (Extended Reality) umbrella.[2]

History

WebVR: The Predecessor

The development of WebXR began with its predecessor, WebVR. The WebVR API was first conceived in spring 2014 by Vladimir Vukićević from Mozilla. Key contributors to the early API included Brandon Jones from Google, Boris Smus, and other members of the Mozilla team.[3]

On March 1, 2016, the Mozilla VR team and the Google Chrome team announced the WebVR 1.0 release. This early version of the API was implemented in Firefox and Chromium-based browsers, providing basic virtual reality functionality to web applications.

Transition to WebXR

As the technology evolved, developers recognized the need for a more scalable and ergonomic API that would break backward compatibility with WebVR. Initially referred to as "WebVR 2.0," the new API was officially renamed WebXR to acknowledge its expanded scope that would include both VR and AR content.[4]

The transition benefited from:

  • Experience gained from the WebVR implementation
  • A more mature landscape of immersive computing devices
  • The emergence of both mobile and headset AR technologies
  • Multiple mature native APIs to draw inspiration from

On September 24, 2018, the Immersive Web Working Group became official, formalizing the development process for WebXR standards.[5] WebXR was designed to completely replace WebVR, with all browsers that initially shipped WebVR committing to adopt WebXR once the API design was finalized.

Recent Developments

The WebXR standard continues to evolve, with the WebXR Device API advancing through the W3C standardization process as a Candidate Recommendation. The editors of the specification come from major technology companies including Google and Meta, with additional input from Mozilla, Microsoft, Samsung Electronics, Apple, as well as various startups and invited experts.[3]

In 2023, a significant milestone was reached when Apple announced WebXR support for its visionOS platform, which powers the Apple Vision Pro mixed reality headset. Initially, WebXR support in Safari for visionOS was available behind a feature flag while Apple collaborated with the W3C Immersive Web Working Group.[6]

By early 2024, Apple expanded WebXR capabilities by adding support for the headset's natural input methods. In March 2024, visionOS 1.1 introduced support for gaze-and-pinch interactions in WebXR experiences, with Apple contributing a new "transient-pointer" input mode to the WebXR standard to accommodate these interactions.[7]

With the announcement of visionOS 2 in mid-2024, Apple further committed to WebXR by making it enabled by default in Safari, eliminating the need for users to enable experimental feature flags. However, as of May 2025, WebXR on visionOS still only supports the immersive-vr session type, with the immersive-ar mode still in development.[8]

Ongoing efforts in the standard focus on improving performance, enhancing device compatibility, refining input methods, and expanding AR capabilities across platforms.

Technical Overview

Core Concepts

XR Session Modes

WebXR supports different modes of operation:

  • inline - Renders XR content within an HTML element on a web page
  • immersive-vr - Provides an exclusive, fully immersive VR experience
  • immersive-ar - Blends virtual content with the real world environment[9]

Reference Spaces

WebXR uses reference spaces to define coordinate systems:

  • viewer - Coordinates relative to the user's head/device
  • local - Stationary coordinate system near the user
  • local-floor - Like local, but with Y=0 at floor level
  • bounded-floor - A floor-relative space with defined boundaries
  • unbounded - A space for world-scale AR experiences[1]

Rendering Process

At its most basic level, WebXR rendering works by:

  1. Computing the perspective for each eye's viewpoint
  2. Rendering the scene from each eye's position
  3. Delivering the combined framebuffer to the XR device for display

The API handles the complex timing and scheduling required for comfortable XR experiences, but does not directly manage 3D assets or perform rendering. That responsibility falls to WebGL or other graphics libraries.[10]

Input Handling

WebXR supports various input mechanisms:

  • Motion controllers (through the WebXR Gamepads Module)
  • Hand tracking
  • Gaze-based input methods
  • Natural input interactions (such as gaze-and-pinch on Apple Vision Pro)
  • Session-specific events (select, squeeze, etc.)[11]

API Architecture

The WebXR Device API is organized into several key interfaces:

Interface Description
XRSystem Main entry point for the WebXR API, accessed via `navigator.xr`
XRSession Represents an active XR session, managing the presentation loop
XRFrame Provides information about a single frame to be rendered
XRView Represents a single view to be rendered (typically one per eye)
XRViewport Defines the rectangular area of the output canvas
XRReferenceSpace Defines spatial relationship to the user's environment
XRPose Contains position and orientation information
XRInputSource Represents input devices like controllers or hands

Modular Structure

The WebXR specification is designed to be modular, with the core WebXR Device API providing fundamental functionality and additional modules extending its capabilities:

Core Module

  • WebXR Device API - Provides basic session management, device detection, and rendering capabilities

Extension Modules

  • WebXR AR Module - Adds augmented reality support through the "immersive-ar" session mode
  • WebXR Gamepads Module - Provides interfaces for button, trigger, thumbstick, and touchpad input
  • WebXR Hand Input Module - Enables hand tracking functionality
  • WebXR Layers Module - Supports rendering to multiple composited layers
  • WebXR Lighting Estimation Module - Allows AR applications to match virtual lighting with real-world conditions
  • WebXR DOM Overlay Module - Enables overlaying HTML content in immersive AR sessions
  • WebXR Anchors Module - Provides spatial anchoring capabilities for persistent AR experiences

This modular approach allows the WebXR standard to evolve and expand while maintaining compatibility with existing implementations.

Implementation and Support

Browser Support

WebXR is currently supported in several major browsers:

Browser Version Notes
Google Chrome 79+ Desktop and Android
Microsoft Edge 79+ Based on Chromium
Firefox Partial support
Opera 66+ Desktop and mobile
Samsung Internet 12+ Mobile
Oculus Browser For Meta Quest devices
Safari Supported in visionOS for Apple Vision Pro

Firefox provides partial WebXR support with ongoing development to expand capabilities. Safari on iOS does not support WebXR, but Safari on visionOS for Apple Vision Pro does support WebXR, with full immersive-vr mode support in visionOS 2 (enabled by default) and experimental work on immersive-ar mode in development.[12]

Hardware Compatibility

WebXR is designed to work with a wide range of hardware:

VR Devices

AR Devices

Input Mechanisms

WebXR supports various input methods based on device capabilities:

  • **Physical Controllers**: Traditional VR motion controllers with buttons, triggers, and thumbsticks
  • **Hand Tracking**: Natural hand movements and gestures
  • **Gaze-Based**: Targeting objects by looking at them
  • **Platform-Specific**: Such as Apple Vision Pro's gaze-and-pinch interaction system
  • **Hybrid Approaches**: Combinations of the above methods

The "transient-pointer" input mode, introduced in 2024, enables more natural and privacy-preserving interaction methods that don't rely on persistent controller data.

Feature Detection and Fallbacks

For backwards compatibility and progressive enhancement, developers can use:

  • Feature detection to check if WebXR is supported in the current browser
  • The WebXR Polyfill that provides a fallback implementation for browsers without native support
  • The WebXR API Emulator, a browser extension that simulates XR hardware for development and testing[13]

Security Requirements

Due to the sensitive nature of XR experiences, WebXR has specific security requirements:

  • WebXR applications must be served over HTTPS or from localhost
  • Permission is required from the user before accessing XR devices
  • Additional user consent is required for features that access real-world information (like camera frames)[9]

Use Cases

Virtual Reality Applications

  • Gaming and Entertainment - Immersive gaming experiences, virtual theaters, and interactive storytelling
  • Education and Training - Virtual classrooms, simulation-based training, and interactive educational experiences
  • Virtual Tours - Museum exhibits, property showcases, and travel destinations
  • Social VR - Virtual meeting spaces, collaborative environments, and social platforms
  • Therapeutic Application - Exposure therapy, pain management, and rehabilitation[12]

Augmented Reality Applications

  • E-Commerce - Virtual product try-ons, furniture placement, and interactive catalogs
  • Industrial Applications - Assembly instructions, maintenance guides, and remote assistance
  • Navigation - Enhanced wayfinding, points of interest, and information overlays
  • Art and Culture - Interactive exhibits, enhanced performances, and public installations
  • Education - Interactive learning materials, visualizations, and simulations[14]

Cross-Reality Experiences

WebXR's unified approach enables developers to create experiences that work across different reality modes:

  • Applications that adapt between VR and AR depending on available hardware
  • Collaborative experiences where some users are in VR and others in AR
  • Progressive experiences that start in 2D and can transition to immersive modes[8]

Development Tools and Frameworks

Graphics Libraries

  • WebGL - Low-level 3D graphics API that forms the foundation for WebXR rendering
  • Three.js - Popular JavaScript 3D library with WebXR support
  • Babylon.js - Comprehensive JavaScript framework for 3D experiences

WebXR-specific Frameworks

  • A-Frame - Declarative framework for building VR experiences with HTML-like syntax
  • React XR - React components for building WebXR applications
  • Wonderland Engine - Engine optimized for WebXR performance

Development Tools

Advantages and Limitations

Advantages

  • Cross-platform compatibility - Works across different devices and operating systems
  • No installation required - Experiences run directly in the browser
  • Discoverability - Content can be linked and shared like any web page
  • Instant updates - Changes deployed immediately without app store approval
  • Progressive enhancement - Can adapt to available hardware capabilities
  • Integration with web ecosystem - Works with existing web technologies and services

Limitations

  • Performance overhead - Generally lower performance than native applications
  • Browser compatibility issues - Inconsistent implementation across browsers
  • Hardware access restrictions - Limited access to device capabilities compared to native apps
  • Battery consumption - Can drain mobile device batteries quickly
  • Feature gaps - Some advanced AR/VR features only available to native applications

Comparison with Native XR Development

Feature WebXR Native XR (OpenXR, ARCore, ARKit)
Installation No installation required App installation necessary
Performance Generally lower Higher performance
Access to hardware Limited by browser security Full hardware access
Development complexity Lower barrier to entry Steeper learning curve
Distribution Web links App stores
Updates Instant deployment Requires app updates
Cross-platform Works across devices Platform-specific development

While WebXR has similarities to native APIs like OpenXR, ARCore, and ARKit, it provides a more accessible cross-platform alternative with some performance and feature tradeoffs.

The Future of WebXR

Ongoing Development

The WebXR specification continues to evolve with several areas of active development:

  • Enhanced AR capabilities - Improved real-world integration and occlusion
  • Hand tracking - More advanced hand gesture recognition and interaction
  • Multi-user experiences - Better support for shared virtual spaces
  • Performance optimization - Reducing overhead for smoother experiences
  • Advanced rendering techniques - Support for features like ray tracing
  • Haptic feedback - More sophisticated tactile responses
  • Integration with other web APIs - Working with geolocation, WebAudio, etc.
  • Platform-specific interactions - Standardizing support for diverse input methods
  • Spatial computing features - Supporting advanced room-scale experiences

Adoption Trends

WebXR adoption is growing across multiple sectors:

  • E-commerce platforms are integrating WebXR for product visualization
  • Educational institutions are developing WebXR learning materials
  • Cultural organizations are creating accessible virtual exhibits
  • Enterprise training solutions are utilizing WebXR for cost-effective simulations
  • Social platforms are exploring WebXR for shared experiences
  • Mixed reality headsets like Apple Vision Pro are embracing WebXR standards

Challenges

Despite its progress, WebXR faces several challenges:

  • Fragmented mobile support - Particularly on iOS devices
  • Hardware limitations - Especially for mobile AR applications
  • Performance expectations - Compared to native applications
  • Development complexity - For sophisticated experiences
  • User awareness - Many users are unfamiliar with web-based XR
  • Platform-specific implementations - Differences in implementation across vendors

References

  1. 1.0 1.1 World Wide Web Consortium. (2023). WebXR Device API. W3C. Retrieved May 6, 2025, from https://www.w3.org/TR/webxr/
  2. Mozilla Developer Network. (2025, April 4). WebXR Device API. MDN Web Docs. Retrieved May 6, 2025, from https://developer.mozilla.org/en-US/docs/Web/API/WebXR_Device_API
  3. 3.0 3.1 Wikipedia. (2025, April). WebXR. Retrieved May 6, 2025, from https://en.wikipedia.org/wiki/WebXR
  4. Immersive Web Working Group. (2024). WebXR Device API Explained. Retrieved May 6, 2025, from https://immersive-web.github.io/webxr/explainer.html
  5. Immersive Web Community Group. (2024). About the Immersive Web Community Group. Retrieved May 6, 2025, from https://www.w3.org/community/immersive-web/
  6. Apple Developer. (2024, June). WebXR for visionOS. Retrieved May 6, 2025, from https://developer.apple.com/documentation/webkit/webxr_for_visionos
  7. WebKit Blog. (2024, March). Natural Input for WebXR on visionOS. Retrieved May 6, 2025, from https://webkit.org/blog/14142/natural-input-for-webxr-on-visionos/
  8. 8.0 8.1 8.2 Immersive Web. (2025). Immersive Web Developer Home. Retrieved May 6, 2025, from https://immersiveweb.dev/
  9. 9.0 9.1 World Wide Web Consortium. (2023). WebXR Augmented Reality Module - Level 1. W3C. Retrieved May 6, 2025, from https://www.w3.org/TR/webxr-ar-module-1/
  10. 10.0 10.1 Mozilla Developer Network. (2023, February 19). Fundamentals of WebXR. MDN Web Docs. Retrieved May 6, 2025, from https://developer.mozilla.org/en-US/docs/Web/API/WebXR_Device_API/Fundamentals
  11. Immersive Web Working Group. (2023). WebXR Gamepads Module - Level 1. Retrieved May 6, 2025, from https://immersive-web.github.io/webxr-gamepads-module/
  12. 12.0 12.1 Can I use. (2025, May). WebXR Device API. Retrieved May 6, 2025, from https://caniuse.com/webxr
  13. Mozilla Developer Network. (2023). Starting up and shutting down a WebXR session. MDN Web Docs. Retrieved May 6, 2025, from https://developer.mozilla.org/en-US/docs/Web/API/WebXR_Device_API/Startup_and_shutdown
  14. Google Developers. (2024). WebXR | ARCore. Retrieved May 6, 2025, from https://developers.google.com/ar/develop/webxr

Cite error: <ref> tag with name "w3c-webxr-history" defined in <references> is not used in prior text.