English | Simplified Chinese
JSX-first Web Components platform. Package line: 0.39.0 (v0.39.0
release). Active execution: v0.39.0 Framework RC + Four-Product Matrix
Reset.
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.
deno run -A jsr:@openelement/create my-app
cd my-app
deno task devopenElement = Elements + UI + Framework + Protocols
| Product | Surface | Role |
|---|---|---|
| Elements | future @openelement/elements, 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/protocols |
Runtime-free replacement boundaries and conformance contracts. |
Supporting packages such as @openelement/runtime, @openelement/core,
adapters, signals, style-sheet, ssg, router, content, and i18n are
advanced or implementation surfaces. They support the four products; they are
not separate first-class product lines.
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/runtime';
const count = signal(0);
export default defineIsland(
'my-counter',
() => <button onClick={() => count.value++}>Count: {count.value}</button>,
);All 20 workspace packages are aligned at 0.39.0 (v0.39.0) under
@openelement. The active execution line is
v0.39.0. ADR-0100 restores JSR publish as a release exit gate for v0.39+
closure.
v0.39.0 validates the generated Framework RC surface and records ADR-0099's four-product matrix reset. It also keeps Web Awesome out of the current UI target and limits heavy-framework island planning to a Vue adapter proof.
The v1.0 target is a stable four-product platform with frozen Elements, UI, Framework, and Protocols contracts.
| Section | Link |
|---|---|
| Guide | openelement.org/guide/getting-started |
| API Reference | openelement.org/apilist |
| Architecture | openelement.org/architecture/architecture |
See CONTRIBUTING.md. Architecture decisions live in docs/adr/, release execution lives in docs/sop/, active execution packages live in docs/next/, and current status lives in docs/status/STATUS.md.
MIT