Registry

CupertinoUI is a shadcn registry: a set of JSON files the shadcn CLI reads to copy components into your project.

Endpoints

Every item is served as JSON with its source code, dependencies and the registry items it builds on:

https://www.cupertino-ui.com/r/registry.json   # the index
https://www.cupertino-ui.com/r/{name}.json     # one item, e.g. button.json

You can install an item straight from its URL, but the namespace below is the recommended way, since items depend on @cupertinoui/macos-theme.

Namespace

components.json
{
  "registries": {
    "@cupertinoui": "https://www.cupertino-ui.com/r/{name}.json"
  }
}
pnpm dlx shadcn@latest add @cupertinoui/combobox

The CLI resolves @cupertinoui/combobox to its JSON, installs its npm dependencies, then installs every registry dependency it lists, such as @cupertinoui/button and @cupertinoui/input-group.

Item types

  • registry:style: macos-theme, the CSS variables and the cn helper.
  • registry:ui: components, installed to components/ui.
  • registry:block: complete windows, installed to components/blocks.

The registry directory lists every item with its install command and JSON.

Building the registry

If you fork CupertinoUI, the items are declared in registry.json at the root of the repository. The shadcn CLI turns it into the files in public/r:

pnpm dlx shadcn@latest build
Set homepage in registry.json and the NEXT_PUBLIC_SITE_URL environment variable to your deployed URL, so the install commands on the site point at your copy.