Nue 2.0: The UNIX of the web

Here's Nue 2.0 — a complete website development environment in 1MB.

The entire ecosystem in 1MB

Nue is made of small, focused tools that do one thing well.

Nuekit

Standards first web framework

Nuedom

HTML first UI assembly

Nuestate

URL first state management

Nuemark

Content first web development

Nueserver

Edge-first server development

Nueglow

CSS first syntax highlighting

What used to be 500MB is now 1MB

What's new

Complete rewrite

Nuekit was rebuilt from scratch with a clear focus: do one thing well. The new architecture serves files directly from your source directory during development. No temporary .dist/dev folder, no build step before you start working. Just create files and see them in the browser.

We also switched from supporting both Bun and Node to Bun only. This decision enables the entire framework to stay lean while delivering better performance.

HTML templating

All HTML files now use the same .html extension. The document type declaration determines how Nue processes each file:

<!-- Server-rendered page -->
<!doctype html>

<!-- Dynamic, client-rendered page -->
<!doctype dhtml>

<!-- Server-side component library -->
<!html lib>

<!-- Client-side library -->
<!dhtml lib>

<!-- Isomorphic library -->
<!html+dhtml>

When you omit the doctype, Nue detects the type automatically based on your markup. If your file has event handlers or imports, it becomes dynamic. If it's pure content structure, it renders server-side.

This replaces the old .dhtml extension system with a more flexible approach that follows HTML standards.

Zero dependencies

Nue 2.0 has no external dependencies. Everything needed to build websites lives in that 1MB executable:

  • Custom CSS parser

  • Custom YAML parser (Nueyaml)

  • Custom DOM implementation for server-side rendering and testing

Building without dependencies gives us full control over the entire stack. Each tool does one thing well and communicates seamlessly with the others. This is how you build frameworks the UNIX way: small, focused tools that work together perfectly.

This gives us a lean developer experience without the typical framework bloat.

New features

SVG development - Process SVG files as templates with full HMR support. Embed your design system styles and fonts directly into standalone graphics. Mix HTML and SVG naturally using <html> tags that become <foreignObject> automatically.

Sitemap generation - Enable in your config and Nue generates sitemap.xml automatically from your pages. Skip pages with draft or private flags.

RSS feeds - Point at any content collection and get a complete RSS feed with auto-discovery link tags. Perfect for blogs and documentation sites.

SPA development

Single-page applications get a new development model built on Nuestate. Define your route patterns in one place and let the URL drive your application. Regular <a href> links become SPA navigation automatically with the autolink option.

The upcoming universal data model will unify how data flows through SPAs, but the foundation is here now: clean separation between routing, data model, state, and the UI layer.

New tools

Nuestate - URL-first state management that puts application state in the URL by default. Bookmarking, sharing, and browser navigation work automatically without extra code. No stores, no reducers, no actions. Just read and write to a state object.

Nueserver - Edge-first backend development. Write server code once and run it identically on your machine and across global edge locations.

Server proxy - Not ready for edge-first? Configure Nue to proxy API calls to your existing backend.

New templates

Four options for different needs:

minimal - Just index.html and index.css to start from scratch

blog - Simple Markdown based blog with minimal coding/configuration

spa - Single-page application with a simple server and UI

full - Full stack web with blog, docs, marketing pages, authentication, and SPA

Why Bun

Nue and Bun share the same vision for web development.

Standards based - Bun uses browser APIs you already know: fetch(), Request, Response, URL, Headers, and FormData. No framework-specific APIs to learn. Code that works in the browser works in Bun.

Rich in features - Core features like bundling, serving, and file handling are written in native code (Zig). No need for Vite, ESBuild, or separate build tools.

Performance - Bun is faster than Node

While Node support would be convenient, Bun-only is what enables Nue's extreme performance and simplicity. It's what makes the developer experience special.

Upgrading from 1.0

Nue 2.0 is not backwards compatible with version 1.0. The safest upgrade path is to install locally in your project:

bun install nuekit@latest

Run commands with bunx:

bunx nue serve
bunx nue build

This lets you test the new version without breaking anything. Once you've migrated all projects, switch to global installation:

bun install --global nuekit@latest

Beta notice

This is a beta release. Tested on macOS only. Linux and Windows compatibility unknown. Report issues on GitHub.

Get started

# Install Bun 1.2+ (if you don't have it yet)
curl -fsSL https://bun.sh/install | bash

# Install Nuekit globally
bun install --global nuekit

# Create your first project
nue create blog    # or minimal, spa, full

Start developing:

nue    # Starts serving at http://localhost:4000