Skip to content
CAI
Software that uses CAICheck a score

fsprojects/Avalonia.FuncUI

61.9

Adequate · 22 September 2026

17.1k

lines of production code

F#

primary language

6

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Avalonia.FuncUI is a functional UI framework for the Avalonia cross-platform desktop and web runtime, enabling developers to build user interfaces using a React-inspired hook model and Elmish architecture. It provides a comprehensive DSL for declarative control binding, a reactive state management system with weak subscriptions, and a virtual DOM engine for efficient view diffing and patching. The library includes diagnostic tools for runtime inspection and supports a wide range of sample applications demonstrating complex interactions, media playback, and platform-specific features.

How it got here

2019 — Virtual DOM rewrite and .NET 8 migration

12 changes.

The project underwent a significant architectural overhaul by migrating to .NET 8 and Avalonia 12, replacing the legacy Virtual DOM implementation with a new diffing and patching engine. This period introduced React-inspired hooks for state management, upgraded Elmish integration, and restructured the solution to support modern development practices.

2020–2022 — Avalonia.FuncUI DSL and React-like API expansion

12 changes.

This period focused on expanding the Avalonia.FuncUI framework by introducing a comprehensive DSL for Avalonia controls, panels, and primitives. It also added a React-inspired component model with hooks for state management and a diagnostic inspector for runtime debugging. These features were demonstrated through new sample applications like the Presso coffee brewing calculator.

2023–2026 — sample applications and DSL expansion

17 changes.

This period focused on expanding the library's DSL bindings for button and toggle controls while introducing experimental utilities for animations and state management. A significant effort was dedicated to creating a comprehensive suite of sample applications, including a Control Catalog, various Elmish-based demos, and platform-specific examples for iOS and WebAssembly.

Features

Add Chord Parser, Genetic Algorithm, and Todo App sample projects

New sample projects have been added to the Examples directory: a Chord Parser application that parses musical chord charts and transposes them using FParsec; a Genetic Algorithm simulation featuring a squirrel ecosystem with actors, genes, and state management; and a Todo App demonstrating list management, animations, and UI interactions. These samples provide reference implementations for parsing, simulation logic, and interactive UI patterns using Avalonia.FuncUI.

Examples.ChordParser, Examples.GeneticAlgorithm, Examples.TodoApp · high confidence

Add Counter App example using Avalonia.FuncUI

A new Counter App example has been added to the Examples directory, demonstrating a simple counter interface built with Avalonia.FuncUI. The application features a dark-themed desktop window with plus and minus buttons to increment or decrement a displayed count, serving as a functional sample for users of the library.

src/Examples/Examples.CounterApp · high confidence

Add Game of Life benchmark to Avalonia.FuncUI.Benchmarks

A new benchmark project has been added to measure the performance of the virtual DOM diffing engine, specifically targeting large lists of views. The project includes a Game of Life scenario that generates a grid of buttons with various attributes, allowing users to profile the efficiency of the \Differ.diffContentMultiple\ logic when handling complex view hierarchies.

src/Avalonia.FuncUI.Benchmarks · high confidence

Add Presso sample application

Introduces the Presso sample application, a desktop UI built with Avalonia and Avalonia.FuncUI. The project includes the application entry point, a main window, and custom XAML styles for buttons and radio buttons to support the app's coffee-brewing theme.

src/Examples/Examples.Presso · high confidence

Add WebAssembly control catalog project

A new browser-based entry point for the Control Catalog has been added, enabling users to run the application in a WebAssembly environment. This includes the necessary bootstrapping code to initialize the Avalonia UI runtime in the browser, along with supporting web assets such as the HTML host page, CSS styling for the splash screen, and the application logo.

src/Avalonia.FuncUI.ControlCatalog/Avalonia.FuncUI.ControlCatalog.Browser · high confidence

Add desktop entry point for the Control Catalog

The desktop application entry point for the Control Catalog has been added, initializing the Avalonia UI framework with platform detection and Skia graphics support to enable running the catalog on desktop environments.

src/Avalonia.FuncUI.ControlCatalog/Avalonia.FuncUI.ControlCatalog.Desktop · high confidence

Add experimental animation, operator, and static component utilities

This change introduces three new files to the \Avalonia.FuncUI.Experimental\ namespace to support advanced UI patterns. \Experimental.Animations.fs\ provides extension methods for configuring Avalonia \Animation\ and \KeyFrame\ objects, allowing developers to set duration, fill mode, easing, and keyframes fluently. \Experimental.Operators.fs\ adds a custom \.= \ operator to simplify state updates by wrapping \IWritable.Set\. \Experimental.StaticComponent.fs\ defines an abstract \StaticComponent\ base class that renders its UI once and relies on bindings or manual control manipulation for subsequent updates, useful for performance-critical or complex static hierarchies.

src/Avalonia.FuncUI/Experimental · high confidence

Add iOS example app for Avalonia.FuncUI

Introduces a new iOS sample application (\Examples.Mobile.iOS\) that demonstrates how to host an Avalonia.FuncUI interface on iOS devices. The entry includes the \Info.plist\ configuration (targeting iOS 13.0+ for iPhone and iPad) and the \Program.fs\ entry point, which sets up the application lifecycle and renders a simple interactive view with increment/decrement buttons.

src/Examples/Examples.Mobile.iOS · high confidence

Add native menu and system tray icon support to the Control Catalog

The Control Catalog application now integrates native operating system features by adding a system tray icon and a basic native menu. When running as a desktop application, the app initializes a tray icon with a tooltip and links it to a native menu (currently containing a disabled 'File' item), allowing users to interact with the application via the system notification area.

src/Avalonia.FuncUI.ControlCatalog/Avalonia.FuncUI.ControlCatalog · high confidence

Added Canvas desktop application example

A new Avalonia-based desktop application example has been added to the Examples.Canvas project. This standalone executable demonstrates a dark-themed UI using the Fluent theme and Skia graphics backend, serving as a reference implementation for building similar desktop applications with the framework.

src/Examples/Examples.Canvas · high confidence

Added Canvas interactivity examples

The Examples.Canvas module now includes two interactive demos: a rectangle selection demo that highlights items on tap, and a rectangle dragging demo that supports moving shapes via pointer events. These examples demonstrate Avalonia.FuncUI patterns for handling pointer interactions, managing local state, and using SubPatchOptions to prevent stale data in event handlers.

Examples.Canvas · high confidence

Added new sample applications and libraries

The repository now includes several new example projects demonstrating various capabilities: an Elmish-based Clock app, a Counter app, a Game of Life simulation, and a Tetris game; a Chord Parser application; a Contact Book app using the Bogus library for data generation; a Drawing App with canvas, color picker, and size picker controls; an EnvApp showcasing environment state management; and a Genetic Algorithm example featuring a squirrel simulation with fitness evaluation and population management.

(repo-wide) · high confidence

Control Catalog demo application added

A new Control Catalog application has been added to showcase various Avalonia controls and features. The main view organizes demos into a tabbed interface, including demonstrations for CalendarDatePicker, Canvas, ContextMenu, DataTemplate, DatePicker, Drag-and-Drop, Flyout, Grid, GridSplitter, and Attached Events. This provides a practical reference for using these UI components within the framework.

Avalonia.FuncUI.ControlCatalog · high confidence

Elmish integration with optimized view updates and UI thread synchronization

The Elmish integration in Avalonia.FuncUI now includes the \useElmish\ hook for managing state within components, supporting both argument-less and argument-based initialization patterns. View updates are optimized to only trigger when the model state actually changes, reducing unnecessary re-renders. Additionally, the library introduces \runWithAvaloniaSyncDispatch\ to ensure that message dispatching is safely synchronized with the Avalonia UI thread, preventing cross-thread access issues.

src/Avalonia.FuncUI.Elmish · high confidence

Introduce FuncUI Inspector for runtime component debugging

Adds a new diagnostic tool, the FuncUI Inspector, allowing users to inspect the runtime state of Avalonia.FuncUI components. The inspector provides a floating window that lists all active components, displays their current state values, and visualizes the dependency graph of state hooks. It includes features such as a pinned mode to keep the window visible, a context menu to copy state values as JSON, and a visual highlighter (adorner) to identify components in the UI tree.

src/Avalonia.FuncUI.Diagnostics · high confidence

Introduces React-inspired hooks and a new state management system

Avalonia.FuncUI now supports a React-style hook model, allowing components to manage local state and side effects using \useState\ and \useEffect\. This change introduces a new state system with \IReadable\ and \IWritable\ interfaces, enabling reactive updates and subscription-based rendering. Additionally, experimental hooks like \useDeferred\ are added to handle asynchronous operations, and an \EnvironmentState\ mechanism is provided for dependency injection of values across the component tree.

Avalonia.FuncUI · high confidence

Introduction of reactive state management primitives and inspector diagnostics

This change introduces the core reactive state system for Avalonia.FuncUI, adding \IReadable\ and \IWritable\ interfaces along with \Value\ and \ReadOnlyValue\ implementations to manage component state. It includes utility modules for handling keyed lists, filtering, and traversal of state collections, as well as a new \InspectorState\ module that enables a diagnostic tool to track and highlight UI components in real-time.

Avalonia.FuncUI.Diagnostics, src/Avalonia.FuncUI/Components/Lib, src/Avalonia.FuncUI/Components/Value · high confidence

New Contact Book example with debounced search and dynamic avatars

Added a new Contact Book sample application that demonstrates a contact list with a search filter using a custom debounced hook to delay API calls, an editor for modifying contact details, and the ability to load random user avatars from an external service.

src/Examples/Examples.ContactBook · high confidence

New Context API for component state and effects

A new \IComponentContext\ interface has been introduced in \src/Avalonia.FuncUI/Components/Context/Context.fs\, providing a React-inspired mechanism for managing component lifecycle and state. This API allows components to attach and manage state via \useState\ and \useStateLazy\, pass writable or readable values to descendants using \usePassed\ and \usePassedRead\, and register side-effects with \useEffect\ triggered by specific events like initialization or value changes. It also includes utilities for forcing re-renders (\forceRender\), tracking disposables, and setting component attributes, enabling more structured and predictable state handling within the UI framework.

src/Avalonia.FuncUI/Components/Context · high confidence

New DSL bindings for Avalonia Panels and Grids

This change introduces a new DSL layer for Avalonia layout panels, providing functional wrappers for Canvas, DockPanel, Grid, ReversibleStackPanel, StackPanel, VirtualizingCarouselPanel, VirtualizingStackPanel, and WrapPanel. Users can now define these layouts using the library's attribute-based syntax, including specific support for Grid row/column definitions, attached properties (like Canvas.Left or DockPanel.Dock), and spacing controls for StackPanel and WrapPanel.

src/Avalonia.FuncUI/DSL/Panels · high confidence

New DSL bindings for Avalonia Primitives controls

The \src/Avalonia.FuncUI/DSL/Primitives\ module now exposes a comprehensive set of DSL bindings for various Avalonia primitive controls, enabling users to build and configure these components in their functional UIs. This update adds support for \AccessText\, \AdornerLayer\, \CalendarItem\, \HeaderedContentControl\, \HeaderedItemsControl\, \HeaderedSelectingItemsControl\, \OverlayLayer\, \PickerPresenterBase\, \Popup\, \ScrollBar\, \SelectingItemsControl\, \TabStrip\, \TabStripItem\, \TemplatedControl\, \TextElement\, \Thumb\, \Track\, and \UniformGrid\. Users can now utilize specific attributes such as \shouldUseOverlayLayer\ for Popups, \headerBackground\ for CalendarItems, and \rowSpacing\/\columnSpacing\ for UniformGrids, along with event handlers for interactions like scrolling, dragging, and selection changes.

src/Avalonia.FuncUI/DSL/Primitives · high confidence

New DSL bindings for Avalonia controls and attributes

The DSL module now exposes comprehensive bindings for a wide range of Avalonia controls, including AutoCompleteBox, Border, Calendar, CalendarDatePicker, ComboBox, ContentControl, DatePicker, and DataValidationErrors. These bindings allow users to set properties (such as Border.BackgroundSizing, ComboBox.PlaceholderText, and Calendar.SelectedDates) and subscribe to events (like ComboBox.DropDownOpened and AutoCompleteBox.Populating) using the library's functional syntax.

src/Avalonia.FuncUI/DSL · high confidence

New DSL bindings for Avalonia document formatting elements

Added new DSL modules in src/Avalonia.FuncUI/DSL/Documents to support rich text formatting and layout. This includes bindings for Bold, Italic, Underline, and Run elements (with convenience createText functions), as well as Span for inline collections, LineBreak, InlineUIContainer for embedding UI elements, TextDecoration for detailed stroke and dash styling, and Inline for shared properties like text decorations and baseline alignment.

src/Avalonia.FuncUI/DSL/Documents · high confidence

New DSL bindings for base Avalonia control types

The \src/Avalonia.FuncUI/DSL/Base\ module now provides a comprehensive set of DSL bindings for fundamental Avalonia types, including \Animatable\, \AvaloniaObject\, \ContentPresenter\, \Control\, \InputElement\, \Interactive\, \ItemsPresenter\, \Layoutable\, \Panel\, \RenderOptions\, \ScrollContentPresenter\, \StyledElement\, \TextOptions\, and \TextPresenter\. Users can now configure properties such as layout dimensions, margins, alignment, and visual styles (background, foreground, border) using the new fluent API. The update also adds support for event subscriptions (e.g., key presses, pointer interactions, lifecycle events) and specialized features like attached routed events, theme binding, and text rendering options.

src/Avalonia.FuncUI/DSL/Base · high confidence

New DSL bindings for button and toggle controls

This change introduces a new set of functional DSL bindings for various button and toggle controls in the \Avalonia.FuncUI.DSL\ namespace. It adds support for \Button\ (with properties like \clickMode\, \command\, \hotKey\, and events like \onClick\), \ButtonSpinner\, \CheckBox\, \DropDownButton\, \HyperlinkButton\ (with \navigateUri\ and \isVisited\), \RadioButton\ (with \groupName\ and \onChecked\), \SplitButton\, \ToggleSplitButton\, \ToggleButton\ (with \isThreeState\ and \isChecked\), and \ToggleSwitch\ (with \onContent\, \offContent\, and \knobTransitions\). These bindings allow users to declaratively configure these UI elements using the library's attribute-based API.

src/Avalonia.FuncUI/DSL/Buttons · high confidence

New Elmish-based Music Player sample application

Added a new sample application in the Examples.Elmish.MusicPlayer project that demonstrates an Elmish architecture for a music player using Avalonia.FuncUI and LibVLCSharp. The sample includes a playlist manager, a playback control bar with play/pause/next/previous/loop/shuffle buttons, and a progress slider, along with the ability to open local music files or folders.

Examples.Elmish.MusicPlayer · high confidence

New Elmish-based desktop sample applications

Added several new Elmish-based desktop sample applications built with Avalonia.FuncUI, including a Clock, Counter, Game of Life, Tetris, Presso (coffee brewer), and Music Player. These samples demonstrate various UI patterns and capabilities such as timer-based subscriptions, interactive grids, keyboard input handling, custom styling, and media playback integration via LibVLCSharp.

src/Examples/Elmish · high confidence

New Elmish.Presso coffee brewing calculator sample

A new interactive sample application has been added to the Examples.Elmish.Presso project, demonstrating an Elmish-based UI for calculating coffee brewing parameters. Users can select a brewing method (General, French Press, Pour Over, Cold Brew) and strength (Regular, Strong) to determine the required coffee amount for a given water volume, with controls for adjusting water quantity via radio buttons and a slider.

Examples.Elmish.Presso · high confidence

New control catalog demos for GroupBox, HyperlinkButton, ToggleSwitch, and Panels

The ControlCatalog application now includes interactive demo views for several Avalonia controls. Users can explore the GroupBox, HyperlinkButton, and ToggleSwitch controls through dedicated demo pages. Additionally, a new Panels demo allows users to interactively adjust WrapPanel properties, such as item width, height, and orientation, to see layout changes in real-time. A shared styles file has also been added to support these demos with consistent theming.

src/Avalonia.FuncUI.ControlCatalog/Avalonia.FuncUI.ControlCatalog/Views · high confidence

New state adapter functions for mapping and keyed access

The \State\ module in \src/Avalonia.FuncUI/Components/State\ now exposes new functions to transform and access state values. Users can use \State.map\ and \State.readMap\ to create derived state by applying read/write transformations or simple mappings. Additionally, \State.keyed\ and \State.tryFindByKey\ allow treating a list of items as a map for efficient lookup by a specific key, while \State.unique\ and \State.readUnique\ provide wrappers to ensure state updates are only propagated when the value actually changes.

src/Avalonia.FuncUI/Components/State · high confidence

Removals

Removal of CounterElmishExample project

The CounterElmishExample project has been removed from the repository. This deletion eliminates the sample application that demonstrated an Elmish-based counter implementation using Avalonia.FuncUI, including its main window, application entry point, and view logic.

src/Examples/CounterElmishExample · high confidence

Removal of core Virtual DOM and type definitions

The core implementation files for the Avalonia.FuncUI library have been deleted, including the Virtual DOM diffing logic (VirtualDom.fs), the attribute and view type definitions (Types.fs), and helper reflection utilities (Lib.fs). This removes the underlying mechanism for rendering views, comparing attribute changes, and managing the virtual DOM tree.

src/Avalonia.FuncUI/Core · high confidence

Removal of the Inspector example application

The Inspector example application has been removed from the codebase. The source files for the library logic (including control and property analysis), the main application entry point, and the UI views have all been deleted, meaning this sample tool is no longer available for users.

src/Examples/Inspector · high confidence

Behavioural changes

Introduce Component and ComponentBase with synchronous initialization

The library now exposes a new component model in the Components module, featuring a ComponentBase class that inherits from Avalonia's Border and a Component helper for creating views. A key behavioral change is that the initial state update is performed synchronously during OnInitialized, ensuring the UI is rendered immediately upon component creation rather than being deferred. The implementation also replaces the deprecated IStyleable interface with StyleKeyOverride for styling and includes metadata attributes to support dynamic member access.

src/Avalonia.FuncUI/Components · high confidence

New Virtual DOM diffing and patching engine

The VirtualDom module now uses a dedicated Differ and Patcher implementation to manage UI updates. The Differ computes deltas by comparing last and next view states, with a specific optimization for large lists of views that avoids indexed access to improve performance. The Patcher applies these deltas to the actual Avalonia controls, handling property updates, content changes (single and multiple), and subscription management via attached properties for cancellation. This replaces previous reflection-based instance property setting with direct delegates where possible, and introduces a more structured approach to patching root elements and borders.

src/Avalonia.FuncUI/VirtualDom · high confidence

Refactor view hosting to use weak subscriptions and unified update interface

The \HostControl\ and \HostWindow\ components in \src/Avalonia.FuncUI\ now use a unified \IViewHost.Update\ interface and delegate root updates to \VirtualDom.updateRoot\, simplifying the view lifecycle. To prevent memory leaks, the library replaces the external \System.Reactive\ dependency with a local \Observable.subscribeWeakly\ implementation that uses weak references to automatically dispose subscriptions when targets are garbage collected. Additionally, \HostControl\ now explicitly sets \StyleKeyOverride\ to ensure correct styling when embedded in existing applications.

src/Avalonia.FuncUI · high confidence

Upgrade to Avalonia 12.1.0 and FuncUI 2.0.0 with solution restructuring

The project has been upgraded to target Avalonia 12.1.0 and FuncUI 2.0.0, as defined in the new Directory.Build.props. To support this, the solution structure has been migrated from the legacy .sln format to the modern .slnx format, which now organizes the ControlCatalog, various Examples (including Elmish and Experimental apps), and Tests into distinct folders. Additionally, a custom TabControl style has been added to the ControlCatalog to set the tab strip placement to the left, and a new 'Setting Focus' example demonstrates managing focus state between text boxes using component state.

src · high confidence

Test coverage

Added unit tests for VirtualDom diffing, patching, and styling equality; Added unit tests for the State module; Refactor unit tests to use XUnit v3 and update test structure.

Dependencies

Upgrade to .NET 8 and Elmish 5

The library and its example projects have migrated from .NET Core 2.2 to .NET 8, and the Elmish integration has been upgraded from version 3 to version 5. This change requires users to update their project targets and dependencies to the newer .NET runtime and the latest Elmish release.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 56 → 62 (+6.2)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 91 → 91 (+0.0)
  • Architecture 100 → 98 (-2.2)
  • Maturity 56 → 55 (-0.3)
  • Readiness 49 → 53 (+3.7)
  • Security 50 → 71 (+21.0)
  • Domain Modelling 100 (new)

Resolved (48)

  • Dependency hygiene not measured — no packages were read
  • Duplicated block (10 lines × 2) (src/Avalonia.FuncUI/Components/State/State.Adapters.fs)
  • Duplicated block (10 lines × 2) (src/Avalonia.FuncUI/DSL/AttrBuilder.fs)
  • Duplicated block (11 lines × 2) (src/Examples/Examples.Canvas/Program.fs)
  • Duplicated block (11 lines × 2) (src/Examples/Examples.GeneticAlgorithm/Lib/Fitness.fs)
  • Duplicated block (11 lines × 3) (src/Examples/Examples.ChordParser/Program.fs)
  • Duplicated block (12 lines × 2) (src/Avalonia.FuncUI.ControlCatalog/Avalonia.FuncUI.ControlCatalog/Views/Tabs/SpinnerDemo.fs)
  • Duplicated block (12 lines × 2) (src/Avalonia.FuncUI/DataTemplateView.fs)
  • Duplicated block (12 lines × 2) (src/Avalonia.FuncUI/VirtualDom/VirtualDom.fs)
  • Duplicated block (12 lines × 3) (src/Avalonia.FuncUI.ControlCatalog/Avalonia.FuncUI.ControlCatalog/Views/Tabs/ContextMenuDemo.fs)
  • Duplicated block (13 lines × 2) (src/Examples/Examples.TodoApp/Program.fs)
  • Duplicated block (13 lines × 5) (src/Examples/Examples.CounterApp/Program.fs)
  • Duplicated block (13 lines × 6) (src/Examples/Examples.DrawingApp/Program.fs)
  • Duplicated block (14 lines × 2) (src/Avalonia.FuncUI/DSL/AttrBuilder.fs)
  • Duplicated block (15 lines × 2) (src/Examples/Examples.Presso/Lib/Library.fs)
  • Duplicated block (16 lines × 2) (src/Examples/Examples.Presso/Main.fs)
  • Duplicated block (16 lines × 3) (src/Avalonia.FuncUI.Benchmarks/Scenarios/Diffing/GameOfLife.fs)
  • Duplicated block (16 lines × 3) (src/Avalonia.FuncUI.Benchmarks/Scenarios/Diffing/GameOfLife.fs)
  • Duplicated block (17 lines × 2) (src/Examples/Examples.InlineText/Program.fs)
  • Duplicated block (18 lines × 2) (src/Examples/Examples.DrawingApp/Program.fs)
  • …and 28 more

New (54)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Documentation: written for insiders (docs/controls/timepicker.md)
  • Duplicated block (10 lines × 2) (src/Avalonia.FuncUI.Benchmarks/Scenarios/Diffing/GameOfLife.fs)
  • Duplicated block (10 lines × 2) (src/Avalonia.FuncUI/Components/State/State.Adapters.fs)
  • Duplicated block (10 lines × 2) (src/Examples/Elmish/Examples.Elmish.ClockApp/Program.fs)
  • Duplicated block (10–13 lines × 6) (src/Examples/Elmish/Examples.Elmish.ClockApp/Program.fs)
  • Duplicated block (11 lines × 2) (src/Examples/Examples.ChordParser/Program.fs)
  • Duplicated block (11 lines × 4) (src/Avalonia.FuncUI.Benchmarks/Scenarios/Diffing/GameOfLife.fs)
  • Duplicated block (11 lines × 7) (src/Examples/Elmish/Examples.Elmish.ClockApp/Program.fs)
  • Duplicated block (110 lines × 2) (src/Examples/Examples.DrawingApp/Program.fs)
  • Duplicated block (12 lines × 2) (src/Avalonia.FuncUI/DataTemplateView.fs)
  • Duplicated block (12 lines × 3) (src/Avalonia.FuncUI.ControlCatalog/Avalonia.FuncUI.ControlCatalog/Views/Tabs/ContextMenuDemo.fs)
  • Duplicated block (12 lines × 3) (src/Avalonia.FuncUI/DSL/AttrBuilder.fs)
  • Duplicated block (15 lines × 2) (src/Examples/Elmish/Examples.Elmish.Tetris/Program.fs)
  • Duplicated block (15–16 lines × 2) (src/Examples/Examples.TodoApp/Program.fs)
  • Duplicated block (16 lines × 2) (src/Avalonia.FuncUI/DSL/AttrBuilder.fs)
  • Duplicated block (16 lines × 2) (src/Examples/Elmish/Examples.Elmish.Presso/Main.fs)
  • Duplicated block (17–18 lines × 6) (src/Examples/Elmish/Examples.Elmish.Presso/Program.fs)
  • Duplicated block (17–19 lines × 2) (src/Avalonia.FuncUI.ControlCatalog/Avalonia.FuncUI.ControlCatalog/Views/Tabs/SpinnerDemo.fs)
  • …and 34 more

Architecture

  • Containers 0 added · 0 removed · contexts 16 added · 0 removed · edges 14 added · 0 removed

Added bounded contexts (16)

  • Avalonia.FuncUI
  • Avalonia.FuncUI.ControlCatalog
  • Avalonia.FuncUI.Diagnostics
  • Avalonia.FuncUI.UnitTests
  • Examples.Canvas
  • Examples.ChordParser
  • Examples.ContactBook
  • Examples.Elmish.ClockApp
  • Examples.Elmish.CounterApp
  • Examples.Elmish.GameOfLife
  • Examples.Elmish.MusicPlayer
  • Examples.Elmish.Presso
  • Examples.Elmish.Tetris
  • Examples.GeneticAlgorithm
  • Examples.Presso
  • Examples.TodoApp

Added dependency edges (14)

  • Avalonia.FuncUI.ControlCatalog → Avalonia.FuncUI
  • Avalonia.FuncUI.Diagnostics → Avalonia.FuncUI
  • Examples.Canvas → Avalonia.FuncUI
  • Examples.ChordParser → Avalonia.FuncUI
  • Examples.ContactBook → Avalonia.FuncUI
  • Examples.Elmish.ClockApp → Avalonia.FuncUI
  • Examples.Elmish.CounterApp → Avalonia.FuncUI
  • Examples.Elmish.GameOfLife → Avalonia.FuncUI
  • Examples.Elmish.MusicPlayer → Avalonia.FuncUI
  • Examples.Elmish.Presso → Avalonia.FuncUI
  • Examples.Elmish.Tetris → Avalonia.FuncUI
  • Examples.GeneticAlgorithm → Avalonia.FuncUI
  • Examples.Presso → Avalonia.FuncUI
  • Examples.TodoApp → Avalonia.FuncUI

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

fsprojects/Avalonia.FuncUI was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 22 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit e2757a4216e2b215a862a35af6bddc5efb0f71b4 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-821afab8930d.