
One C# class, a web page and a native GPU screen: the UI framework I've been building (0.2 preview)
My project, flagging that up front.
eQuantic.UI: you write components in C#, and that is the entire surface. No markup language, no
CSS, no JavaScript, no package.json. The build produces a server-rendered web app, and the same
component classes render natively on macOS, iOS and Android through our own Metal/Vulkan engine (no
WebView, no Skia).
What the browser gets is an ordinary page: nothing to download before it runs, no WASM boot, split
per route. The only prerequisite on your machine is the .NET 10 SDK.
The itch: Blazor keeps me in C# but ships megabytes to the browser, MAUI is a second codebase from
the web one, and a JS framework means a second language plus a toolchain to maintain.
[Page("/", Title = "MyApp")]
public sealed class HomePage : StatefulComponent
{
private int _count;
public override VisualNode Build(ComponentContext context) =>
Column(gap: Space.S4, children: [
Text($"Count: {_count}", TypeRole.Display, context.Theme.TextPrimary),
Button("Increment", onPressed: () => SetState(() => _count++)),
]);
}
No markup, no CSS, no new. Styles are typed values, so the compiler checks your layout and styling
too. That class is a server-rendered web page and a native screen; which one you get is a project
setting, not a rewrite.
Two things you can check instead of taking my word for it:
• the playground runs the real compiler in your browser: https://ui.equantic.tech/playground
• https://ui.equantic.tech is itself built with it, from the published NuGet packages
It’s a 0.2 preview, MIT. No global state solution yet, no server push, and native means mobile plus
macOS (no Windows or Linux shell). Happy to go into any of it below.
One thing I’d like to know: which C# construct would you throw at the compiler first to see if it
breaks?