Symptoms → causes
“Loom version mismatch” on startup
Loom is loading a native plugin and a Unity package from different releases.
Loom ships as a single package, so this almost always means Unity is still
loading an old binary from Library/PackageCache/ after a package update.
Fix: Delete <Project>/Library/PackageCache/com.loomgui@*/Plugins/ and
restart Unity. The package reinstalls on the next launch.
The built game shows no UI (but the Editor works)
The UI runs from a live dev server in the Editor, but a player build loads a
pre-built bundle from StreamingAssets/Loom/. If that bundle wasn’t produced,
the game ships with no UI even though everything works in the Editor.
The UI bundle is built automatically during the player build. The usual reasons it doesn’t end up in the game:
- Node.js isn’t installed for the user running the Editor. The build step
runs
npm; without Node it fails. Confirm withLoom → Doctor→ “Node.js found”. Install Node 20+ and relaunch Unity. - UI dependencies were never installed. Run
Loom → Sync UI Dependenciesbefore building. (A current build aborts with a clear error in this case rather than shipping an empty UI.) - A custom
vite.configoutDir. It must bedist; the build copiesUI/distinto StreamingAssets. See Player builds.
Check the Unity Console during the build for [Loom] lines: Running npm install / Copying UI/dist -> StreamingAssets/Loom indicate the UI build
ran; an error there tells you which step failed.
The built game’s UI freezes on the first frame (Editor works)
The UI renders its first frame (the initial state) then never updates: progress bars stay at 0, the screen never changes, buttons don’t react, even though the game is clearly running. In the Editor everything works.
Cause: your UI bundle contains two copies of solid-js. Solid’s
reactivity is per-instance, so the bridge updates state in one copy while your
components are wired to the other, so nothing re-renders. The Editor’s dev server
automatically collapses solid to one copy; a production build does not, so this
only shows up in player builds.
Fix: in your UI’s vite.config.ts, dedupe solid:
export default defineConfig({
plugins: [solid(), loom()],
resolve: {
dedupe: ['solid-js', 'solid-js/web', 'solid-js/store'],
},
// ...
}) Rebuild the player. To confirm the fix, your UI/dist bundle should contain a
single solid copy. Projects scaffolded with Loom → Setup UI Project include
this dedupe by default.
The Splash screen never advances
The bridge isn’t getting state updates. Common causes:
- No Loom UI component in the scene. Did you add a Loom UI component
to a startup-scene GameObject (or run
Loom → Setup UI in Current Scene)? Confirm viaHierarchy: there should be aLoomUIcomponent present. - Bridge class doesn’t inherit
LoomBridgeBase. The[Bridge]class must inheritLoomBridgeBase; the source generator errors if it doesn’t, and the bridge won’t register. - The dev server is serving a stale or wrong UI. Run
Loom -> Restart Dev Server, then Play again. Loom reclaims its own orphaned dev server from a previous session automatically; restarting forces a clean one.
“The type or namespace name ‘Bridge’ could not be found”
The source generator hasn’t run. From the Unity menu, Loom -> Regenerate Types. If that doesn’t help, check that your C# class is partial and the [Bridge] attribute is exactly [Bridge] (not [Loom.Bridge] etc.).
npm install hangs forever
Usually a registry resolution issue. The bundled tarballs are at file:./.loom/... paths, which don’t need network. If you have other deps
in UI/package.json pointing at the public registry, those do. Check that
the registry URL in your .npmrc is reachable.
After Editor restart, the first Play shows a blank UI
A known startup race on the very first Play after a fresh Editor launch. Workaround: Stop, Play again. Will be fixed in a future plugin release.
“Mobile Dependency Resolver required” warning on opening the project
This is a Unity Editor warning unrelated to Loom; it surfaces because some package in your project (probably an analytics or ads SDK, not Loom) has declared a dependency on the Mobile Dependency Resolver. You can dismiss the warning; Loom is unaffected.