From 4b16828b087932c6390f42798224783d5d0eaa74 Mon Sep 17 00:00:00 2001 From: Huanyi Xie <74809554+xiehuanyi@users.noreply.github.com> Date: Tue, 6 Oct 2026 10:54:09 +0300 Subject: [PATCH 1/2] docs(next): wire routes through getPageData and a client renderer --- packages/next/README.md | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/packages/next/README.md b/packages/next/README.md index fb4807e3..987b5238 100644 --- a/packages/next/README.md +++ b/packages/next/README.md @@ -13,9 +13,10 @@ npm install @json-render/core @json-render/react @json-render/next ### 1. Define your application spec ```typescript +// lib/spec.ts import type { NextAppSpec } from "@json-render/next"; -const spec: NextAppSpec = { +export const spec: NextAppSpec = { metadata: { title: { default: "My App", template: "%s | My App" }, }, @@ -49,15 +50,42 @@ const spec: NextAppSpec = { ```typescript // lib/app.ts import { createNextApp } from "@json-render/next/server"; +import { spec } from "./spec"; -export const { Page, generateMetadata, generateStaticParams } = createNextApp({ spec }); +export const { getPageData, generateMetadata, generateStaticParams } = createNextApp({ spec }); ``` ### 3. Wire up Next.js routes ```tsx // app/[[...slug]]/page.tsx -export { Page as default, generateMetadata, generateStaticParams } from "@/lib/app"; +import { notFound } from "next/navigation"; +import { getPageData } from "@/lib/app"; +import { SiteRenderer } from "./renderer"; + +export { generateMetadata, generateStaticParams } from "@/lib/app"; + +export default async function Page({ + params, +}: { + params: Promise<{ slug?: string[] }>; +}) { + const data = await getPageData({ params }); + if (!data) notFound(); + return ; +} +``` + +```tsx +// app/[[...slug]]/renderer.tsx +"use client"; + +import { PageRenderer } from "@json-render/next"; +import type { PageRendererProps } from "@json-render/next"; + +export function SiteRenderer(props: PageRendererProps) { + return ; +} ``` ```tsx From 2df2cfc8ef861ea131e8d07476abcdc0922392ee Mon Sep 17 00:00:00 2001 From: Huanyi Xie <74809554+xiehuanyi@users.noreply.github.com> Date: Tue, 6 Oct 2026 10:57:02 +0300 Subject: [PATCH 2/2] docs(next): keep provider handlers inside a client boundary --- packages/next/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/next/README.md b/packages/next/README.md index 987b5238..14da7cd0 100644 --- a/packages/next/README.md +++ b/packages/next/README.md @@ -90,6 +90,8 @@ export function SiteRenderer(props: PageRendererProps) { ```tsx // app/[[...slug]]/layout.tsx +"use client"; + import { NextAppProvider } from "@json-render/next"; import { registry, handlers } from "@/lib/registry";