Skip to content

open-element/openelement

Repository files navigation

openElement

English | Simplified Chinese

JSX-first Web Components platform. Package line: 0.40.6 (v0.40.6 release). Active execution: v0.40.6 Elements + Preact + Repository Slimming.

openElement builds static-first applications with Web Components, JSX/VNode rendering, progressive islands, API routes, and Vite + Nitro output. Shadow/DSD is the default component render mode; light DOM is explicit opt-in.

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

License: MIT Deno JSR CI

Quick Start

deno run -A jsr:@openelement/create my-app
cd my-app
deno task dev

Product Matrix

openElement = Elements + UI + Framework + Protocols
Product Surface Role
Elements @openelement/element, OpenElement Native Web Components authoring layer, competing with Lit and FAST.
UI @openelement/ui First-party open-* components built on the Elements model.
Framework @openelement/app, @openelement/create Pages, layouts, islands, API routes, Vite + Nitro build/runtime output.
Protocols @openelement/protocol Runtime-free replacement boundaries and conformance contracts.

Supporting packages such as @openelement/core, @openelement/adapter-vite, @openelement/signal, @openelement/router, @openelement/content, and @openelement/ssg are advanced or implementation surfaces. They support the four products; they are not separate first-class product lines.

In v0.40.x, the active workspace is the 11-package cleanup-train product line. Hub, RPC, CEM, compat-check, Lit/React/vanilla interop adapters, and standalone runtime/style-sheet/i18n packages are removed from the current package graph; @openelement/ssg is retained as the adapter-agnostic SSG engine. Historical details remain in git history and release evidence.

Why openElement

openElement renders Web Components on the server through Declarative Shadow DOM where that mode is selected. Static content ships as HTML first. Interactive pieces are islands that upgrade only when their hydration strategy says they should.

import { definePage } from '@openelement/app';

export default definePage({
  route: { path: '/' },
  head: { title: 'Home' },
  render() {
    return <main>Hello openElement</main>;
  },
});

For browser-upgraded UI:

import { defineIsland } from '@openelement/app';
import { signal } from '@openelement/element';

const count = signal(0);

export default defineIsland(
  'my-counter',
  () => <button onClick={() => count.value++}>Count: {count.value}</button>,
);

Current Line

All 11 current workspace packages are aligned at 0.40.6 (v0.40.6) under @openelement. The active execution line is v0.40.6. ADR-0101 keeps AutoFlow3 as the single workflow/gate control plane while reserving minor/major product decisions for human-approved ADR and version-plan evidence.

v0.40.x removes Hub, RPC, CEM, compat-check, Lit/React/vanilla interop adapters, and standalone runtime/style-sheet/i18n packages from the current product line, keeps @openelement/ssg as the adapter-agnostic SSG engine, keeps Vite + Nitro as the Framework base, and keeps Preact island work bounded behind the v0.40 plan. @preact/signals-core is the default signal engine; alien-signals remains optional.

The v1.0 target is a stable four-product platform with frozen Elements, UI, Framework, and Protocols contracts.

Documentation

Section Link
Guide openelement.org/guide/getting-started
API Reference openelement.org/apilist
Architecture openelement.org/architecture/architecture

Contributing

See CONTRIBUTING.md. Current truth lives in docs/status/STATUS.md, docs/roadmap/ROADMAP.md, and docs/current/VERSION_PLAN.md. Architecture decisions live in docs/adr/, and historical SOP/NextVersion packages remain release evidence until archived by the v0.40 cleanup.

License

MIT