The Zero-Runtime
JavaScript Framework
Ships 0 KB on static pages. 466 B on interactive. No hydration. No virtual DOM. Just compiled JavaScript.
How It Works
NoopJS compiles your framework code away at build time. Zero runtime overhead on static pages, minimal JS on interactive ones.
Write Components
Use familiar JSX with signals. NoopJS compiles your components ahead of time — no virtual DOM, no hydration.
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.
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.
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.
See It In Action
A fully interactive counter that ships 466 B gzipped — try it below.