Ranvier.Query 0.1.1-preview.1

This is a prerelease version of Ranvier.Query.
dotnet add package Ranvier.Query --version 0.1.1-preview.1
                    
NuGet\Install-Package Ranvier.Query -Version 0.1.1-preview.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Ranvier.Query" Version="0.1.1-preview.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Ranvier.Query" Version="0.1.1-preview.1" />
                    
Directory.Packages.props
<PackageReference Include="Ranvier.Query" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Ranvier.Query --version 0.1.1-preview.1
                    
#r "nuget: Ranvier.Query, 0.1.1-preview.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Ranvier.Query@0.1.1-preview.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Ranvier.Query&version=0.1.1-preview.1&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Ranvier.Query&version=0.1.1-preview.1&prerelease
                    
Install as a Cake Tool

Ranvier.Query

Typed reactive queries and mutation reconciliation for partially loaded application data.

Preview API. Query results are ordinary immutable records; page-owned leases keep loaded queries alive. Define a family once per client, acquire only visited keys, and reconcile successful saves with UpdateIfLoaded or explicit invalidation.

use client = new QueryClient(graph)
let sections = client.Define(loadSection)
use page = sections.Acquire sectionId
let save draft = client.Mutate(draft, saveWord, fun saved -> [
    sections.UpdateIfLoaded(saved.SectionId, fun old ->
        { old with Words = upsertById (toPreview saved.Word) old.Words })
])

Loaders and remote writes return Task and accept a CancellationToken. Reads do not fetch; Acquire and Ensure express demand. Value suspends on the initial load and retains accepted data during refresh; State exposes loading/error/stale metadata. Invalidation never fetches automatically. Dispose page leases on Back and the client on Home/logout. Saves belong to the client, not the editor owner.

Use AcquireOwned(key, pageOwner) when a navigation page must outlive its current view owner. Keep the page owner in History and dispose it on Back. EnsureAsync() and RefreshAsync() return Task<T> after publication, suitable for Elmish loading messages. Retired requests and disposed leases cancel waiting tasks; loading errors fault them. Client disposal also cancels Mutate tasks: catch OperationCanceledException when closing the session.

Edit factories return deferred QueryEdit descriptions; apply them through Commit or mutation reconciliation. SetIfLoaded(key, value) replaces accepted data. Missing entries remain absent; pending entries without data become stale. See the compiled navigation model in examples/Ranvier.Query.Dictionary.

Writes serialize through atomic reconciliation. A ReconciliationFailed outcome retains the saved receipt and invalidates existing queries; refresh explicitly instead of repeating a successful remote write. Updaters must return immutable values and must not reenter client operations.

The layer uses public Ranvier primitives without changing the graph engine. Whole-record and list reconstruction costs remain. Supported targets are .NET 10, .NET Standard 2.1 and Fable; the untraced build supports NativeAOT. Use the matching Ranvier.Query.Traced package with a traced graph build.

Package builds include Fable sources and a standalone source project, tested in CI through traced and untraced package consumers. Under Fable, promise results arrive on later microtasks; graph dispatch runs inline and needs no pump. See Fable for the target differences.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.1-preview.1 54 10/28/2026
0.1.0-preview.3 52 10/26/2026
0.1.0-preview.2 57 10/21/2026
0.1.0-preview.1 72 10/5/2026

Preview release. The API may change before 1.0.