Roadmap
The guide describes current source. See Installation for published versions and local builds. Exploratory items below have no delivery schedule.
Implemented in current source
- Reactive graph: signals, lazy memos, effects, equality cutoffs and fixed-source bindings. See Getting started, Equality and Bindings.
- Ownership: roots and owning computations dispose children and cleanups in reverse acquisition order. Contracts covers lifetime, failure propagation and thread access.
- Async state: pending propagation, boundaries, async sources, task flights with per-node policies and restarting stream memos. Async and pending links the individual APIs. Timed values control admission independently.
- Collections: keyed and index projections, direct edits, lookups, selectors, views and aggregates. Change readers have bounded independent cursors and reset recovery. See Collections and Aggregates for contracts and costs.
- Editable state: editable values, drafts and forms, plus an MVU bridge over selector memos.
- Remote data: Ranvier.Query shares acquired query leases, retains refresh data and reconciles mutation receipts across loaded queries.
- Persistence and replay: persisted inputs restore signals and collections; the input journal records external inputs for diagnostic replay and re-enactment. Read the restore limitations before combining snapshots and journal tails.
- Diagnostics: tracing records node creation, causal runs, pending work and failure provenance, with bounded-log checkpoints and export.
- C# integration: delegate factories, XAML property/error bindings, commands and observable collections. See C#.
- Views: shared templates support DOM mounting, server HTML and hydration, with motion and testing helpers. See Views, Server rendering and Testing views.
- Fable and deployment: local package builds include standalone Fable source projects; CI checks packed consumers. The core, C#, Elmish and Query packages have traced/untraced .NET 10
linux-x64trim/AOT smoke checks. See Installation for scope and Fable for target differences.
Experimental source
Ranvier.Mcp exposes selected values and authorised Elmish messages from a running graph. It is a source experiment and is not packed; traced provenance queries can inspect the whole graph.
Under consideration
- Further collection incrementality: filter, sort, grouping and some aggregate membership paths still scan keys.
- An F#
Async<'T>adapter: cold-workflow lifetime and restart contracts remain exploratory. See The async graph. - Reusable lenses and prisms: application code can express deep writes; reusable focus paths over collections remain open.
- Additional storage adapters: persistence supplies memory, file and browser local-storage stores; database-backed stores remain an extension point.
- Mixed traced/untraced primitives: let individual graph branches pay for tracing (#69).
See Ecosystem for collection tradeoffs and host integrations.