The Generative UI Framework
Generate dynamic, personalized UIs from prompts without sacrificing reliability. Predefined components and actions for safe, predictable output.
npm install @json-render/core @json-render/react
Set the guardrails. Define which components, actions, and data bindings AI can use.
Describe what you want. AI generates JSON constrained to your catalog. Every interface is unique.
Stream the response. Your components render progressively as JSON arrives.
Components, actions, and validation functions.
{`import { defineSchema, defineCatalog } from '@json-render/core';
import { z } from 'zod';
const schema = defineSchema({ /* ... */ });
export const catalog = defineCatalog(schema, {
components: {
Card: {
props: z.object({
title: z.string(),
description: z.string().nullable(),
}),
hasChildren: true,
},
Metric: {
props: z.object({
label: z.string(),
statePath: 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",
"statePath": "/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",
"statePath": "analytics/revenue",
"format": "currency"
}
},
"chart": {
"type": "Chart",
"props": {
"statePath": "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