Skip to content

Repository files navigation

openElement

English | Simplified Chinese

OpenElement is the Web Components-native, static-first application framework for delivering DSD-first applications with a standard Custom Element contract. Custom Elements are the durable application contract; JSX and Basic Element are the authoring layer; Declarative Shadow DOM is the default server representation; interactive regions upgrade selectively.

Source package line: 0.43.0-alpha.1 (v0.43.0-alpha.1) — the current five-package source line; the request-time Application Loop froze under ADR-0122 on top of ADR-0119's untouched static freeze. npm registry line: v0.43.0-alpha.1 — the published five-package release (dist-tag latest). During alpha trains the registry line may lag the source line by one alpha; at stable cuts they are equal.

License: MIT Deno npm CI

Current product

OpenElement = Web Components-native fullstack application framework
current proven scope = static-first applications with fullstack output paths
official build path = Vite + Nitro

The current consumer graph has five packages:

Package Role
@openelement/element JSX, Custom Elements, DSD, hydration, signals and component runtime contracts
@openelement/app Pages, routes, loaders, actions, islands and normalized request semantics
@openelement/adapter-vite Vite, content, SSG, generated data, Hono and Nitro build/deploy implementation
@openelement/create Version-coherent starter generation and consumer lifecycle
@openelement/ui Optional, reusable and dogfood-proven Web Component primitives

(Role wording follows docs/current/STACK_CONTRACT.md, the source of truth.)

The former core, signal, router, protocol, content and ssg packages are implementation history, not supported consumer imports.

Why openElement

Use OpenElement when a standard Custom Element should remain the same component contract in a standalone library and in a complete application. It combines native element authoring with routing, static generation, DSD, selective upgrades and deployable output without making a framework-specific virtual DOM the enduring UI model.

The strategic target is WC fullstack leadership, earned through WC SSR compatibility evidence, third-party element interop, portable deployments and external adoption. It is not presented as an already-achieved market claim.

The fullstack composition path

The official fullstack delivery path is OpenElement × Supabase × Cloudflare, with explicit ownership boundaries: OpenElement owns the application UX; Supabase owns data, Auth, RLS, Storage and Realtime; Cloudflare owns edge delivery, security, cache and async execution. Supabase and Cloudflare are composed providers, not built-in framework features.

Evidence: the Supabase recipe, the verified reference starter, the tier-1 boundary gate, the real-project qualification workflow and the real Workers deploy smoke (green run 31925944647), built on the ADR-0129 response-header channel. Delivered scope is the 0.43 line together with Universal WC SSR; production-runtime recovery and cache semantics remain 0.44 work.

Current release state

The five-package convergence is published as stable 0.42.0 (WC light fullstack, frozen under ADR-0122 on top of the untouched ADR-0119 static freeze). npm beta.1 through beta.3 remain withdrawn partial artifacts and are not compatibility baselines. The third audit sweep completed in alpha.19 (see ADR-0118), and the #390 pilot was retired by maintainer decision after zero recruitment (see ADR-0119).

0.42 = WC light fullstack. The 0.42.0 stable line ships the request-time Application Loop: dynamic loader/action routes, no-JS + enhanced forms, build → start, fail-closed static prerender and a default same-origin CSRF check on generated action POSTs. Login apps are supported via the better-auth recipe on Web-standard Request headers.

Explicitly not in the 0.42 claim (ADR-0122 §5): framework session/flash, cache/ISR, streaming SSR, performance SLOs, the third-party WC SSR corpus (0.43), production runtime recovery (0.44) and auth packages. The current promise is static-first applications with fullstack output paths—not broad fullstack parity.

The 1.0.0 path is a stable five-package product after the application loop, WC SSR, production runtime and external-adoption evidence are complete.

Start

deno run -A --minimum-dependency-age 0 npm:@openelement/create my-app
cd my-app
deno task dev

The default dist-tag is the stable 0.42 line, and --minimum-dependency-age 0 is needed because Deno's default minimumDependencyAge (~24h) refuses packages published within the last day.

The generated application exposes dev, check, test, build, start and preview.

Documentation

Section Link
Guide openelement.org/guide/getting-started
API reference openelement.org/apilist
Architecture openelement.org/architecture/architecture
Roadmap docs/roadmap/ROADMAP.md
Current status docs/status/STATUS.md

Mandatory project workflow: docs/governance/PROJECT_WORKFLOW.md.

Contributing

See CONTRIBUTING.md. Architecture decisions live in docs/adr/; historical release and audit records remain available as evidence, not current product documentation.

Brand

The canonical compact mark is the dark <open/> SVG in www/public/favicon.svg (open-favicon-inverted.svg is the maintained light-surface variant). Brand SVGs are distributed under the repository MIT license; forks may reuse them with attribution but should not imply endorsement.

License

MIT