FS.GG.UI.Controls.Elmish 0.15.0

Prefix Reserved
dotnet add package FS.GG.UI.Controls.Elmish --version 0.15.0
                    
NuGet\Install-Package FS.GG.UI.Controls.Elmish -Version 0.15.0
                    
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="FS.GG.UI.Controls.Elmish" Version="0.15.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FS.GG.UI.Controls.Elmish" Version="0.15.0" />
                    
Directory.Packages.props
<PackageReference Include="FS.GG.UI.Controls.Elmish" />
                    
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 FS.GG.UI.Controls.Elmish --version 0.15.0
                    
#r "nuget: FS.GG.UI.Controls.Elmish, 0.15.0"
                    
#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 FS.GG.UI.Controls.Elmish@0.15.0
                    
#: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=FS.GG.UI.Controls.Elmish&version=0.15.0
                    
Install as a Cake Addin
#tool nuget:?package=FS.GG.UI.Controls.Elmish&version=0.15.0
                    
Install as a Cake Tool

FS.GG.UI.Controls.Elmish

Elmish command, subscription, and program adapters for Controls and KeyboardInput runtime effects.

FS.GG.UI.Controls.Elmish is one of the FS.GG.UI distribution packages — an F# / Elmish UI and 2D scene-graph framework for .NET 10 desktop, rendered through Vulkan + SkiaSharp.

Use this package for products built on the semantic control set — buttons, text boxes, grids — driven by an interactive host (runInteractiveApp/program, Cmd/subscriptions). Every FS.GG.UI sample uses it. Its sibling FS.GG.UI.Elmish is the lower-level pure scene adapter (a SceneNode view, no control tree); pick by what your view produces.

Install

dotnet add package FS.GG.UI.Controls.Elmish

Or scaffold a full governed project that wires the FS.GG.UI packages together:

dotnet new install FS.GG.UI.Template
dotnet new fs-gg-ui -o MyApp

Usage

open FS.GG.UI.Controls
open FS.GG.UI.KeyboardInput
open FS.GG.UI.Controls.Elmish

// Lift a fired keyboard command into your own message type.
type Msg =
    | Activate of CommandId
    | Runtime of ControlRuntimeMsg

let init () : Model * AdapterCommand<Msg> = initialModel, []

let update (msg: Msg) (model: Model) : Model * AdapterCommand<Msg> =
    match msg with
    | Activate cmd -> model, [ ReportAdapterDiagnostic(ControlsElmish.diagnostic "update" "activated" (string cmd)) ]
    | Runtime _ -> model, []

let subscribe (_: Model) =
    // Interpret keyboard effects into adapter commands, then expose them as subscriptions.
    let keyboardSubs = [ { Id = "keyboard"; Subscribe = fun () -> ControlsElmish.interpretKeyboardEffect Activate keyboardEffect } ]
    ControlsElmish.subscriptions keyboardSubs []

// Build the adapter program that drives Controls + keyboard runtime effects.
let app : AdapterProgram<Model, Msg> =
    ControlsElmish.program init update view subscribe

Versioning

All FS.GG.UI.* libraries share one version and move together. In a generated project a single <FsGgUiVersion> in Directory.Packages.props pins every package — upgrading is one edit; see docs/UPGRADING.md. Pre-release versions use a -preview.N suffix.

API at a glance

  • ControlsElmish.program — assembles an AdapterProgram<'model,'msg> from init, update, view, and subscriptions functions, the entry point for wiring an Elmish loop.
  • ControlsElmish.interpretKeyboardEffect — turns a KeyboardEffect into an AdapterCommand<'msg>, mapping each fired CommandId through your mapCommand function.
  • ControlsElmish.interpretControlEffect — turns a ControlRuntimeEffect into an AdapterCommand<'msg>, mapping ControlRuntimeMsg values through your mapRuntime function.
  • ControlsElmish.subscriptions — merges keyboard and control AdapterSubscription<'msg> lists into one subscription list for the program.
  • ControlsElmish.diagnostic — builds an AdapterDiagnostic (source, code, message) for reporting adapter-level issues.
  • ControlsElmish.responsivenessTimingContribution — projects existing FrameMetrics into the adapter-owned timing fields used by SkiaViewer responsiveness records: routing, update, retained step, layout/text, product message count, and no-visible-response reason.
  • ControlsElmish.diagnosticsDisabledCompatibility — verifies that diagnostics-disabled deterministic Perf.runScript metrics stay clock-free and unchanged, with no responsiveness records written.
  • AdapterEffect<'msg> — the effect union (DispatchProductMessage, DispatchControlRuntimeMessage, DispatchKeyboardMessage, DispatchHostCommand, ReportAdapterDiagnostic); an AdapterCommand<'msg> is a list of these.
  • AdapterProgram<'model,'msg> / AdapterSubscription<'msg> — the program and subscription records that carry Init/Update/View/Subscriptions and Id/Subscribe respectively.
Product Compatible and additional computed target framework versions.
.NET 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on FS.GG.UI.Controls.Elmish:

Package Downloads
FS.GG.UI

Optional BOM / metapackage for the FS.GG.UI framework. Reference this single package at one version to pin the entire coherent FS.GG.UI.* set to that version; any attempt to mix a member at a different version fails loudly at restore/build. Ships no assembly — dependencies only.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.15.0 111 7/20/2026
0.14.0 89 7/19/2026
0.13.0 117 7/18/2026
0.12.0 241 7/17/2026
0.11.0 348 7/16/2026
0.10.0 681 7/14/2026
0.9.2 558 7/13/2026
0.9.0 704 7/11/2026
0.8.0 222 7/11/2026
0.7.0 167 7/11/2026
0.6.0 146 7/10/2026
0.5.0 205 7/10/2026
0.4.0 294 7/9/2026
0.4.0-preview.1 61 7/9/2026
0.3.0-preview.1 71 7/7/2026
0.2.0-preview.1 63 7/6/2026
0.1.64-preview.1 77 7/5/2026
0.1.63-preview.1 83 7/4/2026
0.1.62-preview.1 61 7/4/2026
0.1.61-preview.1 55 7/2/2026
Loading failed