v0.1 · Zero Dependencies

Mutate.
Call update().
Done.

A lightweight imperative DOM framework. Build UIs with plain functions and mutable state—no proxies, no virtual DOM, no hidden re-renders. You decide when the DOM updates.

$npm install nuclo
0deps
Zero dependencies
140+
HTML & SVG tags
~16kb
Gzipped bundle
counter.ts
0
COUNT
Philosophy
"When you mutate state, nothing happens. Call update() and Nuclo does exactly what you asked—no more, no less."
01
Explicit is better than implicit
No reactive proxies tracking your every move. You mutate, you call update(). Clear causality, predictable behaviour.
02
Batch freely, update once
Make 10 mutations before calling update() once. The DOM sees only the final state—no wasted renders.
03
Functions, not components
Build with plain JavaScript functions. No lifecycle hooks, no class magic, no special syntax—just functions that return DOM nodes.
Features

Built for clarity.

No magic. No surprises. Every update is intentional.

01 — EXPLICIT
You control updates
Call update() when you want the DOM to sync. Nuclo does exactly that—no subscriptions, no diffing surprises.
02 — LIGHTWEIGHT
Zero dependencies
~16kb gzipped, zero runtime dependencies. Ships nothing you don't use.
03 — TYPED
TypeScript-first
Full TypeScript types for 175 HTML & SVG tags. Autocomplete everything.
04 — SMART
Fine-grained sync
Dynamic functions run only when needed. Pass () => value and Nuclo updates only that node.
Quick Start

Up and running in minutes.

Three steps and you're building real UIs.

01 — INSTALL
Install
Add Nuclo to your project with your favourite package manager.
terminal
02 — IMPORT
Import
A single side-effect import globally injects all 175 tag builders.
main.ts
03 — BUILD
Build
Write plain functions that return DOM nodes. Call update() when state changes.
app.ts
Examples

See it in action.

Interactive demos. Explore the code behind each one.

counter.ts
0
todo.ts
Get Started

Ready to build?

Start with the docs, explore the examples, or install and dive straight in.

GitHub