Reagent is a ClojureScript library that provides a minimal, functional interface to React. Instead of JSX or React.createElement calls, components are defined as plain functions returning Hiccup-style vectors (e.g., [:div {:class "btn"} "Click"]), which Reagent compiles into React elements at runtime. The library adds a reactive state layer built on 'ratoms' (trackable atoms) and reactions: any deref inside a component render creates a dependency, and updates are batched asynchronously through requestAnimationFrame (or flushSync on React 19) before being flushed to the DOM. Production use centers on SPA frontends. The architecture is a small set of namespaces: reagent.core exposes the public API; reagent.dom and reagent.dom.client handle mounting into the browser (legacy vs createRoot); reagent.dom.server provides SSR; reagent.ratom implements cursors, track, and reactions; reagent.impl.template and reagent.impl.component handle Hiccup-to-React compilation and component lifecycle; reagent.hooks adapts React hooks to ClojureScript values. Reagent supports React 18 and 19, including functional components via the defc macro, class components, fragments, portals, error boundaries, and custom compilers. Because Reagent is a library rather than an app, its primary consumers are ClojureScript developers building frontends. Its most reusable assets are the state-management primitives and the Hiccup compiler, both of which are self-contained enough to be lifted into other projects. The repo also includes a demo application, example projects, and a test matrix that exercises React versions and build tools (shadow-cljs, webpack, Leiningen). The codebase shows mature engineering with clear separation between the public API and internal implementation, though some legacy references and documentation drift remain.