Framework · In production since 2024

SenonUI

Shipping a desktop application usually means learning someone else's language first: Rust for Tauri, Dart for Flutter, JavaScript for Electron. SenonUI keeps the developer in Python, with an engine written in Rust underneath that updates only the values that changed.

SystemNative Python UI framework
StatusIn production since 2024
Engineering areaFramework

Fine-grained reactivity for Python developers building native Windows applications: no Rust, no Dart, no JavaScript, and an engine written in Rust underneath that updates only what actually changed.

Core capabilities

  • Build native Windows applications in Python, without Rust, Dart, or JavaScript
  • Update only the values that changed, tracked through a nested dependency tree
  • Compile the Python authoring surface into the engine's own representation rather than interpreting it
  • Render through the system webview, with GPU acceleration via compositing hints and WebGPU
  • Handle system state, filesystem access, and routing between pages natively in Rust
  • Keep secrets in Senon UI Vault, integrated with the Windows credential store
  • Provide a built-in key-value store plus TTL and LRU caches with stampede protection
  • Support components, semantic theming, design tokens, gradients, and WCAG utilities

Why it exists

Shipping a desktop application as a Python developer means learning someone else's language first: Rust and TypeScript for Tauri, JavaScript for Electron, Dart for Flutter. Flet comes closest and still did not cover what was needed. SenonUI began as a hobby, built through 2024 for its own sake with no product attached, and only months in turned out to be the thing that could carry Senon Solutions' native Windows applications. It takes its cues from Flet, Flutter, and Tauri, and keeps the developer in Python throughout.

The reactivity engine

The engine tracks a nested dependency tree and watches which variable inside which sub-dependency actually changed, then updates only that value. Nothing is diffed and no tree is walked to find the difference. The update goes straight to what moved, which is where molecular-level fine-grained reactivity comes from. The same engine holds application state, so in the extreme case where the system webview fails, that state is preserved intact and the interface re-renders once the webview recovers.

Python surface, Rust engine

Developers write Python, but nothing interprets that Python at runtime. The authoring surface is declarative and compiles down into the engine's own representation before the application ships. The engine owns everything below the interface: system state, filesystem access, routing between pages and components, a built-in key-value store, and TTL and LRU caches with stampede protection. Rendering runs through the system webview the way Tauri does, with GPU acceleration applied through compositing hints and WebGPU for animation-heavy work. Secrets stay in Senon UI Vault, which keeps keys out of the application and integrates directly with the Windows credential store.

Where it runs

Windows only for now, with macOS and Linux planned. It is in production building client projects, and public software is planned on top of it. VERONICA is the deliberate exception: its desktop needs Rust-native integration rather than a Python authoring surface, so it runs on Tauri instead.

Next conversation

Interested in building something great?

Start a project