TypeScript framework

Build-time pages and server-rendered apps, route by route.

Static HTML is the default. App routes add request-time rendering and client navigation; static pages can add interactive islands.

$npm create neutron@latest
routes/about.tsx
export const config = { mode: "static" };

export default function About() {
  return <h1>About</h1>;
}
Static HTML
routes/dashboard.tsx
import { useLoaderData } from "@neutron-build/core";

export const config = { mode: "app" };

export async function loader() {
  return { user: "Alice" };
}

export default function Dashboard() {
  const data = useLoaderData<typeof loader>();
  return <h1>Welcome, {data.user}</h1>;
}
Interactive route
File-based routing
Static, dynamic, and catch-all routes with nested layouts and error boundaries.
Loaders and actions
Server-side reads and mutations colocated with the route that uses them.
Selective hydration
Static routes can hydrate individual Preact islands when interaction is needed.
Static and server adapters
Build for static hosting or a supported server runtime from the same route model.