Define a component catalog. Users prompt. AI outputs JSON constrained to your catalog. Your components render it.
npm install @json-render/core @json-render/react
Set the guardrails. Define which components, actions, and data bindings AI can use.
End users describe what they want. AI generates JSON constrained to your catalog.
Stream the response. Your components render progressively as JSON arrives.
Components, actions, and validation functions.
{`import { createCatalog } from '@json-render/core';
import { z } from 'zod';
export const catalog = createCatalog({
components: {
Card: {
props: z.object({
title: z.string(),
description: z.string().nullable(),
}),
hasChildren: true,
},
Metric: {
props: z.object({
label: z.string(),
valuePath: z.string(),
format: z.enum(['currency', 'percent']),
}),
},
},
actions: {
export: { params: z.object({ format: z.string() }) },
},
});`}
Constrained output that your components render natively.
{`{
"root": "dashboard",
"elements": {
"dashboard": {
"type": "Card",
"props": {
"title": "Revenue Dashboard"
},
"children": ["revenue"]
},
"revenue": {
"type": "Metric",
"props": {
"label": "Total Revenue",
"valuePath": "/metrics/revenue",
"format": "currency"
}
}
}
}`}
Export generated UI as standalone React components. No runtime dependencies required.
AI generates a JSON structure from the user's prompt.
{`{
"root": "card",
"elements": {
"card": {
"type": "Card",
"props": { "title": "Revenue" },
"children": ["metric", "chart"]
},
"metric": {
"type": "Metric",
"props": {
"label": "Total Revenue",
"valuePath": "analytics/revenue",
"format": "currency"
}
},
"chart": {
"type": "Chart",
"props": {
"dataPath": "analytics/salesByRegion"
}
}
}
}`}
Export as a standalone Next.js project with all components.
{`"use client";
import { Card, Metric, Chart } from "@/components/ui";
const data = {
analytics: {
revenue: 125000,
salesByRegion: [
{ label: "US", value: 45000 },
{ label: "EU", value: 35000 },
],
},
};
export default function Page() {
return (
);
}`}
The export includes{" "}
package.json, component
files, styles, and everything needed to run independently.
{feature.desc}
npm install @json-render/core @json-render/react