Introduction
A lightweight, ejectable Full-Stack React 19 Framework built for the modern web.
What is Dinou?
Dinou is a framework designed to unleash the full potential of React 19. It provides seamless integration with React Server Components (RSC), Server Functions ('use server'), Server-Side Rendering (SSR), Static Generation (SSG), and advanced Incremental Static strategies (ISG and ISR).
It is built to leverage Suspense and Streaming for optimal performance, offering a modern development experience with an intelligent rendering system that adapts to your application's data needs automatically.
Key Features
Leverages Suspense and Streaming for optimal performance. Fetch data directly in your components without client-side waterfalls.
Automatically switches to Dynamic Rendering when request-specific data like cookies, headers, or search params are detected (Automatic Bailout).
Client-side soft navigation including push, replace, back, and refresh. The <Link> component supports automatic prefetching.
Update static content after deployment with Incremental Static Regeneration (ISR) and generate new pages on demand with Incremental Static Generation (ISG).
Includes native support for React 19 Server Functions ('use server') to invoke server-side logic directly from the client. Combined with react-enhanced-suspense and jotai-wrapper for clean state synchronization and mutations.
Automatic routing mapped to page.{jsx,tsx} paths. Supports dynamic segment matches ([id]), route grouping folder syntax ((group)), and precise layout overrides using no_layout or reset_layout flags.
Swap between esbuild, Rollup, or Webpack using simple npm commands, or extract the entire framework core directly to your repository with a single eject command.
Validate dynamic parameter segments before rendering via validateParams / allowISG, and shield your application from bot probes using the built-in Anti-Bot Shield middleware.
Rendering Philosophy
Dinou prioritizes a Static First approach. By default, pages are pre-rendered using Static Rendering. However, the engine automatically switches to Dynamic Rendering (request-time evaluation) if your code accesses request-specific dynamic data sources (such as cookies, headers, or query parameters).
This ensures you get the caching and load-time benefits of static delivery where possible, and the flexibility of dynamic request evaluation when needed, all without complex configuration files.
Next Steps
Ready to start building?