What is Loom
Build Unity game UI with HTML, CSS, and Solid, driven by a typed C# bridge.
Loom renders a Vite + Solid app as a fullscreen overlay in your Unity game. Write the screens in HTML, CSS, and Solid. Your C# code supplies the data and handles button clicks through a typed bridge.
Project structure
Your UI app lives beside the Unity assets:
MyGame/
Assets/
Packages/
UI/
package.json
vite.config.ts
generated/ # TypeScript contract generated from C#
src/
index.tsx # App startup and bridge provider
bridge.ts # Bridge startup and browser mocks
App.tsx
styles.css
The Unity package (onl.snack.loom) includes the runtime, platform plugins,
Editor setup commands, and matching @loomgui/bridge and @loomgui/vite-plugin packages. You do not need to build Loom from source.
Unity and the UI
Define one bridge class in C#. Its public properties expose state, methods
marked [BridgeAction] handle UI requests, and Event<T> properties send
one-shot notifications. Loom generates the TypeScript contract so your Solid
components can read bridge.health or call bridge.startGame().
In the Editor, Loom runs Vite for hot reload. A player loads a production UI bundle; Node.js and the dev server do not ship with the game.
Use Loom for menus, HUDs, inventories, and other screen overlays. It does not provide world-space UI, a no-code editor, or a general browser for arbitrary websites. Check Supported platforms for the supported Unity, URP, OS, and tooling versions.