Introduction

A simpler, Vite-based React framework for building fast websites with local data.

Overview

Sitex renders React routes to fast static HTML by default, while island architecture lets you add browser interactivity exactly where a page needs it.

Routes are local TSX files. Sitex maps them to URLs, keeps routing explicit and file-based. Read more in Page routing.

Imported components can opt into client rendering with directives like client:load, client:visible, and client:idle. Read more in Island rendering.

Static routes, server routes, route-level CSS, and island assets are handled by Vite's module graph. Read more in Rendering and assets.

Use cases

Sitex is intended for simple content-based websites like landing pages, marketing sites, and documentation. It is especially useful when that content site belongs to a larger product that also has an app-like dashboard built with something like Next.js or TanStack.

In that setup, the content site can reuse the same React components and design system as the app, but render them statically instead of dynamically.

We like building with the React ecosystem. We want to use React components, Vite, TypeScript, Shadcn/ui, and the rest of the ecosystem while still producing extremely fast websites.

Sitex versus Astro

We love Astro. Fulldev sponsors Astro monthly, and Sitex is mostly inspired by Astro's static-first model and island architecture.

Astro already proves that this model works. Sitex is not trying to replace Astro; it is an experiment around one specific difference.

In Astro, client directives are placed on framework components from inside Astro components. That can make it harder to build the whole website with React components, and you often end up with duplicate components in both .astro and .tsx syntax to work around that.

Because of this, at Fulldev we've even built a UI library for Astro to work around that limitation. Sitex is the experiment in the other direction: keep the Astro-inspired static output and island architecture, but let client directives be used from TSX so the app feels like a normal React and Vite project.