Skip to content

@neutro/view

Fine-grained reactive view engine for the web.

Why @neutro/view?

Most view libraries pay a per-update tax: reconcile a virtual DOM, diff component trees, patch the real DOM. @neutro/view skips all of that. Signals track exactly which DOM nodes depend on which values — when a signal changes, only those nodes update. No diffing pass, no component re-render, no scheduler.

js
const Counter = $component(() => {
  $script(() => {
    const count = signal(0)
  })
  $render(() => html`
    <div>
      <p>${count}</p>
      <button @click="${() => count = count + 1}">+</button>
    </div>
  `)
})

Write natural signal reads and assignments — the compiler erases them to efficient accessor calls at build time. No manual .get() / .set().

Get Started | API | Guides


Neutro Ecosystem

@neutro/view is part of the Neutro collection — focused, zero-dependency primitives for the web.

  • @neutro/view — the library you're reading about now
  • @neutro/form — zero-dependency reactive form engine for every framework
  • @neutro/fluid (coming soon) — a physics-grounded glass material system for the web

Support the Project

If this library saves you time, consider supporting its development:

Buy Me A Coffee

Found a bug or have a feature request? Open an issue on GitHub.