Show HN: NoopJS – A compiler that ships 0 KB JavaScript for static pages NoopJS, a new compiler framework, ships 0 KB of JavaScript for static pages by compiling JSX to vanilla DOM, eliminating framework runtime code. The framework delivers a 0.06s Largest Contentful Paint on server-side rendered pages and reduces client runtime to as little as 466 bytes for interactive components, addressing Core Web Vitals and bundle size concerns. Quick Start quick-start · Live Demo /noop-js/noopjs/blob/main/examples/blog · Documentation /noop-js/noopjs/blob/main/docs/index.html · Roadmap roadmap ╔══════════════════════════════════════════════════════════╗ ║ .noop.tsx ──► Compiler ──► Vanilla JS ║ ║ │ ║ ║ ├── SSR: HTML + Serialized State ║ ║ │ │ ║ ║ │ ▼ ║ ║ │ Client Runtime ◄── 0–3.7 KB ║ ║ │ No hydration — just resume ║ ║ │ ║ ║ └── Atomic CSS + Tailwind v4 ║ ║ Zero runtime CSS-in-JS ║ ╚══════════════════════════════════════════════════════════╝ AI generates code now. Frameworks built on hooks, rules, and runtime contracts React, Vue, Angular were designed for humans. An AI doesn't need rules — it needs a framework that compiles away. NoopJS components are plain functions. No useMemo , no useCallback , no rules of hooks. The compiler handles everything. Performance is no longer optional. Core Web Vitals are SEO signals. NoopJS delivers a 0.06s LCP on an SSR page — not in a benchmark, but in a real blog application with Tailwind CSS. The silos must break. Components should work everywhere. NoopJS components compile to native Custom Elements on demand. Write once, embed anywhere. JavaScript bundles must shrink. The average React page ships ~45 KB of framework JS. NoopJS ships 0 KB for static pages , 466 B for resume counter fully interactive — signal, binding, handler , and 317 B inline + 3.5 KB cached shared runtime for SPA . npm install @noopjs/vite or scaffold: npm create noopjs Then add one plugin to vite.config.ts : js import { noopVite } from '@noopjs/vite'; export default defineConfig { plugins: noopVite , } ; | What you get | Why it matters | |---|---| Compiler | JSX → vanilla DOM. No framework code ships. | Signals | TC39-standard signal , computed , effect , batch . | Atomic CSS | Style objects → hashed utility classes. Zero runtime CSS-in-JS. | SSR engine | Render to HTML, serialize state, resume on client. True resumability. | Client runtime | 0 KB static, 466 B resume inline , 317 B inline + 3.5 KB cached shared for SPA. Re-attaches signals to DOM without re-running components. Native