Signals-Based Web Apps

Pure Julia

Build interactive web applications with fine-grained signals, server-side rendering, and WebAssembly islands. Signals architecture originated by SolidJS, compiled to WASM following Leptos (Rust), with Astro-style islands and view transitions.

0
doubled 0

Open your browser console (F12) to see Julia's create_effectconsole.log compiled via WasmTarget.jl

using Therapy

@island function InteractiveCounter(; initial::Int = 0)
    count, set_count = create_signal(initial)
    doubled = create_memo(() -> count() * 2)
    create_effect(() -> js("console.log('count:', $1, 'doubled:', $2)", count(), doubled()))

    return Div(
        Div(
            Button(:on_click => () -> set_count(count() - 1), "-"),
            Span(count),
            Button(:on_click => () -> set_count(count() + 1), "+")
        ),
        Span("doubled ", Span(doubled))
    )
end

Fine-Grained Signals

Leptos-style signals that update only what changes. No virtual DOM, no diffing.

SSR + Hydration

Server-side rendering with islands architecture. Static by default, interactive where needed.

WebAssembly Compilation

Compile Julia to compact inline Wasm via WasmTarget.jl. Tiny per-island modules, no framework runtime.