Why Tombatron.Turbo?
Everything you need to build rich, interactive web applications without leaving the server-rendered world.
Turbo Frames
Wrap any section in a <turbo-frame> and only that region updates on navigation. SPA-like speed with zero client-side routing.
Real-Time Streams
Push live DOM updates over SignalR. Append, prepend, replace, or remove elements from any connected client with a single method call.
Source-Generated Partials
The bundled source generator creates strongly-typed partial references at compile time. Typos become build errors, not runtime 500s.
Three-Line Setup
AddTurbo(), UseTurbo(), MapTurboHub() — Turbo.js, the SignalR bridge, and signed stream tokens are wired up automatically.
Razor All the Way Down
Tag helpers, partials, view models, DI — everything you already use. No component model, no virtual DOM, no new abstractions to learn.
Stimulus Controllers
Convention-based controller discovery via import maps. Drop a JS file in wwwroot/controllers/ and it auto-registers, with hot reload in dev.
See It in Action
From setup to real-time broadcasts in under a minute.
Register Services
// Program.cs
builder.Services.AddTurbo();
builder.Services.AddRazorPages();
app.UseTurbo();
app.MapTurboHub();
app.MapRazorPages();
Add a Turbo Frame
<turbo-frame id="cart" src="/cart"
loading="lazy">
<p>Loading cart...</p>
</turbo-frame>
Broadcast in Real-Time
await _turbo.Stream("orders", async b =>
{
await b.AppendAsync(
"list",
Partials.OrderRow,
newOrder);
});
How Does It Compare?
Blazor and Tombatron.Turbo both bring rich interactivity to .NET developers, but with different trade-offs. Pick the approach that fits your project.
Blazor Server
- Persistent SignalR circuit per user
- Stateful components with C# logic
- Small download, higher server memory
- Every interaction round-trips to server
Blazor WASM
- .NET runtime in WebAssembly
- Offline-capable after first load
- Large initial download (~5-10 MB)
- Full C# execution in the browser
Tombatron.Turbo
- Stateless HTTP + targeted DOM updates
- ~30 KB JS layer, no .NET in browser
- Progressive enhancement built in
- Standard Razor — no new component model
Ready to try a different approach?
Add one NuGet package to your existing ASP.NET Core app and start shipping faster, lighter web experiences today.
Read the Quickstart →dotnet add package Tombatron.Turbo