Server-Side React for ASP.NET Core

Build React Apps
Without Hydration

Write familiar React/JSX, render on the server with ASP.NET Core, deliver instant updates with template-based predictive patches. <5ms perceived latency.

Be less reactive. More proactive. With Minimact.
Counter.tsx
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.

Why Minimact?

Template-Based Predictive Rendering

Revolutionary build-time approach generates parameterized patch templates from Babel AST analysis. 100% coverage of all possible state values with zero learning phase.

🎯

Zero Hydration

No client-side JavaScript frameworks. No massive bundles. ~5KB client library for SignalR and template patch application.

🔌

Server-Side Plugin System

100% C# plugins distributed as NuGet packages. Zero client bundle overhead. Plugins leverage template patches for instant updates.

🔄

Automatic State Synchronization

Client state changes auto-sync to server to prevent stale data. useState and useDomElementState keep server in perfect sync.

👁️

Reactive DOM Elements

useDomElementState makes DOM a reactive data source. Track intersection, mutations, resize, attributes with zero configuration.

Familiar Syntax

Write React/JSX like you always have. Full hooks support: useState, useEffect, useRef, plus powerful semantic hooks.

🔒

Secure by Default

Business logic stays on the server. Full .NET integration with EF Core, DI, and your favorite tools.

🦀

Rust Performance

Blazing-fast VDOM reconciliation and template-based prediction engine. Single template per pattern instead of N cached patches.

🛠️

Minimact Swig IDE

Desktop IDE built with Electron. Complete development environment with Monaco editor, real-time SignalR monitoring, auto-transpilation.

Think of it as Stored Procedures for the DOM

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.

Traditional Approach

  • User clicks → Send to server
  • Wait for network round-trip (~47ms)
  • Server computes, reconciles, diffs
  • Send patches back

Minimact Template Approach

  • Babel generates templates at build time
  • Server sends parameterized templates
  • User clicks → Client fills slots (~0ms)
  • 100% coverage, zero learning phase

Architecture Highlights

🎨 Template Patch System

Build-time Babel plugin analyzes JSX AST and generates parameterized patch templates with slot bindings. Single template handles all values: {'{0}'}, {'{1}'}, etc.

🔌 Plugin Architecture

<Plugin name="Clock" state={'{...}'} /> transpiles to C# code. Plugins use [LoopTemplate] attributes for instant client updates.

🌐 Client-Server Sync

useState and useDomElementState automatically invoke UpdateComponentState via SignalR to keep server state fresh.

📦 Minimact Extension Standards (MES)

Bronze/Silver/Gold certification for extensions like minimact-punch. Ensures quality, compatibility, and best practices.

Ready to try template-based predictive rendering?

Experience the future of server-side React in the interactive playground

Launch Playground →