v1.1.0 — The zero-runtime framework is here

The Zero-Runtime
JavaScript Framework

Ships 0 KB on static pages. 466 B on interactive. No hydration. No virtual DOM. Just compiled JavaScript.

$npm create noopjs@latest
Creating your NoopJS project...
✔ Project created in 0.3s
✔ 0 KB framework JS on static pages
✔ 466 B on interactive pages
✔ 317 B + 3.5 KB cached for SPA
Ready! cd my-app && npm run dev

How It Works

NoopJS compiles your framework code away at build time. Zero runtime overhead on static pages, minimal JS on interactive ones.

1

Write Components

Use familiar JSX with signals. NoopJS compiles your components ahead of time — no virtual DOM, no hydration.

2

Compile at Build

Each page is compiled to a minimal bootstrap script. Interactive pages get ~466 B of inline JS. Static pages get 0 KB.

3

Stream & Resume

Streaming SSR delivers shell-first HTML. The inline bootstrap resumes interactivity without re-running the entire component.

Bundle Size Comparison

Framework JS loaded per page. NoopJS ships 0 KB for static, 466 B for resume, and 317 B + 3.5 KB cached for SPA.

NoopJS (static)
0 KB
NoopJS (resume)
466 B
NoopJS (SPA)
317 B + 3.5 KB
Qwik
~1 KB
SolidJS
~7 KB
Svelte
~10 KB
Vue
~16 KB
React
~45 KB
Angular
~65 KB

Everything You Need, Nothing You Don't

A modern DX with signals, SSR, SPA routing, and resumability — compiled away to minimal per-page JavaScript.

Blazing Fast

Ships 0 KB on static pages, 466 B on resume, 317 B + 3.5 KB cached for SPA. No hydration, no virtual DOM — just compiled JavaScript that runs instantly.

♻️

True Resumability

SSR generates HTML with embedded signal state. The client resumes interactivity inline without re-running components or parsing a framework bundle.

🔀

SPA Routing

Client-side navigation with sentinel-based mXSS protection — provably immune to mutation XSS. View Transitions API, history management, and scroll restoration out of the box.

🎨

Atomic CSS

Style objects extract to hashed utility classes at build time — zero runtime CSS-in-JS. First-class Tailwind v4 integration with compile-time token resolution.

📋

Form Helpers

useField() and <Form> with signal-backed validation. Property-assigned values — no setAttribute friction. Built on the same signals that power the rest of the framework.

🔌

DevTools & Streaming

Runtime DevTools bridge with floating panel (Cmd+Shift+N). Streaming SSR delivers shell-first HTML with chunked transfer encoding. ESLint plugin catches footguns at lint time.

Real Numbers

Measured on the blog example — not a microbenchmark, a real application with Tailwind CSS and SSR.

0.06s
LCP
0
CLS
40ms
INP

See It In Action

A fully interactive counter that ships 466 B gzipped — try it below.

0 466 B