The Immersive Web SDK makes building immersive web experiences as approachable as traditional web development. It’s a complete collection of frameworks and tools built on Three.js with a high-performance Entity Component System, developer-first workflow with one-command setup and built-in emulation, and production-ready systems for grab interactions, locomotion, spatial audio, physics, and scene understanding.
Same code, two experiences: Run immersively in VR/AR headsets and automatically provide mouse-and-keyboard emulation on desktop browsers. No browser extensions, no special setup—anyone with a laptop can develop for the immersive web.
Keep the exact three alias at the application root and override transitive
resolutions so the app and IWSDK share one runtime. npm reads the override from
package.json:
# Use the pinned Node major, install dependencies, and build runtime/tooling packages
nvm use
corepack pnpm@10.18.3 run bootstrap
# Build every workspace package, including the generated reference corpus
corepack pnpm@10.18.3 run build:all
# Build all packages as tgz files (for examples to consume)
npm run build:tgz
# Type-check every example as a fresh consumer of locally built tgz packages
corepack pnpm@10.18.3 run typecheck:examples
# Run an example (fresh install from local tgz packages)
cd examples/locomotion && npm run fresh:dev
# Lint and format
corepack pnpm@10.18.3 run lint
corepack pnpm@10.18.3 run format
# Build a specific package
corepack pnpm@10.18.3 --filter @iwsdk/core build
bootstrap is also the repair command for a partial or stale source build. It
uses the lockfile, builds runtime and tooling packages in dependency order, and
generates WebXR input profiles from the pinned npm asset package instead of
making a separate CDN request. It deliberately leaves out the producer-only
@iwsdk/reference-assets package. build:all includes that package by running
its full ingest pipeline, which downloads the pinned embedding model on a fresh
machine. Run corepack pnpm@10.18.3 run doctor for environment, proxy, and
generated-output checks.
For a network-restricted checkout whose pnpm store is already warm, use
corepack pnpm@10.18.3 run bootstrap:offline. Initial dependency installation
still needs registry access (and honors standard npm/pnpm proxy configuration),
but subsequent profile generation and builds are offline-safe. A directory-linked
@iwsdk/cli now keeps a stable launcher; if its dist is missing, it prints the
exact package build command instead of leaving a broken executable link.
Development Workflow
The examples use file: dependencies pointing to .tgz files built from local packages. This simulates how end-users will consume the packages from npm.
npm run build:tgz - Builds all packages in dependency order and creates .tgz archives
npm run fresh:dev (in example) - Cleans node_modules, reinstalls from tgz files, and starts dev server
This ensures examples always test against the latest local build.
typecheck:examples applies the same boundary to every TypeScript example: it
rebuilds development tarballs, removes each example’s ignored install state,
installs from those tarballs, and invokes that example’s local TypeScript binary.
License
IWSDK is licensed under the MIT License. See the LICENSE file for details.
Immersive Web SDK
Where every webpage can become a world.
The Immersive Web SDK makes building immersive web experiences as approachable as traditional web development. It’s a complete collection of frameworks and tools built on Three.js with a high-performance Entity Component System, developer-first workflow with one-command setup and built-in emulation, and production-ready systems for grab interactions, locomotion, spatial audio, physics, and scene understanding.
Same code, two experiences: Run immersively in VR/AR headsets and automatically provide mouse-and-keyboard emulation on desktop browsers. No browser extensions, no special setup—anyone with a laptop can develop for the immersive web.
Getting Started
Create a new project with a single command:
Or install into an existing project:
Keep the exact
threealias at the application root and override transitive resolutions so the app and IWSDK share one runtime. npm reads the override frompackage.json:pnpm 10 and 11 read root overrides from
pnpm-workspace.yaml:Documentation
For guides, concepts, and API reference, visit: https://iwsdk.dev
Packages
Development
bootstrapis also the repair command for a partial or stale source build. It uses the lockfile, builds runtime and tooling packages in dependency order, and generates WebXR input profiles from the pinned npm asset package instead of making a separate CDN request. It deliberately leaves out the producer-only@iwsdk/reference-assetspackage.build:allincludes that package by running its full ingest pipeline, which downloads the pinned embedding model on a fresh machine. Runcorepack pnpm@10.18.3 run doctorfor environment, proxy, and generated-output checks.For a network-restricted checkout whose pnpm store is already warm, use
corepack pnpm@10.18.3 run bootstrap:offline. Initial dependency installation still needs registry access (and honors standard npm/pnpm proxy configuration), but subsequent profile generation and builds are offline-safe. A directory-linked@iwsdk/clinow keeps a stable launcher; if itsdistis missing, it prints the exact package build command instead of leaving a broken executable link.Development Workflow
The examples use
file:dependencies pointing to.tgzfiles built from local packages. This simulates how end-users will consume the packages from npm.npm run build:tgz- Builds all packages in dependency order and creates.tgzarchivesnpm run fresh:dev(in example) - Cleansnode_modules, reinstalls from tgz files, and starts dev serverThis ensures examples always test against the latest local build.
typecheck:examplesapplies the same boundary to every TypeScript example: it rebuilds development tarballs, removes each example’s ignored install state, installs from those tarballs, and invokes that example’s local TypeScript binary.License
IWSDK is licensed under the MIT License. See the LICENSE file for details.
Contributing
Contributions are welcome! Please review our Contributing Guidelines and Code of Conduct before submitting issues or pull requests.
Developer Terms