Now on NuGet0.2.0-preview.30
One C# codebase.Real web. Real native.
Write components once in C#. On the web they compile to optimized JavaScript at build time, without WASM. Natively they render through Photon, a proprietary GPU engine on Metal & Vulkan. No WebView, no Skia.
~85 KBgzipped web runtime
500+C# conformance cases
0Node, npm or bundler setup
MITopen source
HomePage.cs
[Page("/", Title = "MyApp")]
public sealed class HomePage : StatefulComponent
{
  private int _count;
  public override VisualNode Build(ComponentContext ctx) =>
    Box(new BoxStyle { Background = ctx.Theme.Background },
      Column(gap: Space.S4, children:
      [
        Text($"{_count}"TypeRole.Display),
        Button("Count", onPressed: () =>
          SetState(() => _count++)),
      ]));
}
one class · a hydrated web page and a native GPU screen
WHY EQUANTIC.UI
Not "runs in a WebView".Each target gets its real rendering path.
Write-once componentsOne abstract vocabulary: Box, Row, Column, Text, Button, ScrollView. Two realizers: DOM + CSS on the web, GPU pixels on macOS, iOS and Android. Parity is enforced by a cross-target harness and a pixel golden suite.
Typed styles, zero CSSYou declare BoxStyle, ColorToken, Space, TypeRole. The web emits deduplicated atomic CSS (the 100th card adds zero bytes); native resolves the same values to dp and GPU paint. Rebrand the whole app from one seed color.
Server Actions, RPC without ceremonyMark a method [ServerAction] and call it from the client. Allowlisted endpoints, [Authorize] RBAC before execution, payload limits and type allowlisting built in.
The Photon engineMetal and Vulkan backends held to ±1 LSB parity against a CPU reference. Real text, IME composition, gestures, clipboard, VoiceOver. Steady-state frames allocate under 72 KB.
Heavyweights includedAn Excel-grade Spreadsheet, a six-language code editor and a windowed ListView, authored once and running on both targets. Plus buttons, inputs, cards, tabs, dialogs, drawers, menus, toasts.
A dev loop you already knowdotnet watch hot-reloads the browser page and the native window in place. C# stack traces in a Next.js-style overlay, true 404/500 pages, SEO metadata, per-route lazy loading.
Write-once componentsOne abstract vocabulary: Box, Row, Column, Text, Button, ScrollView. Two realizers: DOM + CSS on the web, GPU pixels on macOS, iOS and Android. Parity is enforced by a cross-target harness and a pixel golden suite.
Typed styles, zero CSSYou declare BoxStyle, ColorToken, Space, TypeRole. The web emits deduplicated atomic CSS (the 100th card adds zero bytes); native resolves the same values to dp and GPU paint. Rebrand the whole app from one seed color.
Server Actions, RPC without ceremonyMark a method [ServerAction] and call it from the client. Allowlisted endpoints, [Authorize] RBAC before execution, payload limits and type allowlisting built in.
The Photon engineMetal and Vulkan backends held to ±1 LSB parity against a CPU reference. Real text, IME composition, gestures, clipboard, VoiceOver. Steady-state frames allocate under 72 KB.
Heavyweights includedAn Excel-grade Spreadsheet, a six-language code editor and a windowed ListView, authored once and running on both targets. Plus buttons, inputs, cards, tabs, dialogs, drawers, menus, toasts.
A dev loop you already knowdotnet watch hot-reloads the browser page and the native window in place. C# stack traces in a Next.js-style overlay, true 404/500 pages, SEO metadata, per-route lazy loading.
Write-once componentsOne abstract vocabulary: Box, Row, Column, Text, Button, ScrollView. Two realizers: DOM + CSS on the web, GPU pixels on macOS, iOS and Android. Parity is enforced by a cross-target harness and a pixel golden suite.
Typed styles, zero CSSYou declare BoxStyle, ColorToken, Space, TypeRole. The web emits deduplicated atomic CSS (the 100th card adds zero bytes); native resolves the same values to dp and GPU paint. Rebrand the whole app from one seed color.
Server Actions, RPC without ceremonyMark a method [ServerAction] and call it from the client. Allowlisted endpoints, [Authorize] RBAC before execution, payload limits and type allowlisting built in.
The Photon engineMetal and Vulkan backends held to ±1 LSB parity against a CPU reference. Real text, IME composition, gestures, clipboard, VoiceOver. Steady-state frames allocate under 72 KB.
Heavyweights includedAn Excel-grade Spreadsheet, a six-language code editor and a windowed ListView, authored once and running on both targets. Plus buttons, inputs, cards, tabs, dialogs, drawers, menus, toasts.
A dev loop you already knowdotnet watch hot-reloads the browser page and the native window in place. C# stack traces in a Next.js-style overlay, true 404/500 pages, SEO metadata, per-route lazy loading.
CHALLENGE
BLAZOR WASM
JS FRAMEWORKS
EQUANTIC.UI
Web payload
~2 MB+ runtime
varies
~85 KB gzipped, per-page splitting
Native apps
separate MAUI codebase
React Native / Electron
the same components, GPU-rendered
Styling
CSS / Razor
CSS-in-JS, utility classes
typed C#, atomic classes generated
Toolchain
.NET
Node.js, npm, bundlers
only the .NET SDK, everything embedded
CHALLENGE
BLAZOR WASM
JS FRAMEWORKS
EQUANTIC.UI
Web payload
~2 MB+ runtime
varies
~85 KB gzipped, per-page splitting
Native apps
separate MAUI codebase
React Native / Electron
the same components, GPU-rendered
Styling
CSS / Razor
CSS-in-JS, utility classes
typed C#, atomic classes generated
Toolchain
.NET
Node.js, npm, bundlers
only the .NET SDK, everything embedded
HOW IT WORKS
dotnet build is the entire toolchain
Web pipeline
1
Roslyn parses your components (.cs)
2
eqc transpiles C# to TypeScript, two-layer type checking
3
embedded Bun bundles with per-page splitting
4
ASP.NET Core serves SSR pages, the client hydrates
Native pipeline · Photon
1
the same components compile as .NET
2
PhotonHost lays out with its own C# flex engine
3
a display list is realized per frame
4
Metal / Vulkan present GPU frames on macOS, iOS, Android
Web pipeline
1
Roslyn parses your components (.cs)
2
eqc transpiles C# to TypeScript, two-layer type checking
3
embedded Bun bundles with per-page splitting
4
ASP.NET Core serves SSR pages, the client hydrates
Native pipeline · Photon
1
the same components compile as .NET
2
PhotonHost lays out with its own C# flex engine
3
a display list is realized per frame
4
Metal / Vulkan present GPU frames on macOS, iOS, Android
DOCUMENTATIONEverything is documented, down to the prop
29 guides covering the compiler, runtime, Photon and server integration, plus an API page for every component: props with real types and defaults, states, accessibility, and a live preview of each variant. Search anything with ⌘K.
VS CODE EXTENSION
NEW
See the screen while you write it.
Live preview runs the real web realizer in a webview, so what you see is what ships. Click an element in the preview to jump to the line that made it, and edit properties straight into your C#.
Live preview of any screen, updating as you type.
Click-to-select, riding the V3 source maps the compiler already emits.
Property panel writing back through Roslyn rewrites, and telling you when an edit is not safe instead of guessing.
eQuanticTech.equantic-ui
development preview, free
DefaultUIDashboard
C#FormScreen.cs
Preview · FormScreen.cs
79
var theme = context.Theme;
80
81
column.Add(new Drawing(
82
    Vectors.Mark, 240,
83
    tint: Plate.Indigo));
84
85
column.Add(new Text(
86
    "Create your account",
87
    TypeRole.TitleL));
88
89
card.Add(new FormInput(
90
    _form, "Email""Email",
91
    helper: "We never share it."));
Create your accountType a broken address and nothing turns red. Leave the field and it does.Email
you@example.com
We never share it.
Drawing
Drawing
literal · new
↑ Column
Children here are added one statement at a time. Inserting there is a change to the method's flow, not to a list, so it is not done for you.
artwork
Vectors.Mark
width
240
tint
Plate.Indigo
QUICK STARTA real app in three commands
Prerequisite: the .NET 10 SDK. That is it. The TypeScript and bundling toolchain ships embedded, so there is nothing else to install.
Hot reload, both targets
SSR + hydration
Templates included
dotnet new install eQuantic.UI.Templates
dotnet new equantic-app -n MyApp
cd MyApp && dotnet run
→ web on localhost · swap the template for equantic-native
  and the same code opens a GPU window
Try the 0.2.0-preview.30 preview today
Development preview. We welcome early adopters, issues and feedback on the roadmap.
eQuantic.UIeQuantic.UI
One C# codebase. Real web. Real native.MIT © eQuantic.
This page is itself an eQuantic.UI app: typed styles, atomic CSS, SSR.