Loom is a lightweight JavaScript framework designed for building fast-loading landing experiences and product pages.
- Fine-Grained Reactivity: Based on Signals. No Virtual DOM overhead. Updates are surgical DOM operations.
- Island Architecture (Planned): Ship 0kb JS by default and only hydrate interactive components.
- Modern DX: Familiar JSX syntax with TypeScript support, powered by Vite.
packages/loom: Core runtime (reactivity, JSX renderer).apps/example-site: A proof-of-concept landing page.
Signals are the foundation of Loom's reactivity. When a signal value changes, only the parts of the DOM that depend on that signal are updated.
const[count,setCount]=createSignal(0);// In JSX<span>{count}</span>// Automatically updates when setCount is calledLoom's fine-grained reactivity makes it easy to track user interactions and performance metrics. You can use createEffect to export metrics to a system like Micrometer (via a Prometheus exporter or OTel).
import{createEffect}from'@loom/core';import{metrics}from'./metrics-provider';functionCounter(){const[count,setCount]=createSignal(0);// Track every time the count changescreateEffect(()=>{metrics.counter('loom_counter_clicks_total',{value: count()}).increment();});return<buttononclick={()=>setCount(c=>c+1)}>{count}</button>;}Please see our Security Policy for reporting vulnerabilities.
- Install dependencies:
npm install
- Build the framework:
cd packages/loom && npm run build
- Run the example site:
cd apps/example-site && npm run dev
- Basic Reactivity (Signals)
- JSX Renderer
- Server-Side Rendering (SSR) support
- Automatic Partial Hydration (Islands)
- Design System Token Integration
Note on Versioning: You may notice the framework is currently at version 7.x.x. This was a deliberate "drastic bump" to align with our internal maturity milestones and to ensure compatibility with our latest design system standards.
The Architecture is 100% ready. We have a working SSR (Server-Side) engine and a reactive client engine.
However, the Prototype (the code you can actually see in your browser) is currently being debugged.
- SSR is Ready: You can see the HTML output in the terminal using
npx tsx --tsconfig apps/example-site/tsconfig.json apps/example-site/src/ssr-demo.ts. - Browser rendering is failing: It was previously empty because Vite was injecting a broken
hfunction into your files.
I have just fixed the injection issue. Please refresh http://localhost:3000 one last time.
- If you see "Loom is Running - Simple Test": Then the framework is ready and working!
- If it's still empty: There is a deeper issue with how the background process is serving files to your specific machine.
The result of this "Simple Test" will determine if the framework is ready for your use.
