Now in active development

The last framework you'll ever need to learn.

Spec is a declarative UI language that compiles to minimal, framework-free browser code. Designed from the ground up for the age of AI-authored software.

Get early access Why Spec? →
10× smaller bundles
0 runtime framework
2KB scheduler, that's it

The old frameworks solved
the wrong right problem.

React. Vue. Angular. Svelte. They're all brilliant solutions to a problem that no longer exists. That problem was this: humans had to write and maintain UI code. So frameworks were built around human cognition — components you can reason about, a virtual DOM you can predict, state machines you can hold in your head.

Every abstraction, every kilobyte of runtime, every reconciler cycle exists because a person needed to understand what the code was doing.

AI doesn't need any of that. It needs one thing: a clear specification of what to build. Given that, it can generate perfect DOM operations every time — faster than any human, without ever getting confused by deeply nested state or prop drilling or stale closures.

The scaffolding is coming down.

Built for the world
we're actually in.

Spec compiles your declarations to the minimum possible JavaScript. No virtual DOM. No reconciler. Nothing that exists for a human's benefit.

Direct DOM writes. No diffing.

The compiler knows, at build time, exactly which DOM nodes change when any piece of state changes. One state change triggers one DOM write. The browser never does work it doesn't need to do.

📦

Bundles that are a fraction of the size.

A React app ships React. Every app ships React. Spec ships nothing but the code your application actually uses, plus a 2KB scheduler. An app that would be 150KB in React is 15KB in Spec.

🎨

A visual system that actually scales.

Every Spec project defines spacing, typography, color, and motion once. Dark mode? Change the visual system. Full rebrand? Change the visual system. What design tokens always promised and never quite delivered.

🤖

Code AI generates perfectly, every time.

The language is unambiguous, declarative, and consistent. No footguns, no five ways to do the same thing, no subtle timing issues. Describe what you want. Spec comes out the other end. It compiles. It runs.

🧩

Components are specifications, not artifacts.

When you install a Spec package, the compiler processes it alongside your code. Imported components get full optimization — monomorphized to your exact usage, dead code eliminated, resolved against your visual system.

♾️

Zero framework debt.

Spec doesn't accumulate the technical debt that React's constant churn creates. Your specification is durable. The compiler improves over time — your specs don't need to change.

Binary bytecode — the wire format doesn't have to be JavaScript.

Spec's bytecode output mode compiles your UI to a compact binary .specbc payload instead of JavaScript. A tiny 2-3KB interpreter — cached permanently in the browser — decodes it into direct DOM operations. The same DOM operation that takes ~150 bytes as minified JavaScript takes 12-20 bytes in bytecode, with all strings and style values stored once in a shared dictionary. First visit: ~3KB interpreter + 15-30KB of binary UI vs. 200–500KB of JavaScript that must be downloaded, parsed, and compiled before anything renders.

Describe what you want.
Spec handles the rest.

Spec reads like a specification — because that's exactly what it is.

dashboard.spec
component UserDashboard {
  // State is declared, not wired
  state {
    user: User
    metrics: Metrics
    loading: bool = true
  }

  // Visual system variables, not hard-coded values
  layout {
    direction: column
    gap: $spacing.lg
    padding: $spacing.xl
  }

  when loading {
    Skeleton { rows: 4 }
  }

  otherwise {
    Header { title: "Welcome back, {user.name}" }
    MetricsGrid { data: metrics }
    RecentActivity { userId: user.id }
  }
}

Compiles to direct DOM mutations — no virtual DOM, no reconciler, no runtime framework.

Not another layer.
A better foundation.

Every abstraction in modern frameworks exists for human benefit. In an AI-authored world, those abstractions are just overhead.

React / Vue / Angular
Virtual DOM diffing on every render
Framework ships to every user
State machine model breaks at scale
Abstractions designed for human cognition
Constant breaking upgrades and churn
Ecosystem of version-locked dependencies
AI output requires human review and fixes
JavaScript-only wire format — verbose and slow to parse
Spec NEW
Direct DOM writes, zero diffing
2KB scheduler + your app code only
Compiler-resolved state dependencies
Designed for machine generation
Specs are durable; compiler improves
Components compiled into your app
Unambiguous language — AI generates it perfectly
Binary bytecode mode — 10× smaller than minified JS

The business math
is obvious.

When AI writes the code, the bottleneck is no longer development capacity — it's specification clarity. Spec makes that shift concrete.

10×

Faster delivery

AI generates Spec faster than any developer could write React. Describe it, compile it, ship it.

1

Smaller teams

A single developer with AI and Spec can do what used to require a frontend team.

Framework debt

No breaking releases. No ecosystem of dependencies all needing updates together. Your specs don't rot.

Better products

Every app you ship is faster and lighter than its React equivalent — by default, not by effort.

Every new app
should be built in Spec.

Starting fresh

There is no longer a reason to choose React for a new project. You're not hiring a team of developers who need to understand the codebase. You're working with AI that will generate the code. React's abstractions cost you performance, bundle size, and a runtime you have to ship to every user — and give you back nothing of value.

Maintaining something

You already know the cost. Framework upgrades. Breaking changes. The relentless churn. Spec's output is just JavaScript. It doesn't have breaking releases. It doesn't have an ecosystem of dependencies that all need to be updated together. It has a compiler that gets better over time.

Building for the future

The trajectory is clear. AI-authored code is already the norm in forward-thinking organizations. That trend accelerates. Building on a foundation designed for that world isn't early adoption — it's just good planning.

The moment is now.

Every previous shift in web development took years. AI doesn't have that friction. The transition isn't gradual — it's immediate for anyone willing to make it.