Introduction
GioJS is a Rust-powered React framework. You write familiar React with file-based routing; the performance-critical hot path runs in compiled Rust, and Node does what it is best at - rendering React.
Why GioJS
Most of the things that make a React app fast in production - HTTP/2, brotli compression, image optimization, ISR caching, font self-hosting - are usually provided by a proprietary cloud. Self-host that same stack and you typically lose them. GioJS compiles all of it into a single binary so you get the same performance profile on a $5 VPS, bare metal, Windows, or Kubernetes - no CDN tax.
The split
The framework is two cooperating layers:
- Rust owns the hot path - HTTP/2 & TLS, routing, brotli/gzip compression, image optimization, the ISR page cache, static files, and middleware.
- Node renders React via
renderToReadableStream, runsgetServerSideProps, and gives you the full npm ecosystem.
A request only crosses into Node when it is a dynamic render that missed the cache. Everything else is served entirely from Rust.
What you get
- Routing - file-based
app/routes with layouts, dynamic and catch-all segments, route groups, per-folder loading/error/not-found UI, and typedhref()s. - Data -
getServerSideProps, page actions with progressively enhanced<GioForm>,route.tsAPI handlers, SSE and WebSockets with rooms. - Caching - an ISR page cache in Rust with stale-while-revalidate, partial prerendering, and on-demand purges by tag or path.
- Security by default - security headers, CSRF and WebSocket origin checks, CSP nonces in one line, encrypted cookie sessions with guards verified in Rust, rate limits.
- Assets - CSS imports and CSS Modules, image optimization, self-hosted fonts, metadata, sitemaps and robots.txt.
- Operations - a supervised worker pool, health checks, Prometheus metrics, JSON logs with request ids, standalone builds and static export.
Start in seconds
npm create giojs@latest my-app
cd my-app
npm run devpnpm create giojs my-app
cd my-app
pnpm devyarn create giojs my-app
cd my-app
yarn devbun create giojs my-app
cd my-app
bun run devPick TypeScript or JavaScript and a server app or a static site at the prompts; the scaffolder installs dependencies with the package manager you ran it with and makes the first git commit. Next, head to Installation for every option and Project Structure for a tour of the starter. When you are ready to ship, Deploying and the production checklist take it from there.
app/, page,layout, getServerSideProps) will feel familiar. See Migrating from Next.js.