Table of Contents

August 27, 2025 · View on GitHub

JSAR Poster

JSAR: a Browser Engine Library designed for The Spatial Web.

User Manual · DeepWiki

GitHub Release GitHub commit activity GitHub License

Table of Contents

  1. Introduction
  2. Web Compatibility Overview
  3. Contributing
  4. Loaders

Introduction

JSAR (/dʒ:-sar/) is a Web browser engine designed for the spatial Web. It enables you to create and present immersive Web contents using the modern Web technologies (HTML5, CSS3, TypeScript) and seamlessly integrate them into mainstream 3D engines like Unity, UnrealEngine, and other 3D engines.

To understand the architectural decisions and core concepts behind JSAR, read our comprehensive guide: Understanding the Spatial Web Browser Engine.

Spatial Web

The Spatial Web represents the next evolution of the Web, where every HTML element exists in three-dimensional space with real 3D coordinates, rather than being confined to flat 2D screens. This spatial transformation enables developers to freely leverage Web technologies to create truly immersive experiences, seamlessly blending virtual reality (VR), augmented reality (AR), and mixed reality (MR) into both our physical world and any digital virtual environments.

Key characteristics of the Spatial Web include:

  • 3D-First Design: Content and interfaces are designed to exist in 3D space
  • Natural Interaction: Users can interact with digital content using natural gestures and movements
  • Contextual Awareness: Digital experiences that understand and respond to their physical surroundings
  • Persistent: Digital content can remain anchored in physical space across sessions

Key Features

  • Designed for the spatial Web - Every HTML element (including 2D & 3D) is spatially rendered in the browser.
  • Web Standards Compliant - Supports modern Web standards, including HTML5, CSS3, DOM, WebGL, WebXR and others.
  • High Performance - Dynamically batches all spatialized HTML elements into ≤10 GPU draw calls per frame.
  • Cross-Platform - Delivers flawless performance across every platform (desktop, mobile, and XR) with pixel-perfect consistency.
  • Web Developer Friendly - Deep Chrome DevTools integration for seamless debugging and profiling.

Web Compatibility Overview

Supported URL Formats to Request

Like the classic Web browser, it supports not only the HTML document, but also lots of formats, such as SVG, 3D models, etc. The following formats is expected to support:

FormatStatusRecommended Use Case
HTMLPartiallyBrowsing classic Web pages
GLTFOKDisplaying 3D models
JPEG/PNGOKDisplaying images
SVGOKDisplaying SVG images

Scripting & Modules

APIStatusTest Suite
JavaScriptOk-
TypeScriptOk-
ECMAScript ModuleOk-
WebAssemblyOk-
Web WorkerOk-

3D Graphics

APIStatusTest Suite
WebGL1Okhttps://github.com/KhronosGroup/WebGL/tree/main/sdk/tests/conformance
WebGL2Okhttps://github.com/KhronosGroup/WebGL/tree/main/sdk/tests/conformance2
WebGPUNot startedhttps://github.com/gpuweb/cts

Rendering Backends

The following are supported renderer backends:

BackendOSStatusTest Suite
OpenGLES3AndroidOk-
OpenGLmacOSPartially-
MetalmacOSNot started-
D3D11WindowsNot started-

WebXR Device APIs

APIStatusTest Suite
Spaces and Reference SpacesOk-
Stereo RenderingOk-
Inputs and Input SourcesOk-

Supported Input Sources

Input SourceStatusTarget Ray ModeGamepadProfiles
gazeOkgazeNo-
hand(2)Oktracked-pointerNo-
main controllerOktracked-pointer/screenYes-
transientNot implementedtransient-pointerNo-

Note: Gamepad is not supported in the current version.

Features

FeatureStatusTest Suite
Hit TestNot implemented-
AnchorsNot implemented-
Hand TrackingOk-
Eye TrackingNot implemented-
Depth SensingNot implemented-
Face TrackingNot implemented-
Body TrackingNot implemented-
Environment ProbesNot implemented-
Light EstimationNot implemented-

Multimedia APIs

In Web multimedia, there are the following APIs that JSAR would support:

  • Playback: play audio and video, and use Web Audio API to create audio effects.
  • Capture: capture audio and video from the device.

Playback

APIStatusTest Suite
HTMLAudioElementOk-
HTMLVideoElementNot started-
Web Audio APINot started-

Capture

APIStatusTest Suite
MediaDevicesNot started-
MediaRecorderNot started-

Canvas

APIStatusTest Suite
RenderingContext2DOk-
PDFRenderingContextNot started-
HTMLRenderingContextNot started-

Note: PDFRenderingContext and HTMLRenderingContext are introduced by JSAR, which is used to customize the PDF and HTML rendering.

Classic Rendering

APIStatusTest Suite
DOM APIPartially-
HTML5Partially-
CSS3Partially-
Web ComponentNot started-

Contributing

To contribute to the project, you need to follow the steps below to build this project from source.

Prerequisites

$ node -v
v18.16.1

$ rustc -v
rustc 1.86.0-nightly (243d2ca4d 2025-01-06)

Note that JSAR requires Rust nightly toolchain to build.

Depending on your target platform, you'll need to add the corresponding Rust targets:

For macOS builds:

$ rustup target add aarch64-apple-darwin
$ rustup target add x86_64-apple-darwin

For Android builds:

$ rustup target add aarch64-linux-android

Build from source

Firstly, you need to install the dependencies and build the JSAR JavaScript bundle which is used in the runtime.

$ npm install && make jsbundle

Then you can build the runtime library:

$ make darwin    # for macOS universal library
$ make android   # for Android-aarch64 library

If you want to do a clean build, you can run:

$ make darwin CLEAN=yes

Supported parameters:

  • CLEAN: Clean the build directory before building.
  • RELEASE: Build the release version of the library.
  • INSPECTOR: Enable the inspector.

Loaders

The loaders are more convenient way to integrate JSAR into your applications, the following loaders are planned to be developed:

LoaderStatusDescription
jsar-loader-unityOkIntegrates JSAR into Unity applications
jsar-loader-unrealNot startedIntegrates JSAR into Unreal Engine applications

To develop a new loader, you could see the Embedder API Documentation for more details.