GioJSdocs
On this page

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, runs getServerSideProps, 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 typed href()s.
  • Data - getServerSideProps, page actions with progressively enhanced <GioForm>, route.ts API 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 dev

Pick 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.

Coming from Next.js? The conventions (app/, page,layout, getServerSideProps) will feel familiar. See Migrating from Next.js.