Krate - Go-native web framework

Web applications with the power of a compiler.

Krate compiles TSX/JSX into static HTML at build time and ships a tiny signal-based hydration bundle. Fine-grained reactivity, file-based routing, SSR/ISR/streaming, a CSS pipeline, and a plugin system - all driven by a custom Go compiler. Drop into Go for server components and API routes whenever you want.

counter.tsx
export default function Counter() {
  const [count, setCount] = createSignal(0);
  return (
    <div>
      <span>{count()}</span>
      <button onClick={() => setCount(c => c + 1)}>+</button>
    </div>
  );
}
Live preview
0
Signals update the DOM directly - no virtual DOM.

Features

Signals, not React

Fine-grained reactivity with createSignal, createEffect and createMemo - React syntax is transpiled automatically.

SSG-first rendering

Every page pre-rendered to static HTML. Add SSR, ISR and Suspense-based streaming when you need it.

Go components

Author server and runtime components in Go, importing any Go package. They compile into the same host binary as your API routes.

JS & Go API routes

Write API routes in TypeScript or Go; both compile into the same /api/* namespace and one binary.

Full CSS pipeline

CSS Modules with FNV-32a scoping, Go-native Tailwind, minification and @import inlining.

Plugin system

Native plugins compiled with Go, or plugins written in JavaScript, executed inside an embedded QuickJS runtime.

WASM-powered search

Docs search with a build-time index served locally - zero server round-trips.

Agent-native (MCP)

Drive the compiler from an AI agent over the Model Context Protocol with krate mcp.

How Krate compares

A Go-native compiler with whole-program knowledge, a signal runtime, and a static-first default.

CapabilityKrateAstroNext.js
Compiler languageGo (custom lexer/parser)Vite/esbuildSWC/Turbopack
Client runtime by defaultZero JSPer-islandReact runtime
Interactivity with no JSCSS signalsNoNo
Node required to buildNoYesYes
Go components & API routesOne binaryNoNo
SSR / ISR / streamingYes (sidecar)YesYes
Agent-native (MCP)YesNoNo

Built for speed

A Go API route saturates a core; a runtime Go component renders on a compiled host with no Node in the path. See the benchmarks.

46k
req/s, Go API route
0 kB
JS on static pages
1
Binary, no Node
ES2020
Output baseline

Build something great.

Install the CLI and scaffold a project in seconds.

npm install -g @krate/core
mkdir my-app && cd my-app
krate init
krate dev
Get started