Skip to content

Packages And Tooling

Chris Michael edited this page Jul 23, 2026 · 7 revisions

Effuse

Packages And Tooling

Status: All packages are experimental.

Package Map

Package Current responsibility
@effuse/core Signals, components, DOM rendering, layers, SSR, server routes/actions, manifests.
@effuse/router Histories, route matching, navigation, guards, links, and outlets.
@effuse/store Reactive Effect-based application state.
@effuse/query Server-state caching, observers, retries, and mutations.
@effuse/use Reusable browser and lifecycle hooks, including forms.
@effuse/i18n Translation definitions, locale state, interpolation, pluralization.
@effuse/ink Reactive Markdown rendering and component embedding. SSR-ready: InkLayer registers safely without a DOM, injectInkStyles is idempotent, and inkProseStyles is exported for inlining prose CSS into server-rendered heads.
@effuse/compiler JSX/TSX transformation and optimization.
@effuse/cli Development server, production build, manifest resolution, generated entries.

CLI

The CLI wraps Vite-based development and build services. If src/app.ts is present, entry generation can create .effuse/entry-client.ts and .effuse/entry-server.ts. The server entry can load an asset manifest and call the application request handler.

Generated files are build artifacts. Do not hand-edit them as application source.

Repository Runtime Policy

The repository currently requires Node >=22.14.0 and pnpm 10.32.1. Production gates include:

pnpm typecheck
pnpm lint
pnpm test
pnpm build
bun run check:app:bun

The integration app is ignored intentionally. It is a development laboratory for exercising package interoperability and browser workflows without making generated E2E files part of the product API.

Package Boundaries

  • Import from public package entry points.
  • Build @effuse/core before checking consumers that resolve its built output.
  • Keep client code on browser-safe exports.
  • Keep server adapters and Node-only work on server exports or generated server entries.
  • Treat internal paths as implementation details.

Release Boundary

Semantic release tooling exists, but package versions do not yet imply a stable framework compatibility guarantee. See Production Readiness.

Clone this wiki locally