The framework for User-Generated Interfaces
Dynamic, personalized UIs per user 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.
End users describe what they want. AI generates JSON constrained to your catalog. Every interface is unique to the user.
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": {
"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