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.
export default function Counter() {
const [count, setCount] = createSignal(0);
return (
<div>
<span>{count()}</span>
<button onClick={() => setCount(c => c + 1)}>+</button>
</div>
);
}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.
| Capability | Krate | Astro | Next.js |
|---|---|---|---|
| Compiler language | Go (custom lexer/parser) | Vite/esbuild | SWC/Turbopack |
| Client runtime by default | Zero JS | Per-island | React runtime |
| Interactivity with no JS | CSS signals | No | No |
| Node required to build | No | Yes | Yes |
| Go components & API routes | One binary | No | No |
| SSR / ISR / streaming | Yes (sidecar) | Yes | Yes |
| Agent-native (MCP) | Yes | No | No |
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.
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