The best way
for Claude to do UI.
Writing once is enough.
Elegantly simple
- generics
T extends string
- props
title: string
initialCount: number = 0
- state
count: number = initialCount
- computed
isBig = count > 10
- view
section.card
h2 {title}
p Count: {count}
button
@click
count++
Increment
if isBig
p.warning Big number- propsComponent interfaceTyped props with optional defaults. Compiles to framework-native declarations — no boilerplate.
- statePortable reactivityMutable local state lowered to React hooks, Vue refs, or Svelte variables.
- viewTemplateIndentation-based markup. :: for scoped styles, @event for handlers.
- computedDerived valuesDependency-aware expressions become useMemo, computed(), or Svelte reactive statements.
- genericsTypeScript genericsGeneric type parameters for type-safe, reusable component APIs.
Built for the
agent era.
Loom gives AI agents a structured projection of your component. They read and patch only what they need, block by block.
Fits your stack
by design.
Matches your existing compiler, type systems, and directory layout through the Vite plugin.
Instant Compiles
Written in Rust for sub-30ms compile speeds. Hot reloading happens so fast that it feels completely transparent.
TypeScript-Native
Loom keeps props and generics typed, then emits native React TSX, Vue SFCs, or Svelte components.
Incremental Adoption
No massive rewrites. Drop .loom components into your current framework directories and compile them with Vite.
Start weaving.
Loom is open source and ready to drop into your Vite configs today.