Skip to content

Registry

The public shadcn registry: what /r/registry.json and /r/<name>.json contain, and why Pro items are absent.

Forme publishes a shadcn-compatible registry. It is the same format shadcn uses, served as plain JSON over HTTP, which is what lets npx shadcn add and the Forme CLI share one code path.

The endpoints#

URLReturns
/r/registry.jsonThe index: every Free item, without source.
/r/<name>.jsonOne installable item, with the full source of its files.
/llms.txtEvery item as plain text, with the command that installs it.

An item#

json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "button",
  "type": "registry:ui",
  "title": "Button",
  "description": "The primary action element...",
  "author": "Forme UI",
  "categories": ["buttons"],
  "dependencies": ["@radix-ui/react-slot", "clsx", "tailwind-merge"],
  "registryDependencies": ["https://formeui.com/r/forme-foundation.json"],
  "files": [
    {
      "path": "packages/ui/components/button/button.tsx",
      "type": "registry:component",
      "target": "@components/forme/button/button.tsx",
      "content": "..."
    }
  ]
}

target is resolved against the components alias in your components.json, so src/ layouts, custom aliases, package imports and monorepo packages all work without Forme knowing anything about your project.

registryDependencies are full URLs rather than bare names, because that is the only form every shadcn version resolves the same way.

Pro items are not here#

Pro source is private, so it is not in the public registry, not in the index, and not answerable by URL. A Pro item is served by the authenticated registry after npx forme login, and this site shows a screenshot of it rather than running it.

This is not a policy about being difficult. It is the whole product: if Pro source were fetchable, it would be copied. The site is built so that it cannot import Pro code, because anything a page imports ends up in the JavaScript the browser downloads.

Using the registry yourself#

It is plain HTTP. Fetch it, diff it, or point your own tooling at it:

bash
curl https://formeui.com/r/button.json
curl https://formeui.com/llms.txt