Back to Blog

Rasengan v1.2.0 - Introducing SSG Rendering mode

posted on January 03, 2026

Rasengan v1.2.0 is now available on npm.


We are excited to announce the release of Rasengan.js v1.2.0 🎉 This version marks an important step forward for the framework by introducing some highly requested capabilities:

All these features are designed with one goal in mind: better performance, better scalability, and more control over how your application is rendered and delivered.

What's new in Rasengan v1.2.0?

Static Site Generation (SSG): the 3rd rendering mode in Rasengan.js

With v1.2.0, Rasengan.js officially introduces Static Site Generation (SSG) as its third rendering mode, alongside the existing SPA and SSR modes.

This means Rasengan.js now gives you full control over how your application is rendered, depending on your needs:

  • SPA → client-side rendering for highly interactive apps
  • SSR → server-side rendering for dynamic, SEO-critical pages
  • SSG → build-time rendering for ultra-fast, static content

SSG is designed for pages that don’t need to be rendered on every request, such as:

  • Blogs
  • Documentation
  • Marketing pages
  • Public content

By generating HTML at build time, Rasengan.js allows your application to be deployed as static files, delivering instant page loads and excellent SEO performance.

How to enable SSG in Rasengan.js

Enabling SSG in Rasengan.js is intentionally simple and integrates directly into the existing configuration system.

Global prerendering

To statically generate all routes, you can enable prerendering globally:

rasengan.config.js
tsimport { defineConfig } from 'rasengan'; import { rasengan } from 'rasengan/plugin'; export default defineConfig({ prerender: true, vite: { plugins: [rasengan()], }, });
Selective prerendering (recommended)

You can also choose exactly which routes should be statically generated using glob patterns:

rasengan.config.js
tsimport { defineConfig } from 'rasengan'; import { rasengan } from 'rasengan/plugin'; export default defineConfig({ prerender: { routes: ['/', 'blog/**'], }, vite: { plugins: [rasengan()], }, });

This approach is ideal for hybrid applications, where:

  • Public pages are statically generated
  • Authenticated or dynamic routes remain rendered via SSR or SPA

One framework, three rendering strategies

What makes this release important is not just the addition of SSG, but how it fits naturally into Rasengan.js’ architecture.

You don’t switch frameworks or mental models. You don’t rewrite routes. You don’t duplicate logic.

You simply choose the right rendering mode for the right use case.

With SPA, SSR, and now SSG, Rasengan.js gives you a complete rendering toolbox — all within a single, coherent framework.

Learn more about Pre-rendering

Lazy-loaded routes for File-based routing

Another minor improvement in v1.2.0 is lazy loading for File-based powered routes.

What problem does this solve?

In previous versions, all File-based routes could be bundled eagerly, which could:

  • Increase initial bundle size
  • Slow down first page load
  • Load routes that users may never visit

What’s new?

With lazy-loaded on File-based routes:

  • Routes are loaded only when needed
  • The initial JavaScript payload is significantly smaller
  • Navigation remains smooth and predictable

This is especially useful for:

  • Large applications
  • Admin dashboards
  • Auth-protected areas
  • Feature-based routing

Rasengan.js now intelligently bridges File-based routing with code splitting, without requiring complex configuration. You don't have to worry about any configure because everything is handled internally.

React Compiler supports

On October 7, 2025 the React Team has released the v1.0 of React Compiler which is a build-time tool that optimizes your React app through automatic memoization.


Today, Rasengan.js supports that feature through a simple configuration.

We are glad to introduce you Sage Mode into Rasengan.js, that will hold the React Compiler and next time the React Server Component.

How to configure React Compiler ?

First, you need to install the following package

npm

Terminal
bashnpm install --save-dev --save-exact babel-plugin-react-compiler@latest

pnpm

Terminal
bashpnpm add --save-dev --save-exact babel-plugin-react-compiler@latest

yarn

Terminal
bashyarn add --dev --exact babel-plugin-react-compiler@latest

Then you have to configure your rasengan.config.js file like follow:

rasengan.config.js
tsimport { defineConfig } from 'rasengan'; import { rasengan } from 'rasengan/plugin'; export default defineConfig({ sageMode: { reactCompiler: true }, vite: { plugins: [rasengan()], }, });

Learn more about React Compiler in this documentation.

Introduction of Kurama

We are proud to introduce Kurama (@rasenganjs/kurama) a lightweight and reactive state management library designed for Rasengan.js and any React application. Inspired by Zustand, Jotai, and the raw energy of Kurama, it gives developers full control over their application’s chakra (state) — simple, fast, and scalable.


Kurama provides a simple and concise API giving you the possibility to handle state globally into your application. The configuration can fit into a simple file and the store created can be used everywhere in your application via the hook created.

Usage

First you need to install the it as a dependency

Terminal
bashpnpm add @rasenganjs/kurama

Then you can create your store and use it everywhere you want.

Counter.tsx
tsximport { createStore } from '@rasenganjs/kurama'; type State = { count: number; increment: () => void; decrement: () => void; }; const useCounter = createStore<State>((set) => ({ count: 0, increment: () => set((s) => ({ count: s.count + 1 })), decrement: () => set((s) => ({ count: s.count - 1 })), })); // Use it anywhere function Counter() { const { count, increment, decrement } = useCounter(); return ( <> <button onClick={increment}>+</button> <button onClick={decrement}>-</button> Chakra Power: {count} </> ); }

Learn more about Kurama here

Introduction of Kage Demo

We are proud to introduce Kage Demo (@rasenganjs/kage-demo) a lightweight tool that helps you create guided tours and onboarding experiences for your website.


Kage Demo provides a simple API with which you can play around. Whether you're building a dashboard, a web app, or any site where users might need a little guidance, this package makes it easy to get started.

To start, just install the package as a dependency

Terminal
bashpnpm add @rasenganjs/kage-demo

Learn more about how to integrate it into your application here


As always, feedback and contributions are welcome.

Rasengan.js v1.2.0 is another step toward a flexible, modern, and developer-first React framework.

Happy building 🌀

Upgrade now and have fun Ninja!