Skip to content
Chris Michael edited this page Jul 18, 2026 · 10 revisions

Effuse

Effuse

Effuse is a TypeScript application framework built around fine-grained reactivity, define({ script, template }) components, and typed capability layers that can own browser services and server endpoints.

Project status: Experimental. The repository has production-oriented tests, diagnostics, SSR infrastructure, and CI gates, but it does not yet claim a stable production release contract.

This wiki documents the implementation on the dev branch. Implemented, experimental, and planned behavior are marked separately. When code and older documentation disagree, this wiki follows exported APIs and tests.

Start Here

Page Purpose
Why Effuse Framework thesis, audience, and non-goals.
Getting Started Minimal application, routing, layers, and commands.
Reference Index Public concepts and implementation status.
Runnable Examples Small examples aligned with current APIs.
Production Readiness Current guarantees and explicit release boundaries.
Server Request Schemas Framework-owned request validation without Effect in application code.
Performance Lab Reproducible benchmarks, budgets, and claim boundaries.
Dev App Probe Contract Stable browser targets for ecosystem verification.
DX Gaps And Roadmap Open architecture and documentation work.

Framework Model

component script/template
        |
        v
typed local layer bindings
        |
        v
application capability graph
        |
        +---- browser services and lifecycle
        |
        +---- server API routes and actions
        |
        +---- manifest and typed client surface

The application composition root calls app.useLayers(...) once. Components and hooks declare local aliases into that graph. A missing registration fails before user setup with LayerBindingNotRegisteredError; local declarations do not mutate a running layer graph.

Current Boundary

  • Fine-grained signals, computed values, watchers, and reactive props exist.
  • Components use define({ script, template }) and support lifecycle hooks, context, refs, events, Suspense, and error boundaries.
  • Layers own services, state, dependencies, lifecycle, server routes, actions, validation, middleware metadata, diagnostics, and tracing.
  • The router supports nested routes, aliases, guards, grouped paths, colon params, bracket params, required catch-alls, and optional catch-alls.
  • SSR, streaming handlers, hydration data, head management, file-derived server endpoints, manifests, and typed manifest clients exist in @effuse/core.
  • Native serverSchema contracts decode request values without exposing Effect or requiring a third-party schema library.
  • Node and Bun route hot paths have reproducible median/p95 benchmark guards.
  • The CLI builds and serves projects and can generate client/server entry files.

The unified route manifest, complete public documentation migration, stable adapter matrix, and production release policy remain open work.

Repository

Clone this wiki locally