ReactiveBlazor

Stateful interactive components for Blazor Static SSR — no SignalR, no WebAssembly. Enjoy near-zero client JS, encrypted state, anti-replay tokens, and automatic multi-component out-of-band updates using Idiomorph morphing.

Client JS Size
~7.4 KB
Zero runtime dependencies
State Encryption
AES-256
ASP.NET Data Protection
Interactivity
AJAX HTTP
No WebSockets required
DOM Morphing
Idiomorph
Preserves scroll, focus, transitions

How It Works: The Lifecycle

🖱️ 1. Event Trigger User clicks elements with data-on-* attributes.
📦 2. State Bundle Client JS scans active components and posts current state.
🔑 3. Unprotect Server validates anti-forgery, decrypts, and verifies states.
4. Dispatch Server executes target action method to mutate state.
🖌️ 5. Batch Render Server renders target and sibling components inside dispatcher.
🔄 6. OOB Morph Client swaps and morphs DOM elements out-of-band.

Feature Catalog

Actions data-args

Stateful Actions

Methods decorated with [ReactiveAction] are invoked directly from C# via data attributes, passing primitive arguments cleanly.

Two-way data-bind

Two-Way Bindings

Use data-bind to sync dropdowns, inputs, checkboxes, and radios back to C# property states automatically.

Complex List<T> state

Complex Collections

Supports serialization of complex data lists and generic sub-entities. The compiler signs and secures the nested object graph on every request.

Optimization data-debounce

Input Debouncing

Add data-debounce="N" on input fields to delay dispatches, avoiding overloading server resources when users type rapidly.

OOB Swap No-JS Glue

Out-of-Band (OOB) Updates

Updates to global state from an action automatically re-render and morph all other sibling components on the page in a single request.

ReactiveBlazor — Stateful SSR without SignalR or WebAssembly