---
title: "json-render explained | Snowplow Signals"
description: "json-render is a library from Vercel for generative UI. A model returns a JSON spec that uses only components you shipped, and json-render draws it."
source: https://signals.snowplow.io/learning/generative-ui/json-render-explained
---

[Learning](https://signals.snowplow.io/learning) / [Generative UI](https://signals.snowplow.io/learning/generative-ui) 

# json-render explained

json-render is a library from Vercel for generative UI. You describe a catalog of your own components, a model returns a JSON spec that uses only those components, and json-render draws the result.

## What it is

json-render is a library from Vercel for building generative UI. You give it a catalog of your own components and their props. A model returns a JSON spec that references only those components, and json-render draws the screen from that spec. The model never writes markup, so the page cannot contain anything you did not ship.

## Why it suits generative UI

Because the screen is a JSON value produced from data, anything that produces that value can decide the interface: a rule, a template, or a model reading live state. json-render turns that decision into a rendered screen without a new build, while keeping the output inside a catalog you control.

## What it does not do

json-render draws; it does not decide. Something upstream still has to choose what goes in the spec, and that choice is only as good as the state behind it. On Signals the split is explicit: Signals supplies the state, a model such as Jev chooses, and json-render draws the result.

## Put it to work

* [Generative UI on Signals →](https://signals.snowplow.io/lp/generative-ui)

## See it on your own traffic 

Add the SDK, define one attribute, and see an attribute updating against your own traffic in the first session. The free tier runs on the real engine: no card, no sales call.

[Start free](https://signals.snowplow.io/start) [Talk to an engineer](https://signals.snowplow.io/start?intent=engineer) 

More explainers in the [Learning Center →](https://signals.snowplow.io/learning)
