Skip to content
K

Overview

Where Naos fits next to Stencil, Lit, Solid, Gea, and React.

Naos in Context

Naos compiles typed TSX into native Custom Elements: no virtual DOM or framework runtime, a small shared execution kernel, signals for reactivity, and an optional batteries layer (accessible primitives, router, data resources, motion) around a narrow Rust/OXC compiler core.

These pages compare Naos with adjacent tools. Each one is a July 2026 positioning snapshot written to explain where Naos fits — not to rank a v0.1 prerelease against mature, production projects. Claims about other tools are drawn from their own docs.

The comparisons

Compared withCategoryThe sharpest line
StencilCompile-to-Web-ComponentsClosest neighbor; Stencil uses a lightweight VDOM and generates framework wrappers, Naos has no VDOM and relies on native interop
LitWeb Components libraryLit is a runtime library (no build step) with tagged templates; Naos is a compiler with a small shared kernel, not a template runtime
SolidReactive UI libraryShared signal DNA; Solid renders an app into a root, Naos makes the Custom Element the primary output
GeaCompiler-first UI frameworkNearly identical vocabulary; Gea patches standard DOM as an app framework, Naos emits native Custom Elements
ReactApp runtime libraryA different corner: React is a VDOM app runtime; Naos is complementary and ships a small shared kernel instead of a framework runtime

How to read them

  • Same output target (Stencil, Lit): the honest question is how the element is produced and updated.
  • Same reactivity (Solid, and by extension Gea): the honest question is what gets shipped and what the default output is.
  • Different corner (React): the honest question is composition — Naos and React work together more naturally than they compete.

Recurring themes

Across every comparison, the Naos-specific lines are consistent:

  • Native Custom Elements as the primary output — Shadow DOM, slots, part, Declarative Shadow DOM prerender, and a form-associated MVP.
  • No virtual DOM or framework runtime; generated elements share a small, tree-shakeable execution kernel.
  • Signals (state(), computed(), effect()) instead of hooks, reactive properties, or proxy mutation.
  • A Rust/OXC compiler core behind a thin TypeScript surface.
  • A narrow core plus optional batteries boundary that CI enforces — foundations never import product layers.
  • A candid v0.1 prerelease status.