-Frame is a web framework for building virtual reality (VR) experiences. As originators of WebVR, the Mozilla VR team developed A-Frame to be the easiest as well as the most powerful way to develop WebVR content. As a fully open project, A-Frame has grown to be one of the largest and most welcoming VR communities.
A-Frame is based on top of HTML, making it simple to get started. But A-Frame is not just a 3D scene graph or a markup language; the core is a powerful entity-component framework that provides a declarative, extensible, and composable structure to three.js.
A-Frame supports most VR headsets such as Vive, Rift, Daydream, GearVR, Cardboard, and can even be used for augmented reality. Although A-Frame supports the whole spectrum, A-Frame aims to define fully immersive interactive VR experiences that go beyond basic 360° content, making full use of positional tracking and controllers. The Mozilla VR team is currently using A-Frame as the foundation for a Metaverse-in-progress.
A-Frame can be developed from a plain HTML file without having to install
anything! A great way to try out A-Frame is to remix the starter example on
Glitch, an online code editor that instantly hosts and deploys for
free. Or create an
.html file and include A-Frame in the
The Installation page provides more options for getting started with A-Frame. To get started learning A-Frame, check out A-Frame School for visual step-by-step lessons to complement the documentation.
VR Made Simple: Just drop in a
<script> tag and
A-Frame will handle 3D boilerplate, VR setup, and default controls. Nothing to
install, no build steps.
Declarative HTML: HTML is easy to read, understand, and copy-and-paste. Being based on top of HTML, A-Frame is accessible to everyone: web developers, VR enthusiasts, artists, designers, educators, makers, kids.
Cross-Platform VR: Build VR applications for Vive, Rift, Daydream, GearVR, and Cardboard with support for all respective controllers. Don’t have a headset or controllers? No problem! A-Frame still works on standard desktop and smartphones.
Performance: A-Frame is optimized from the ground up for WebVR. While
A-Frame uses the DOM, its elements don’t touch the browser layout engine. 3D
object updates are all done in memory with little overhead under a single
requestAnimationFrame call. For reference, see A-Painter, a Tilt Brush
clone built in A-Frame that runs like native (90+ FPS).
Visual Inspector: A-Frame provides a handy built-in visual 3D
inspector. Open up any A-Frame scene, hit
<ctrl> + <alt> + i,
and fly around to peek under the hood!
Registry: Take powerful components that developers have published and plug them in straight from HTML. Similar to the Unity Asset Store, the A-Frame Registry collects and curates these components for easy discovery.
Components: Hit the ground running with A-Frame’s core components such as geometries, materials, lights, animations, models, raycasters, shadows, positional audio, text, and Vive / Touch / Daydream / GearVR / Cardboard controls. Get even further with community components such as particle systems, physics, multiuser, oceans, mountains, speech recognition, motion capture, teleportation, super hands, and augmented reality.
If it’s your first time here, here’s a plan for success for getting into A-Frame:
For inspiration, check out what other people have built with A-Frame on the Weekly Blog and awesome-aframe. Users of A-Frame have included The Washington Post, Amnesty International, Google Creative Labs, Al Jazeera, NPR, Shopify, iStaging, and IDEO.
Read through the basic documentation and guides to get a grasp.
Run through A-Frame School, a brief step-by-step visual tutorial.
When you build something, share your project online and we’ll feature it on A Week of A-Frame!