Write familiar React/JSX, render on the server with ASP.NET Core, deliver instant updates with template-based predictive patches. <5ms perceived latency.
import { useState } from '@minimact/core';
export function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>
Increment
</button>
</div>
);
}
That's it. Write React, get server-rendered HTML with <5ms perceived latency.
Revolutionary build-time approach generates parameterized patch templates from Babel AST analysis. 100% coverage of all possible state values with zero learning phase.
No client-side JavaScript frameworks. No massive bundles. ~5KB client library for SignalR and template patch application.
100% C# plugins distributed as NuGet packages. Zero client bundle overhead. Plugins leverage template patches for instant updates.
Client state changes auto-sync to server to prevent stale data. useState and useDomElementState keep server in perfect sync.
useDomElementState makes DOM a reactive data source. Track intersection, mutations, resize, attributes with zero configuration.
Write React/JSX like you always have. Full hooks support: useState, useEffect, useRef, plus powerful semantic hooks.
Business logic stays on the server. Full .NET integration with EF Core, DI, and your favorite tools.
Blazing-fast VDOM reconciliation and template-based prediction engine. Single template per pattern instead of N cached patches.
Desktop IDE built with Electron. Complete development environment with Monaco editor, real-time SignalR monitoring, auto-transpilation.
Just like database stored procedures pre-compile queries for instant execution, Minimact pre-compiles UI state changes into parameterized templates at build time. When the user interacts, they're not triggering computation — they're triggering execution of pre-compiled templates.
Build-time Babel plugin analyzes JSX AST and generates parameterized patch templates with slot bindings.
Single template handles all values: {'{0}'}, {'{1}'}, etc.
<Plugin name="Clock" state={'{...}'} /> transpiles to C# code.
Plugins use [LoopTemplate] attributes for instant client updates.
useState and useDomElementState automatically invoke UpdateComponentState
via SignalR to keep server state fresh.
Bronze/Silver/Gold certification for extensions like minimact-punch. Ensures quality, compatibility, and best practices.
Experience the future of server-side React in the interactive playground
Launch Playground →