Modern, Server‑Rendered Web Components.

Get Started

Throw the first Stone

const Counter = create("counter", {
	// signal based state
	state: () => ({ count: 0 }),
	// server side
	render: (state, props, children) => `
    <div class="counter">
      <div>Count: ${state.count.get()}</div>
      <button>+</button>
    </div>
  `,
	// client side
	init: (element, state) => {
		element.querySelector("button")?
			.addEventListener("click", () => {
				state.count.update((n) => n + 1)
		})
	},
})
0