Why Aegis

You have a server that renders HTML and you want parts of the page to be alive: a search box, a form with validation, a table, a cart. The usual answer is a bundler, a component framework and a second rendering stack. Aegis is the other answer.

Aegis React + Query + Router Vue htmx + Alpine
Build step none, one file Vite/webpack + JSX Vite or runtime compiler none
Dependencies 0 react, react-dom, @tanstack/react-query, react-router vue, pinia, vue-router htmx, alpine
Size, gzip 11 KB signals · 21 KB islands + templates · 91 KB everything 45 KB + 13 KB + 20 KB 34 KB + 5 KB + 8 KB 14 KB + 15 KB
Server HTML adopted as is, morph, swap, islands replaced by the client tree (or SSR with Node) replaced (or SSR with Node) swapped as strings
Signals TC39-style, glitch-free hooks, re-render per change ref/computed Alpine reactivity
Data layer resource() with SWR cache, ETag, offline, optimistic patch log TanStack Query your own or TanStack none
Forms Constraint Validation, schemas, 422 mapping, wizards react-hook-form vee-validate none
Router Navigation API, loaders, guards before commit react-router vue-router none
Dev warnings 60+ codes with what / why / fix and source position React DevTools Vue DevTools none

The same todo list is 18 lines in Aegis, 22 in React and 18 in Vue, but the Aegis one needs no build and no dependencies. See it side by side in the playground (tab "vs React / Vue").

Edit this page on GitHub