Native React server rendering.
Render your React frontend from the same server that runs your backend. File-based routing, <Link> and <Image>, per-route metadata, streaming with Suspense, and on-disk ISR caching — served by the Pylon binary, not a separate Node host.
export async function generateMetadata({ params }) {
const p = await getProduct(params.slug);
return { title: p.name, description: p.summary };
}
export default function ProductPage({ params }) {
return <ProductView slug={params.slug} />;
}- Server-rendered React 19 with file-based routing under app/
- <Link> and <Image> with a built-in image optimizer — the conventions you already know
- Per-route metadata, streaming Suspense, error and not-found boundaries
- On-disk ISR cache for anonymous renders — the cloud app can't gate the marketing site
One server for frontend and backend
The same Pylon binary that holds your schema, runs your functions, and drives the sync engine also server-renders your React. One server, one origin, one shared session on every request — the frontend and backend are never two separate deployments. This very site is built this way.
The conventions you already know
app/ file routing with dynamic [slug] and catch-all [...slug] segments. <Link> for client navigation, <Image> with srcset and an optimizer. export const metadata or generateMetadata for SEO. loading.tsx for streaming fallbacks, error.tsx and not-found.tsx for boundaries. The conventions you already know, running in a single binary.
Cacheable by design
Anonymous renders are proven auth-independent and cached to disk (ISR) and the CDN, so public pages are fast and resilient — a marketing site served this way stays up even when the app behind it is busy. Authenticated renders resolve the real session server-side, so there's no logged-in flash.
Build it on Pylon.
One framework for your schema, sync, auth, functions, realtime, and SSR. Free to start.