A-Frame
| A-Frame | |
|---|---|
| Information | |
| Type | Web framework |
| Industry | Virtual Reality, Augmented Reality |
| Developer | Supermedium, Mozilla VR team (original) |
| Written In | JavaScript |
| Operating System | Cross-platform (web browser) |
| License | MIT License |
| Supported Devices | WebXR-capable browsers on desktop, mobile, and VR/AR headsets |
| Release Date | December 16, 2015 |
| Website | https://aframe.io |
A-Frame is an open-source web framework for building three-dimensional, virtual reality, and augmented reality experiences that run in a web browser. It is built on top of the three.js graphics library and lets developers describe a 3D scene with custom HTML elements, using an entity-component-system (ECS) pattern rather than writing low-level WebGL code.[1][2]
A-Frame was created within the Mozilla VR team (MozVR) and released to the public on December 16, 2015. Its stated goal was to let web developers, designers, and 3D artists author VR content with the same skills used to build web pages, without requiring deep knowledge of WebGL or three.js.[3][4] Since the original Mozilla team moved on, the framework has been maintained by the VR company Supermedium, whose co-founders Diego Marcos and Kevin Ngo had led A-Frame at Mozilla, together with Don McCurdy; Google has funded Supermedium's work on the project's WebXR support.[4][2]
History
A-Frame was developed inside Mozilla's WebVR team during 2015, with its first public version released on December 16, 2015.[4][3] Early versions targeted the WebVR browser API and worked across desktop, Oculus Rift, and smartphone viewers such as Google Cardboard.[3]
When the WebVR API was superseded by the newer WebXR standard, A-Frame followed. Version 0.9.0, released on February 11, 2019, added introductory WebXR support alongside performance work and a refactored visual Inspector, while WebVR remained the default at that stage.[5] Version 1.0.0, released on December 16, 2019 (four years after the first release), moved to full WebXR support in place of the deprecated WebVR API and added an out-of-the-box AR mode for browsers that support Google's ARCore and Apple's ARKit. The 1.0.0 announcement cited more than 300 contributors and over 10,000 GitHub stars at that point.[4]
The project has continued under semantic versioning. Version 1.7.0, released on February 20, 2025, modernized the build by replacing CommonJS with ES modules and adding import map support, along with post-processing and experimental WebGPU and Three.js Shading Language (TSL) support.[6] The current stable release is version 1.7.1, published on April 1, 2025.[2][7] A-Frame is released under the MIT License and is written almost entirely in JavaScript.[2]
How it works
A-Frame brings the entity-component-system pattern, common in game engines, to the browser's Document Object Model (DOM). A scene is declared with an <a-scene> element, and 3D objects are written as HTML elements such as <a-box>, <a-sphere>, or the generic <a-entity>. Each entity is a container with no appearance or behavior of its own; functionality is added by attaching reusable components (for geometry, material, position, animation, physics, and so on) as HTML attributes. Developers compose objects by mixing components together rather than through class inheritance.[1][8]
Because A-Frame is a layer over three.js, anything in a scene can also be reached through the underlying three.js objects and WebGL when finer control is needed, so the HTML interface and lower-level graphics code can be used together.[3][1]
A-Frame ships with a built-in visual editor, the A-Frame Inspector, which can be opened on any A-Frame scene with the keyboard shortcut Ctrl+Alt+I. It lets a developer select, move, rotate, scale, and clone entities, edit their components and properties through widgets, view the scene as a tree-based scene graph, and export the result back to HTML.[9]
WebXR and AR support
Through the WebXR Device API, A-Frame scenes run across platforms from a single codebase, including desktop browsers, mobile devices, and dedicated VR and AR headsets, provided the browser supports WebXR. On a 2D screen a scene renders as an interactive 3D view; on a compatible headset the user can enter immersive VR, and on AR-capable mobile browsers the scene can be placed in the real world through the device camera.[2][4] Google provided funding to Supermedium specifically to develop and maintain A-Frame's WebXR support.[4]
Relationship to WebVR and WebXR
A-Frame began as a tool for the WebVR API, one of the first widely used ways to bring VR to the open web, and it was among the more prominent frameworks built on that API.[3] As browser vendors deprecated WebVR in favor of WebXR, A-Frame migrated to the newer standard, completing the transition in version 1.0.0.[5][4] The framework is often discussed alongside three.js (which it wraps) and other web 3D engines as a way to author for the open metaverse using web technologies.[10]
Adoption
A-Frame has been used for browser-based VR experiences, demos, and social applications. Mozilla's Hubs, a social VR chat platform delivered entirely through the browser, was built using A-Frame, with the companion library networked-aframe adding the real-time multiuser layer.[7][10] The social VR platform AltspaceVR published guidance on building experiences with A-Frame.[11]
External resources
Official documentation and guides are published at the A-Frame website.[1] Community demonstrations built with A-Frame include the painting tool A-Painter and the game demo A-Invaders, both hosted on the project's GitHub organization.[12][13]
References
- ↑ 1.0 1.1 1.2 1.3 "Introduction - A-Frame". https://aframe.io/docs/.
- ↑ 2.0 2.1 2.2 2.3 2.4 "aframevr/aframe: Web framework for building virtual reality experiences". https://github.com/aframevr/aframe.
- ↑ 3.0 3.1 3.2 3.3 3.4 Ngo, Kevin (2016-03-03). "Build the Virtual Reality Web with A-Frame". https://hacks.mozilla.org/2016/03/build-the-virtual-reality-web-with-a-frame/.
- ↑ 4.0 4.1 4.2 4.3 4.4 4.5 4.6 Ngo, Kevin (2019-12-16). "A-Frame v1.0.0 - WebXR Support, AR Mode". https://aframe.io/blog/aframe-v1.0.0/.
- ↑ 5.0 5.1 "A-Frame v0.9.0 - Perf & Initial WebXR". 2019-02-11. https://aframe.io/blog/aframe-v0.9.0/.
- ↑ "A-Frame 1.7.0 - Post-processing, WebGPU and TSL, Logitech MX Ink integration". 2025-02-20. https://aframe.io/blog/aframe-v1.7.0/.
- ↑ 7.0 7.1 "A-Frame (software)". https://en.wikipedia.org/wiki/A-Frame_(software).
- ↑ "Entity-Component-System - A-Frame". https://aframe.io/docs/1.5.0/introduction/entity-component-system.html.
- ↑ "aframevr/aframe-inspector: Visual inspector tool for A-Frame". https://github.com/aframevr/aframe-inspector.
- ↑ 10.0 10.1 Template:Cite arXiv
- ↑ "Building Social VR Apps in AltspaceVR with A-Frame". https://medium.com/immersion-for-the-win/building-social-vr-apps-in-altspacevr-with-a-frame-81cb1bbc3ec4.
- ↑ "aframevr/a-painter". https://github.com/aframevr/a-painter.
- ↑ "dmarcos/a-invaders". https://github.com/dmarcos/a-invaders.