Já no NuGet0.2.0-preview.62
Um só código C#.Web real. Nativo real.
Escreva componentes uma vez em C#. Na web, eles compilam para JavaScript otimizado em tempo de build, sem WASM. No nativo, renderizam pelo Photon, um motor de GPU proprietário sobre Metal & Vulkan. Sem WebView, sem Skia.
~220 KBruntime web com gzip
500+casos de conformidade C#
0setup de Node, npm ou bundler
MITcódigo aberto
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
POR QUE O EQUANTIC.UI
Nada de "roda numa WebView".Cada alvo tem seu caminho real de renderização.
Componentes write-onceUm vocabulário abstrato: Box, Row, Column, Text, Button, ScrollView. Três realizadores: DOM + CSS na web, pixels de GPU no macOS, iOS e Android, e tabelas com estilos inline no e-mail. Paridade garantida por um harness entre alvos e testes golden de pixels.
Estilos tipados, zero CSSVocê declara BoxStyle, ColorToken, Space, TypeRole. A web emite CSS atômico deduplicado (o 100º card soma zero bytes); o nativo resolve os mesmos valores em dp e pintura de GPU. Uma cor semente refaz a marca do app todo.
Server Actions, RPC sem cerimôniaMarque um método com [ServerAction] e chame direto do cliente. Endpoints em allowlist, RBAC com [Authorize] antes da execução, limites de payload e allowlist de tipos embutidos.
O motor PhotonBackends Metal e Vulkan em paridade de ±1 LSB com uma referência em CPU. Texto real, composição IME, gestos, clipboard, VoiceOver. Em regime, cada frame aloca menos de 72 KB.
Pesos-pesados inclusosUma Spreadsheet nível Excel, um editor de código para seis linguagens e uma ListView virtualizada, escritos uma vez e rodando nos dois alvos. E ainda botões, inputs, cards, abas, diálogos, drawers, menus, toasts.
Um ciclo de dev que você já conhecedotnet watch faz hot reload da página no navegador e da janela nativa, sem reiniciar. Stack traces C# num overlay estilo Next.js, páginas 404/500 de verdade, metadados de SEO, lazy loading por rota.
Componentes write-onceUm vocabulário abstrato: Box, Row, Column, Text, Button, ScrollView. Três realizadores: DOM + CSS na web, pixels de GPU no macOS, iOS e Android, e tabelas com estilos inline no e-mail. Paridade garantida por um harness entre alvos e testes golden de pixels.
Estilos tipados, zero CSSVocê declara BoxStyle, ColorToken, Space, TypeRole. A web emite CSS atômico deduplicado (o 100º card soma zero bytes); o nativo resolve os mesmos valores em dp e pintura de GPU. Uma cor semente refaz a marca do app todo.
Server Actions, RPC sem cerimôniaMarque um método com [ServerAction] e chame direto do cliente. Endpoints em allowlist, RBAC com [Authorize] antes da execução, limites de payload e allowlist de tipos embutidos.
O motor PhotonBackends Metal e Vulkan em paridade de ±1 LSB com uma referência em CPU. Texto real, composição IME, gestos, clipboard, VoiceOver. Em regime, cada frame aloca menos de 72 KB.
Pesos-pesados inclusosUma Spreadsheet nível Excel, um editor de código para seis linguagens e uma ListView virtualizada, escritos uma vez e rodando nos dois alvos. E ainda botões, inputs, cards, abas, diálogos, drawers, menus, toasts.
Um ciclo de dev que você já conhecedotnet watch faz hot reload da página no navegador e da janela nativa, sem reiniciar. Stack traces C# num overlay estilo Next.js, páginas 404/500 de verdade, metadados de SEO, lazy loading por rota.
Componentes write-onceUm vocabulário abstrato: Box, Row, Column, Text, Button, ScrollView. Três realizadores: DOM + CSS na web, pixels de GPU no macOS, iOS e Android, e tabelas com estilos inline no e-mail. Paridade garantida por um harness entre alvos e testes golden de pixels.
Estilos tipados, zero CSSVocê declara BoxStyle, ColorToken, Space, TypeRole. A web emite CSS atômico deduplicado (o 100º card soma zero bytes); o nativo resolve os mesmos valores em dp e pintura de GPU. Uma cor semente refaz a marca do app todo.
Server Actions, RPC sem cerimôniaMarque um método com [ServerAction] e chame direto do cliente. Endpoints em allowlist, RBAC com [Authorize] antes da execução, limites de payload e allowlist de tipos embutidos.
O motor PhotonBackends Metal e Vulkan em paridade de ±1 LSB com uma referência em CPU. Texto real, composição IME, gestos, clipboard, VoiceOver. Em regime, cada frame aloca menos de 72 KB.
Pesos-pesados inclusosUma Spreadsheet nível Excel, um editor de código para seis linguagens e uma ListView virtualizada, escritos uma vez e rodando nos dois alvos. E ainda botões, inputs, cards, abas, diálogos, drawers, menus, toasts.
Um ciclo de dev que você já conhecedotnet watch faz hot reload da página no navegador e da janela nativa, sem reiniciar. Stack traces C# num overlay estilo Next.js, páginas 404/500 de verdade, metadados de SEO, lazy loading por rota.
DESAFIO
BLAZOR WASM
FRAMEWORKS JS
EQUANTIC.UI
Payload web
~2 MB+ de runtime
varia
~220 KB com gzip, divisão por página
Apps nativos
código MAUI separado
React Native / Electron
os mesmos componentes, na GPU
Estilização
CSS / Razor
CSS-in-JS, classes utilitárias
C# tipado, classes atômicas geradas
Toolchain
.NET
Node.js, npm, bundlers
só o SDK do .NET, tudo embutido
DESAFIO
BLAZOR WASM
FRAMEWORKS JS
EQUANTIC.UI
Payload web
~2 MB+ de runtime
varia
~220 KB com gzip, divisão por página
Apps nativos
código MAUI separado
React Native / Electron
os mesmos componentes, na GPU
Estilização
CSS / Razor
CSS-in-JS, classes utilitárias
C# tipado, classes atômicas geradas
Toolchain
.NET
Node.js, npm, bundlers
só o SDK do .NET, tudo embutido
COMO FUNCIONA
dotnet build é toda a toolchain
Pipeline web
1
Roslyn analisa seus componentes (.cs)
2
eqc transpila C# para TypeScript, checagem de tipos em duas camadas
3
o Bun embutido gera bundles divididos por página
4
ASP.NET Core serve páginas SSR, o cliente hidrata
Pipeline nativo · Photon
1
os mesmos componentes compilam como .NET
2
PhotonHost faz o layout com seu próprio motor flex em C#
3
uma display list é realizada a cada frame
4
Metal / Vulkan apresentam frames de GPU no macOS, iOS, Android
Pipeline web
1
Roslyn analisa seus componentes (.cs)
2
eqc transpila C# para TypeScript, checagem de tipos em duas camadas
3
o Bun embutido gera bundles divididos por página
4
ASP.NET Core serve páginas SSR, o cliente hidrata
Pipeline nativo · Photon
1
os mesmos componentes compilam como .NET
2
PhotonHost faz o layout com seu próprio motor flex em C#
3
uma display list é realizada a cada frame
4
Metal / Vulkan apresentam frames de GPU no macOS, iOS, Android
DOCUMENTAÇÃOTudo documentado, até a última prop
39 guias sobre o compilador, o runtime, o Photon e a integração com o servidor, além de uma página de API para cada componente: props com tipos e valores padrão reais, estados, acessibilidade e um preview ao vivo de cada variante. Busque qualquer coisa com ⌘K.
EXTENSÃO DO VS CODE
NOVA
Veja a tela enquanto você a escreve.
O preview ao vivo roda o realizador web real numa webview: o que você vê é o que vai ao ar. Clique num elemento para ir à linha que o criou e edite propriedades no seu C#.
Preview ao vivo de qualquer tela, atualizado enquanto você digita.
Clique para selecionar, aproveitando os source maps V3 que o compilador já emite.
Painel de propriedades que grava via rewrites do Roslyn e avisa quando uma edição não é segura, em vez de adivinhar.
eQuanticTech.equantic-ui
preview de desenvolvimento, grátis
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
Aqui os filhos são adicionados uma instrução por vez. Inserir ali muda o fluxo do método, não uma lista, então isso não é feito automaticamente.
artwork
Vectors.Mark
width
240
tint
Plate.Indigo
INÍCIO RÁPIDOUm app de verdade em três comandos
Pré-requisito: o SDK do .NET 10. Só isso. A toolchain de TypeScript e de bundling já vem embutida, então não há mais nada para instalar.
Hot reload nos dois alvos
SSR + hidratação
Templates inclusos
$ dotnet new install eQuantic.UI.Templates
$ dotnet new equantic-app -n MyApp
$ cd MyApp && dotnet run
→ web no localhost · troque o template por equantic-native
  e o mesmo código abre uma janela GPU
Experimente o preview 0.2.0-preview.62 hoje
Preview de desenvolvimento. Early adopters, issues e feedback sobre o roadmap são bem-vindos.
eQuantic.UIeQuantic.UI
Um só código C#. Web real. Nativo real.MIT © eQuantic.
Esta página também é um app eQuantic.UI: estilos tipados, CSS atômico, SSR.