Agibuild.Fulora.Avalonia 1.5.10

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

<h1 align="center">Fulora</h1>

<p align="center"> <strong>Build desktop apps at web speed, without giving up native power.</strong><br/> <sub>A typed, policy-driven hybrid app platform for .NET and Avalonia.</sub> </p>

<p align="center"> <img src="https://img.shields.io/nuget/v/Agibuild.Fulora.Avalonia?logo=nuget&label=NuGet&color=004880&style=flat-square" /> <img src="https://img.shields.io/nuget/dt/Agibuild.Fulora.Avalonia?logo=nuget&label=Downloads&color=00a86b&style=flat-square" /> <a href="https://github.com/AGIBuild/Agibuild.Fulora/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/AGIBuild/Agibuild.Fulora/ci.yml?label=CI&logo=github&style=flat-square" /></a> <img src="https://img.shields.io/badge/License-MIT-yellow?style=flat-square" /> </p>

<p align="center"> <img src="https://img.shields.io/badge/Windows-WebView2-0078D4?style=flat-square&logo=windows" /> <img src="https://img.shields.io/badge/macOS-WKWebView-000000?style=flat-square&logo=apple" /> <img src="https://img.shields.io/badge/Linux-WebKitGTK-FCC624?style=flat-square&logo=linux&logoColor=black" /> <img src="https://img.shields.io/badge/iOS-WKWebView-000000?style=flat-square&logo=apple" /> <img src="https://img.shields.io/badge/Android-WebView-3DDC84?style=flat-square&logo=android&logoColor=white" /> </p>

<p align="center"> <img src="https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2FAGIBuild%2FAgibuild.Fulora%2Fbadges%2Funit-tests.json&style=flat-square" alt="Unit Tests" /> <img src="https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2FAGIBuild%2FAgibuild.Fulora%2Fbadges%2Fintegration-tests.json&style=flat-square" alt="Integration Tests" /> <img src="https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2FAGIBuild%2FAgibuild.Fulora%2Fbadges%2Fline-coverage.json&style=flat-square" alt="Line Coverage" /> <img src="https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2FAGIBuild%2FAgibuild.Fulora%2Fbadges%2Fbranch-coverage.json&style=flat-square" alt="Branch Coverage" /> </p>


Why Fulora

You have a fast-moving web team and a battle-tested .NET desktop stack.
Most hybrid approaches force a compromise: either weak host-web contracts, or a rewrite when complexity grows.

Fulora is built for the middle path that scales:

  • Keep your native host in C# and Avalonia
  • Ship rich UI with React/Vue/Svelte inside WebView
  • Connect both sides through a typed, source-generated bridge
  • Enforce host capabilities through policy-first execution

From "just embed one page" to "run a full product shell", you stay on one runtime model.


Start in 60 Seconds

Choose the onboarding path that matches where you are today.

Recommended (CLI + template):

dotnet tool install -g Agibuild.Fulora.Cli
dotnet new install Agibuild.Fulora.Templates
fulora new MyApp --frontend react
cd MyApp
fulora dev

Alternative (template only):

dotnet new install Agibuild.Fulora.Templates
dotnet new agibuild-hybrid -n MyApp
cd MyApp
dotnet run --project MyApp.Desktop

Manual (add WebView to an existing Avalonia app):

dotnet add package Agibuild.Fulora.Avalonia

In Program.cs:

AppBuilder.Configure<App>()
    .UsePlatformDetect()
    .UseFulora()
    .StartWithClassicDesktopLifetime(args);

In XAML:

<Window xmlns:wv="clr-namespace:Agibuild.Fulora;assembly=Agibuild.Fulora">
    <wv:WebView x:Name="WebView"
                Source="https://example.com" />
</Window>

Full guide: Getting Started · Documentation Index


See It in Action

Explore what Fulora can do before diving into the docs.


Speak One Language Across C# and JavaScript

The bridge is the core experience: predictable contracts, async-friendly calls, and no fragile string-based IPC.

Expose C# to JavaScript:

[JsExport]
public interface IGreeterService
{
    Task<string> Greet(string name);
}

webView.Bridge.Expose<IGreeterService>(new GreeterService());

Call from JavaScript:

const msg = await window.agWebView.rpc.invoke("GreeterService.greet", {
    name: "World"
});

Call JavaScript from C#:

[JsImport]
public interface INotificationService
{
    Task ShowNotification(string message);
}

var notifications = webView.Bridge.GetProxy<INotificationService>();
await notifications.ShowNotification("File saved!");

Ship SPAs Like Native Screens

Run your frontend exactly how your team already works: embedded assets in production, hot reload in development.

Production (embedded):

webView.EnableSpaHosting(new SpaHostingOptions
{
    EmbeddedResourcePrefix = "wwwroot",
    ResourceAssembly = typeof(MainWindow).Assembly,
});
await webView.NavigateAsync(new Uri("app://localhost/index.html"));

Development (HMR):

webView.EnableSpaHosting(new SpaHostingOptions
{
    DevServerUrl = "http://localhost:5173"
});

Demos & Samples

See complete patterns, not toy snippets.

Sample Description
samples/avalonia-react Avalonia + React (Vite), typed bridge, SPA hosting
samples/avalonia-ai-chat AI chat with IAsyncEnumerable streaming, cancellation, Microsoft.Extensions.AI
samples/showcase-todo Full-featured reference app (plugins, shell, CLI)

Walkthrough: Demo guide · AI Integration


Capability Snapshot

From a single embedded page to a full product shell — everything you need is already here.

Core

  • Typed bridge: [JsExport] / [JsImport], source-generated C#/JS proxies, AOT-safe; V2: byte[]/Uint8Array, CancellationToken/AbortSignal, IAsyncEnumerable streaming, overloads
  • Typed capability gateway for host/system operations (policy-first execution)
  • SPA hosting: embedded assets, dev HMR proxy, shell activation, deep-link, SPA asset hot update with signature verification
  • OAuth / Web auth (IWebAuthBroker), Web dialog (IWebDialog), screenshot & PDF, cookies, command manager
  • DevTools, User-Agent, session modes, dependency injection

Ecosystem

  • Official plugins: Database (SQLite), HTTP Client, File System, Notifications, Auth Token, Biometric, LocalStorage
  • CLI: fulora new, dev, generate, search, add plugin, list plugins --check
  • Telemetry: OpenTelemetry provider, Sentry crash reporting with bridge breadcrumbs
  • AI: Microsoft.Extensions.AI integration, streaming, tool calling, Ollama/OpenAI providers
  • Enterprise: OAuth PKCE client, shared state store (cross-WebView), plugin compatibility matrix

Details: Architecture · Bridge guide · SPA hosting


Architecture at a Glance

One runtime core, multiple platform adapters.

graph TD
    subgraph app ["Your Avalonia App"]
        WebView["WebView Control"]
        Bridge["Typed Bridge<br/>C# ↔ JS"]
        Gateway["Capability Gateway<br/>Host / System API"]

        WebView --- Core
        Bridge --- Core
        Gateway --- Core

        Core["Runtime Core<br/>Navigation · RPC · Shell · Diagnostics · Policy"]
        Core --- Adapter["IWebViewAdapter"]
    end

    Adapter --- WKWebView
    Adapter --- WebView2
    Adapter --- WebKitGTK
    Adapter --- AndroidWebView["Android WebView"]

Vision & Roadmap

Fulora helps teams move from first WebView integration to full hybrid platform without replacing their foundation.

Two paths, one runtime:

  • Control path: integrate WebView with minimal coupling
  • Framework path: adopt bridge, policy, shell, and tooling for faster delivery

Unlike wrapper-only solutions, Fulora provides typed host/web contracts, policy-governed capabilities, machine-checkable diagnostics, and scalable app-shell patterns out of the box.

Current status: Phase 12 (Enterprise & Advanced Scenarios) completed. All roadmap phases through 12 are done.

Full Roadmap · Project Vision & Goals


Quality Signals

Quality badges at the top of the page are updated automatically by CI on every successful build to main from these CI gates:

nuke Test              # Unit + Integration
nuke Coverage          # Coverage report + threshold enforcement
nuke NugetPackageTest  # Pack → install → run smoke test

For local template validation (not required by the default CI badge pipeline):

nuke TemplateE2E       # Template end-to-end test

License

MIT

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-android36.0 is compatible.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-ios18.0 is compatible.  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

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
1.5.10 80 3/17/2026
1.5.9 49 3/17/2026
1.5.8 43 3/16/2026
1.5.7 42 3/16/2026
1.5.6 49 3/16/2026
1.5.5 42 3/15/2026
1.5.4 43 3/15/2026
1.5.3 44 3/15/2026
1.5.2 41 3/14/2026
1.5.1.160 43 3/14/2026
1.5.0.157 45 3/13/2026
1.5.0.156 46 3/13/2026
1.5.0.151 37 3/13/2026
1.5.0.150 36 3/13/2026
1.5.0.149 35 3/13/2026
1.5.0.148 44 3/13/2026
1.3.0-preview 84 3/12/2026
1.1.1 83 3/8/2026
1.1.0 80 3/7/2026
1.0.12-preview 79 3/6/2026
Loading failed