Skip to content
Meeko
Type to search the guides and the API reference. Open it from any page with / or Ctrl K; move with the arrow keys and open a result with Enter.
Get started

Typed .meeko components, from the server to the browser.

A component engine for TypeScript and a full-stack framework. One file gives the server HTML and the reactivity that updates it, without a virtual DOM.

Get started

v1.9.0 MIT license Requires Node 24 and pnpm add @meekojs/meeko

examples / counter / Counter.meeko

Editor View on GitHub
<script lang="ts">	import { computed, signal } from '@meekojs/meeko'	/** Propiedades públicas del contador. */	export interface Props {		/** Valor inicial mostrado en el servidor y el navegador. */		initial?: number	}	const props = defineProps<Props>()	const count = signal(props.initial ?? 0)	const doubled = computed(() => count.value * 2)</script><template>	<button		type="button"		on:click="() => count.value++"		>{count.value} · doble: {doubled.value}</button	></template><style scoped>	button {		cursor: pointer;	}</style>
Result SSR and hydrated on this page

Press the button: the signal changes and only its text updates.

DevTools rendering
<Counter> #1

Props

initial
undefined

Signals

count
0
Counter.meeko:12
doubled computed
0
Counter.meeko:13

Timeline

No changes yet.

The real panel only exists in development, inside the page or in Chrome DevTools.

FIG. 01 Counter.meeko from the repository, its result and a rendering of DevTools

One typed file. The server sends HTML and the browser only wires up what changes.

  • A typed .meeko file

    Script, template and styles together. TypeScript checks props, events, models and every template expression, with the error on the line of the .meeko file.

    Components and API
  • Signals without a virtual DOM

    signal, computed and effect update only the text or the attribute that changes. Lists keep their nodes by key.

    Reactivity
  • SSR plus hydration

    The server sends the complete page and the state of every signal; the browser hydrates it without painting it again. Also streaming, prerendering and client pages.

    Rendering modes
COUNTER.MEEKO SSR · HTML HYDRATE SIGNAL STATE
FIG. 02 Compile, render on the server, hydrate

Full-stack out of the box. One standalone build per adapter and the same conformance suite for all four.

NODE BUN DENO WORKERS MEEKO BUILD --ADAPTER CONFORMANCE SUITE
FIG. 03 One build, four targets
  • Full-stack out of the box

    File-based routes, layouts, server code in the page itself, typed API and RPC, sessions with revocation and WebSocket across instances.

    Framework guide
  • Node, Bun, Deno and Cloudflare

    One standalone build per adapter, checked by the same conformance suite. SemVer since 1.0, with an explicit stability policy.

    1.x stability

Tools that see the runtime. The editor and DevTools show the real signals of each instance.

Counter.meeko examples / counter
	const props = defineProps<Props>()	const count = signal(props.initial ?? 0)count = 3	const doubled = computed(() => count.value * 2)</script><template>	<button

const count: Signal<number>

Counter.meeko · 1 instance count = 3

Edit value

Meeko live connected to meeko dev
FIG. 04 A rendering of the VS Code extension with meeko dev running: the value of each signal at the end of its line and in the hover

An editor with superpowers

A language server with the diagnostics of meeko check, server/browser execution zones, signal hovers and live values from meeko dev.

Editors

Per-instance DevTools

A tree of instances with their props and signals, a filterable timeline and a breakpoint per instance, inside the page or in a Chrome DevTools panel. It only exists in development.

DevTools
HOVER · COUNT = 3
FIG. 05 Meeko peeking over the editor

Quick start. One command creates the full-stack application; its scripts take it to production.

terminal
pnpm exec meeko init-framework my-app
cd my-app
npm install
npm run dev
dev
Starts the development server.
check
Generates the contracts and checks the types.
build
Client, server and prerendered pages; with --adapter, an output for Bun, Deno, Cloudflare or a static host.
start
Production SSR with Node 24.