Conversation
|
Looking at your benchmarks: The C# AOT numbers don't make sense to me (my non-trivial WinUI 3 AOT app for all three architectures take 6 minutes to build, and takes up ~50 MB of disk space). I think that the AOT version might have actually been self-contained rather than AOT compiled. |
Yh these stats are funny. Rust would out perform C# of course but not by this much. |
|
There are some internal discussions about deployment size, now that I have created a table. Stay tuned. 🙃 The actual numbers aren't that important - what matters is they were all measured on the same (old) machine. |
Windows Reactor is a UI library for Rust developers targeting WinUI 3 to deliver native, efficient Windows experiences.
Overview
windows-reactorbrings a React-like component model to native Windows desktop apps:use_state,use_reducer,use_effect,use_context,use_memo,use_callback,use_resource, and moreuse_resourceanduse_mutationfor background data loadingThemeRefbrush bindingsGetting Started
Prerequisites
Creating a new app
Add the dependency:
Write your app:
Running the samples
Performance
Compared to the equivalent C# Reactor gallery app (measured 2026-05-27):
Special Thanks
Thanks to Chris Anderson for kickstarting this project and convincing me to give WinUI another try. Chris is the brains behind Reactor for C#. And I couldn't have done this without Rafael Rivera whose knowledge of Windows internals and WinUI continues to impress.
This builds on a mountain of work in
windows-rsto optimize code generation, build time, and ergonomics. Over the last few weeks alone, the bindgen pipeline gained method-level filtering and mixed allow/deny lists with vtable demotion so thatwindows-reactorcan generate only the exact COM surface it needs — no dead vtable slots, no unused methods. Delegate code gen was minimized to emit void-returning handlers with direct S_OK returns, and event registration now accepts closures directly with a non-generic EventRevoker. Two new crates landed:windows-referencefor zero-overheadIReference<T>boxing (used throughout the reactor for nullable property values) andwindows-timefor idiomaticTimeSpan/DateTimeconversions. The metadata reader was simplified by merging TypeIndex and ItemIndex, and the tokenizer switched to thequotecrate — both reducing bindgen build time. Even if you're not interested in UI development, the profiling that went into this project greatly improved the corewindows-*crates as well.