InfiniLore.InfiniFrame.Js 0.2.0

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

<img src="assets/badge.png" alt="logo" height="76"/>

A modern and cross-platform native window framework for .NET that lets you build desktop applications using web technologies — load any URL, render HTML strings, or embed a full Blazor application inside a native window

Supports Windows (WebView2), Linux (WebKit2GTK), and macOS (WKWebView)

Note: This project is a modern rework of Photino.Net, Photino.Net.Server, Photino.Blazor and Photino.Native and is not affiliated with or endorsed by the original Photino authors

Workflow: MultiPlatform Testing

Packages

Package Description
NuGet Core window builder and runtime
NuGet Shared interfaces, types, enums, and delegates
NuGet Pre-built Blazor components for custom window chrome
NuGet Full Blazor app integration inside a native window
NuGet ASP.NET Core web app running inside a native window
NuGet JavaScript and Blazor interop utilities

Quick Start

Load a URL in a native window

Install: dotnet add package InfiniLore.InfiniFrame

using InfiniFrame;

var window = InfiniFrameWindowBuilder.Create()
    .SetTitle("My App")
    .SetSize(1280, 720)
    .Center()
    .SetStartUrl("https://example.com")
    .Build();

window.WaitForClose();

Embed a Blazor application

Install: dotnet add package InfiniLore.InfiniFrame.BlazorWebView

using InfiniFrame.BlazorWebView;

var builder = InfiniFrameBlazorAppBuilder.CreateDefault(args, w => w
    .SetTitle("My Blazor App")
    .SetSize(1280, 720)
    .Center()
);

builder.RootComponents.Add<App>("#app");
builder.RootComponents.Add<HeadOutlet>("head::after");

builder.Build().Run();

Host an ASP.NET Core web app

Install: dotnet add package InfiniLore.InfiniFrame.WebServer

using InfiniFrame.WebServer;

var app = InfiniFrameWebApplication.CreateBuilder(args)
    .Build()
    .UseAutoServerClose();

app.Run();

Architecture

Your Application
│
├── InfiniLore.InfiniFrame                ← Core: window builder & runtime
├── InfiniLore.InfiniFrame.BlazorWebView  ← Blazor app lifecycle
├── InfiniLore.InfiniFrame.WebServer      ← ASP.NET Core integration
│
├── InfiniLore.InfiniFrame.Blazor         ← Window chrome Razor components
├── InfiniLore.InfiniFrame.Js             ← JS/Blazor interop
│
└── InfiniLore.InfiniFrame.Shared         ← Interfaces, types, native interop
        └── InfiniFrame.Native (internal) ← C++ platform layer

Only one of BlazorWebView, WebServer, or the core InfiniFrame package is needed for a given application type — they are independent integration paths

Examples

Example What it demonstrates
BlazorWebView Basic Blazor app in a native window
BlazorWebView.MultiWindowSample Multiple independent windows with different Blazor components
WebApp.Blazor Blazor Server hosted via ASP.NET Core
WebApp.React React frontend with custom scheme handler and web messaging
WebApp.Vue Vue.js frontend with all built-in JS message handlers

Documentation

Guides

API Reference

  • Window APIIInfiniFrameWindow full reference
  • Builder API — All fluent builder methods
  • Events — Event system reference
  • Types — Enums, value types, and delegates

Migration

Platform Requirements

Platform Browser Engine Requirement
Windows WebView2 (Chromium) Windows 10 or later, WebView2 Runtime
Linux WebKit2GTK GTK 3+
macOS WKWebView macOS 10.15 Catalina or later

Repo History

This repo was originally forked from Photino.NET and then the history of the Photino.Blazor and Photino.Net.Server repositories were merged into this. By merging the histories, it was possible to ease further development, especially whilst also preserving the original commit history and attribution from the contributors of Photino

This was also done for the Photino.Native library, but given the extensive work that had already been done, git was seemingly unable to fully merge the commit history without losing the original commit history

License

Unlike the other projects in the InfiniLore ecosystem, this repo follows the same Apache 2.0 License as the original Photino projects

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 is compatible.  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. 
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 InfiniLore.InfiniFrame.Js:

Package Downloads
InfiniLore.InfiniFrame

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.2.0 44 3/31/2026
0.1.1 152 3/10/2026
0.1.0 151 3/10/2026
0.1.0-preview.26 62 3/10/2026
0.1.0-preview.25 1,685 2/4/2026
0.1.0-preview.24 59 2/4/2026
0.1.0-preview.23 204 1/10/2026
0.1.0-preview.22 776 12/2/2025
0.1.0-preview.21 646 12/2/2025
0.1.0-preview.18 626 12/2/2025
0.1.0-preview.15 642 12/2/2025
0.1.0-preview.14 325 11/30/2025
0.1.0-preview.13 163 11/27/2025
0.1.0-preview.12 155 11/26/2025
0.1.0-preview.11 159 11/26/2025
0.1.0-preview.10 165 11/25/2025
0.1.0-preview.8 372 11/17/2025
0.1.0-preview.6 253 11/13/2025
0.1.0-preview.5 173 11/3/2025
0.1.0-preview.4 170 11/3/2025