Web Frameworks and Full-Stack Wasm UIs

Fine-grained reactivity, SSR + hydration, server functions Component-based, React-like

React-like, cross-platform (web, desktop, mobile) Reactive, no virtual DOM egui / eframe Immediate-mode GUI on a canvas Blazor WebAssembly

Full.NET in the browser, Razor components Uno Platform / Avalonia Cross-platform XAML apps on Wasm Compose Multiplatform (Kotlin/Wasm) Jetpack Compose UI on the web Flutter Web (Wasm) Skia/CanvasKit rendering with WasmGC Python in HTML via Pyodide/MicroPython Vugu, go-app Go web UI frameworks

Trade-offs: initial download size (runtime and framework), DOM access via JS glue (getting faster with reference types and builtins), SEO (use SSR), but you get a single language for the full stack, strong typing, and compute performance.

// Leptos counter
use leptos::prelude::*;

#[component]
fn Counter() -> impl IntoView {
    let (count, set_count) = signal(0);
    view! {
        <button on:click=move |_| set_count.update(|n| *n += 1)>
            "Clicked " {count} " times"
        </button>
    }
}

fn main() { leptos::mount::mount_to_body(Counter) }
cargo install trunk && trunk serve      # build + dev server for Rust Wasm apps