Introduction
The Service Framework for the web is a small runtime for organising an application as services: classes with a lifecycle, explicit dependencies and one place to be registered. This page explains why that is worth doing, what the pieces are, and how they fit together in a running app.
Getting Started guide
Everything in the framework is code: no editor, no generator, no assets. This guide takes a plain TypeScript project from an empty file to a running service in six steps.
Service Design
A service is a plain TypeScript class. The manager creates it from a registration, hands it a typed configuration, drives its lifecycle, and hands it out by token to whatever needs it. This page covers what a service owns, which lifecycle calls it receives and where those calls come from, and how it reacts to the environment it runs in.
Advanced Service design and sub services
A service module is a sub-service owned by a parent service, with its own configuration and lifecycle. This page explains when to use one, how to register it, and walks through a leaderboard service built from modules.
Service Implementation patterns
Services can be combined in a handful of recurring shapes. This page names five of them, from a single standalone service to a service that hides its modules behind one API, and says when each fits.
Host runtimes and schedulers
The core package has no loop and no knowledge of the browser, a renderer or a headset. Something has to feed it frames, visibility and, for XR, a session. That something is a host binding. This page explains the two seams a binding plugs into, which binding drives what, and how a service reaches host-specific features without depending on the host.
Dependency Injection
A service declares what it depends on in its registration, and the manager constructs those dependencies first and passes them into the constructor. This page covers the rules, the errors you can hit, and a three-service tutorial.
Roadmap
Last updated - 15 September 2026