This is the SolidJS renderer for the json-render ecosystem. You'd reach for it when you need to turn JSON specs into live Solid component trees with fine-grained reactivity. The setup is straightforward: define a catalog with zod schemas, wire up your components to receive props and emit events, then let the Renderer handle the rest. What's nice is the binding system. Props can reference state paths, templates, or conditions, and components like inputs get reactive two-way binding through useBoundProp. The provider stack handles state, visibility, validation, and actions out of the box. There's even streaming UI support if you're generating interfaces on the fly. It's a solid pick if you're building dynamic UIs from backend-driven schemas in Solid.

skills.sh installs
1.1K
GitHub stars
19.5K
last updated
Aug 21, 2026

Install

$ npx -y skills add vercel-labs/json-render --skill solid --agent claude-code

Installs into .claude/skills of the current project.

Files

@json-render/solid

@json-render/solid renders json-render specs into Solid component trees with fine-grained reactivity.

Quick Start

import { Renderer, JSONUIProvider } from "@json-render/solid";
import type { Spec } from "@json-render/solid";
import { registry } from "./registry";

export function App(props: { spec: Spec | null }) {
  return (
    <JSONUIProvider registry={registry} initialState={{}}>
      <Renderer spec={props.spec} registry={registry} />
    </JSONUIProvider>
  );
}

Create a Catalog

import { defineCatalog } from "@json-render/core";
import { schema } from "@json-render/solid/schema";
import { z } from "zod";

export const catalog = defineCatalog(schema, {
  components: {
    Button: {
      props: z.object({
        label: z.string(),
        variant: z.enum(["primary", "secondary"]).nullable(),
      }),
      description: "Clickable button",
    },
    Card: {
      props: z.object({ title: z.string() }),
      description: "Card container",
    },
  },
  actions: {
    submit: { description: "Submit data" },
  },
});

Define Components

Components receive ComponentRenderProps from the renderer:

Sponsors

Details

Repository
github.com/vercel-labs/json-render
Categories
Frontend Development, Debugging, Cloud & Infrastructure
First seen
Jun 3, 2026

More from vercel-labs/json-render

All 31
1patternsdev avatarcompound-patternpatternsdev/skillsTeaches the compound component pattern for shared implicit state. Use when building related components like tabs, accordions, or dropdowns that need to coordina1.1Kskills.sh installs
2kostja94 avatarsidebar-generatorkostja94/marketing-skillsWhen the user wants to design, optimize, or audit a sidebar for blogs, docs, or content pages. Also use when the user mentions "sidebar," "blog sidebar," "conte1.1Kskills.sh installs
3patternsdev avatarhoc-patternpatternsdev/skillsTeaches the Higher-Order Component (HOC) pattern for logic reuse. Use when you need to share cross-cutting concerns like authentication, logging, or data fetchi1.1Kskills.sh installs
4patternsdev avatarclient-side-renderingpatternsdev/skillsTeaches client-side rendering (CSR) for React applications. Use when building highly interactive apps where SEO is not a priority and the UI is driven by user a1.1Kskills.sh installs
5vtex avatarmarketplace-order-hookvtex/skillsApply when implementing order integration hooks, feeds, or webhook handlers for VTEX marketplace connectors. Covers Feed v3 (pull) vs Hook (push), filter types 1.1Kskills.sh installs
6kostja94 avatarmasonrykostja94/marketing-skillsWhen the user wants to design, optimize, or audit masonry (Pinterest-style) layouts for content display. Also use when the user mentions "masonry layout," "maso1.1Kskills.sh installs