Skip to content
Nicolás Seijas edited this page Jul 20, 2026 · 3 revisions

Rambla

High-frequency observable state for real-time .NET desktop applications. Thread-safe updates, batching, coalescing and diagnostics for UI state that changes faster than it can be rendered.

Rambla separates state mutation from UI notification. You write state from any thread; Rambla decides when and how the UI is told — coalescing intermediate values and batching notifications into a single dispatcher hop per frame.

public partial class MarketViewModel : RamblaState
{
    [State] private decimal _bid;
    [State] private decimal _ask;
    [State] private decimal _pnl;
}

// from any background worker:
vm.Bid = 1.2345m;   // no Dispatcher.Invoke, no OnPropertyChanged

Start here

  • Getting Started — install, first view model, schedulers
  • PhilosophyRambla is for state, not events (read this first)
  • Architecture — the framework-agnostic core + IStateScheduler
  • Core Semantics — the frozen V1 behavioural contract
  • Benchmarks — the honest, layered evidence
  • Roadmap — what's done and what's next
  • FAQ — when to use Rambla (and when not to)

The one-line thesis

Rambla does not make the notification cheaper. It avoids emitting it — when the state changes faster than the UI can render it.

Where it fits

Rambla does not compete with CommunityToolkit.Mvvm (boilerplate), ReactiveUI (reactive composition) or DynamicData (change-set collections). It owns one sharp problem: making the background → UI boundary safe and cheap under sustained, high-frequency load — trading terminals, dashboards, telemetry, monitoring, poker tables, market data, WebSocket-driven UIs.


This wiki is a reader-facing guide. The canonical, versioned docs live in the repository: README, VISION.md, BENCHMARKS.md, SEMANTICS.md, docs/philosophy.md, ROADMAP.md.

Clone this wiki locally