web UI  ↔  C# / .NET MAUI

build desktop apps with C# and the web stack you know.

use react, vue, svelte, or plain HTML for the UI. Vidra runs it in the OS webview and generates a typed bridge from your C#. no node or rust runtime in the app. no XAML.

documentation →
MIT · windows + macOS · alpha (0.x)
create-vidra-app version on npm @vidra-dev/sdk version on npm
Vidra the otter cracking a shell with a rock, the mascot for code generation
cracks the shell, keeps the types
calls out, events back

how your web UI talks to C#

web · typescript
your UI
react · vue · svelte · solid, in the OS-native webview
{ invoke }▸
◂{ event }
native · C#
your core
.NET MAUI host, NuGet modules, domain logic
#
stay in C#/.NET
write the native layer and domain logic in C#. use the NuGet libraries you already rely on.
bring any web framework
react, vue, svelte, solid, or plain HTML in a native webview. no XAML, no razor lock-in.
generate the TypeScript
C# is the source of truth. every build generates matching TypeScript proxies.
use the OS webview
WKWebView on macOS and WebView2 on Windows. your app does not bundle Chromium.
generated from C#

C# in. typed TypeScript out.

your C# modules are the source of truth. vidra-codegen emits matching TypeScript proxies on every build. API changes show up in your TypeScript types.

FileSystemModule.cs · source of truth
[BridgeModule("filesystem")]
public class FileSystemModule : BridgeModuleBase
{
  [BridgeMethod("readText")]
  public ReadTextResult ReadText(ReadTextArgs args)
    => new(File.ReadAllText(args.Path));
}
straightforward usage
import { filesystem } from "@vidra-dev/sdk";
 
// fully typed arguments and result
const { content } = await filesystem.readText({
  path: "/notes.txt",
});
a direct comparison

Vidra, Electron, Tauri, and MAUI

vidra
electron
tauri
maui · xaml
you write native in
C# / .NET
Node.js (JS/TS)
Rust
C# + XAML
UI layer
any web framework
any web framework
any web framework
XAML / Razor
rendering engine
OS WebView
bundled Chromium
OS WebView
native controls
ships a browser engine
no
yes (Chromium)
no
no
type safe by design
✓ codegen
✕ manual IPC
partial (community)
n/a (one language)
minimal app size
~30 MB
~100 MB+
~5 MB
~40 MB+
hot reload
✓ web UI + C#
UI · main restarts
UI · Rust restarts
✓ XAML + C#
desktop platforms
Windows · macOS
Win · macOS · Linux
Win · macOS · Linux
Win · macOS
mobile targets
on the roadmap
none
iOS · Android
iOS · Android
maturity
alpha (0.x)
mature
stable (2.x)
stable
npm create vidra-app@latest
Scaffolding a new Vidra app with npm create vidra-app@latest, then npm run dev
The default Vidra starter app on desktop, with a live counter updated by .NET, native module buttons, and window controls
questions and answers

before you try Vidra

Is Vidra an Electron or Tauri alternative?
Yes. All three let you build desktop apps with a web UI. Vidra uses C#/.NET for the native layer instead of Node (Electron) or Rust (Tauri), and it renders in the OS WebView instead of bundling Chromium.
Do I need to know Node or Rust?
No. Your native code is C#. Node.js runs Vite and the project scaffolder during development, but no Node or Rust runtime ships inside your app.
Which web frameworks can I use?
Any web UI that runs in a WebView: React, Vue, Svelte, Solid, or plain HTML. React + Vite ships in the template today; more framework templates are on the roadmap.
How does the type-safe bridge work?
Your C# modules are the source of truth. On every build, vidra-codegen scans the compiled assemblies and emits matching TypeScript proxies. If the C# API changes, TypeScript sees the new contract at compile time.
Which platforms does Vidra support?
Windows and macOS today, built on .NET MAUI. Windows is the most complete target; some window actions on Mac Catalyst are currently query-only. Mobile (iOS and Android) is on the roadmap.
Is Vidra production-ready?
Not yet. Vidra is alpha (0.x) and solo-built, so APIs and templates may change between releases. Try it if you can tolerate 0.x churn. It is MIT-licensed, with no telemetry or lock-in.
What do I need to build a Vidra app?
The .NET 10 SDK, the .NET MAUI workload (dotnet workload install maui), and Node.js 18 or newer. macOS targets also require Xcode. Run npm run doctor to verify your setup and print the exact fix for anything missing.
How do I get started?
Run npm create vidra-app@latest, then cd into your new app and run npm run dev to launch Vite and the native host together with hot reload on the web side.

try it. tell us what gets in the way.

Vidra is still early. open an issue if something breaks, feels unclear, or is missing. you will be talking directly to the person building it, and your feedback can still shape the project.

quick start → open an issue