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.
Create a new project with a single command:
npm create @iwsdk@latestOr install into an existing project:
npm install @iwsdk/core threeFor guides, concepts, and API reference, visit: https://iwsdk.dev
| Package | Description |
|---|---|
| @iwsdk/core | Core SDK with ECS, systems, and WebXR integration |
| @iwsdk/create | CLI for scaffolding new projects |
| @iwsdk/glxf | GLXF scene format loader for Three.js |
| @iwsdk/locomotor | Locomotion engine for Three.js WebXR |
| @iwsdk/xr-input | WebXR input system for Three.js |
| @iwsdk/vite-plugin-iwer | WebXR emulator injection for development |
| @iwsdk/vite-plugin-gltf-optimizer | GLTF/GLB optimization during build |
| @iwsdk/vite-plugin-uikitml | UIKitML to JSON compiler for spatial UI |
| @iwsdk/vite-plugin-metaspatial | Meta Spatial Editor integration |
| Package | Description |
|---|---|
| @iwsdk/starter-assets | CDN-hosted templates and assets for CLI |
# Install dependencies
pnpm install
# Build all packages as tgz files (for examples to consume)
npm run build:tgz
# Run an example (fresh install from local tgz packages)
cd examples/locomotion && npm run fresh:dev
# Lint and format
pnpm run lint
pnpm run format
# Build a specific package
pnpm --filter @iwsdk/core buildThe 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.tgzarchivesnpm run fresh:dev(in example) - Cleansnode_modules, reinstalls from tgz files, and starts dev server
This ensures examples always test against the latest local build.
IWSDK is licensed under the MIT License. See the LICENSE file for details.
Contributions are welcome! Please review our Contributing Guidelines and Code of Conduct before submitting issues or pull requests.