Avalonia.FuncUI 1.6.0

Prefix Reserved
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package Avalonia.FuncUI --version 1.6.0
 
NuGet\Install-Package Avalonia.FuncUI -Version 1.6.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="Avalonia.FuncUI" Version="1.6.0" />
 
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Avalonia.FuncUI" Version="1.6.0" />
 
Directory.Packages.props
<PackageReference Include="Avalonia.FuncUI" />
 
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 Avalonia.FuncUI --version 1.6.0
 
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Avalonia.FuncUI, 1.6.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 Avalonia.FuncUI@1.6.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=Avalonia.FuncUI&version=1.6.0
 
Install as a Cake Addin
#tool nuget:?package=Avalonia.FuncUI&version=1.6.0
 
Install as a Cake Tool
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Stand With Ukraine

<h1 align="center"><img src="github/img/logo/FuncUI_Boxed.png" width="32px" alt="Avalonia FuncUI"> Avalonia FuncUI </h1>

<p align="center">Develop cross-platform GUI Applications using <a href="https://fsharp.org">F#<a> and <a href="https://github.com/AvaloniaUI/Avalonia">AvaloniaUI</a>!</p> <p align="center"> <img src="https://img.shields.io/github/languages/top/fsprojects/Avalonia.FuncUI" alt="GitHub top language"> <img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/fsprojects/Avalonia.FuncUI"> <img src="https://img.shields.io/github/license/fsprojects/Avalonia.FuncUI"> <a href="https://www.nuget.org/packages/Avalonia.FuncUI"> <img alt="Nuget (with prereleases)" src="https://img.shields.io/nuget/vpre/Avalonia.FuncUI?color=green&label=package%20Avalonia.FuncUI"> </a> </p><br>

About

FuncUI is a thin layer built on top of AvaloniaUI. It contains abstractions for writing UI applications in different programming styles. It also contains a component & state management system.

FuncUI mostly consists of:

  • Virtual DOM
  • View DSL
  • Component model

Resources

Contributing

Please contribute to this library through issue reports, pull requests, code reviews, documentation, and discussion.

Examples

Example using components

A simple counter made with the component library:

type Components =
 static member Counter () =
 Component (fun ctx ->
 let state = ctx.useState 0
 
 DockPanel.create [
 DockPanel.children [
 Button.create [
 Button.onClick (fun _ -> state.Set(state.Current - 1))
 Button.content "click to decrement"
 ]
 Button.create [
 Button.onClick (fun _ -> state.Set(state.Current + 1))
 Button.content "click to increment"
 ]
 TextBlock.create [
 TextBlock.dock Dock.Top
 TextBlock.text (string state.Current)
 ]
 ]
 ]
 )

Find more examples using components in the Components Examples folder.

Example using Elmish

The same counter as above but using the Avalonia.FuncUI.Elmish package:

module Counter =
 type CounterState = { count : int }
 let init = { count = 0 }
 type Msg = Increment | Decrement
 let update (msg: Msg) (state: CounterState) : CounterState =
 match msg with
 | Increment -> { state with count = state.count + 1 }
 | Decrement -> { state with count = state.count - 1 }
 
 let view (state: CounterState) (dispatch): IView =
 DockPanel.create [
 DockPanel.children [
 Button.create [
 Button.onClick (fun _ -> dispatch Increment)
 Button.content "click to increment"
 ]
 Button.create [
 Button.onClick (fun _ -> dispatch Decrement)
 Button.content "click to decrement" 
 ]
 TextBlock.create [
 TextBlock.dock Dock.Top
 TextBlock.text (sprintf "the count is %i" state.count)
 ]
 ]
 ] 

Find more examples using Elmish in the Elmish Examples folder

Maintainer(s)

The current co-maintainers of Avalonia.FuncUI are

  • @Numpsy
  • @JordanMarr
  • @sleepyfran
  • @JaggerJo (project originator)

The default maintainer account for projects under "fsprojects" is @fsprojectsgit - F# Community Project Incubation Space (repo management)

Commercial Support

Provided by Voynoic Systems GmbH

Please reach out to contact@voyonic-systmes.de if you need a commercial support contract or are interested in contract work.

Star History

<a href="https://star-history.com/#fsprojects/Avalonia.FuncUI&Date"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=fsprojects/Avalonia.FuncUI&type=Date&theme=dark" /> <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=fsprojects/Avalonia.FuncUI&type=Date" /> <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=fsprojects/Avalonia.FuncUI&type=Date" /> </picture> </a>

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible. 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 was computed. 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 (5)

Showing the top 5 NuGet packages that depend on Avalonia.FuncUI:

Package Downloads
Avalonia.FuncUI.Elmish

Elmish integration for Avalonia.FuncUI

SilkyFowl.Avalonia.FuncUI.LiveView

Live fs/fsx previewer for Avalonia.FuncUI.

Navs.FuncUI

Package Description

FluentAvalonia.FuncUI.Bindings

FluentAvalonia.FuncUI.Bindings is a library that integrates FluentAvalonia with Avalonia.FuncUI. It contains bindings that enable the use of FluentAvalonia's controls in an F# context offered by Avalonia.FuncUI.

AvaloniaCommunity.FuncUI.Bindings.DataGrid

Avalonia.FuncUI bindings for Avalonia.Controls.DataGrid

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on Avalonia.FuncUI:

Repository Stars
AvaloniaUI/Live.Avalonia
In-app live reload for Avalonia applications.
Version Downloads Last Updated
2.0.0-preview1 507 4/27/2026
1.6.0 1,094 4/8/2026
1.5.2 3,186 11/13/2025
1.5.1 17,773 9/5/2024
1.5.0 597 8/12/2024
1.4.0 1,104 4/26/2024
1.3.0 1,542 2/23/2024
1.2.0 886 1/6/2024
1.1.0 1,120 10/23/2023
1.0.2 373 10/22/2023
1.0.1 2,312 8/8/2023
1.0.0 2,366 7/6/2023
1.0.0-rc1.1.1 308 6/26/2023
1.0.0-rc1.1.0 1,114 6/20/2023
0.6.0-preview9.1 545 4/2/2023
0.6.0-preview9 527 3/10/2023
0.6.0-preview8 417 2/26/2023
0.6.0-preview7 747 1/26/2023
0.6.0-preview6.1 301 1/23/2023
Loading failed