A machine-readable catalog of every orb, as plain JSON. Tools, scripts and AI assistants can read it to learn what orbs exist and what each one accepts, without scraping the docs.
This is not a shadcn registry. shadcn registries copy component source into your project. These orbs ship inside the
react-native-shader-orbsnpm package and you import them, so there is nothing to install from here. The catalog describes them.
Endpoints#
| URL | What it is |
|---|---|
/r/registry.json |
The catalog: every orb with its parameters, colors and moods. |
/r/orb-01.json |
One orb, including its per-mood parameter presets. Also orb-02 to orb-33. |
/llms.txt |
A short index in the llms.txt format, for AI assistants. |
/llms-full.txt |
All the docs and every orb's parameters, as one text file. |
The shader source (WGSL) is deliberately left out: it's large, and nothing that reads a catalog needs it.
The catalog#
{
"name": "react-native-shader-orbs",
"status": "pre-release",
"install": "npx expo install react-native-shader-orbs react-native-webgpu react-native-reanimated react-native-worklets",
"requirements": ["A development build. Expo Go is not supported (native WebGPU module)."],
"license": {
"library": "MIT",
"shaders": "Non-commercial use only, with attribution to XorDev. Commercial use needs XorDev's permission.",
"author": "XorDev (https://x.com/XorDev)"
},
"orbs": [
{
"slug": "orb-01",
"title": "ORB-01",
"description": "cut-glass orb with a dispersive, turbulent interior",
"export": "orb01",
"docs": "/docs/components/orbs/orb-01/",
"json": "/r/orb-01.json",
"playground": "/playground/?orb=orb-01",
"params": [
{ "key": "speed", "label": "Anim speed", "default": 0.5, "min": 0.015, "max": 10, "step": 0.05, "integrated": true }
],
"colors": [{ "key": "tint", "label": "Tint", "default": "#ffffff" }],
"moods": ["idle", "speaking", "thinking"],
"usage": "import { ShaderOrb, orb01 } from \"react-native-shader-orbs\";\n\n<ShaderOrb orb={orb01} size={280} interactive />"
}
]
}A per-orb file has the same shape plus statePresets (and stateColors, for orbs that define them): the parameter values
each mood eases toward.
Fields#
params: what you can pass throughparams. Values outsideminandmaxare clamped by the component.integratedmarks a phase clock, where the value acts as a rate.colors: what you can pass throughcolors, as hex strings.moods: the valuesstateaccepts for this orb.usage: a minimal, correct snippet.
Absolute URLs#
The links in the files are relative to the site root until the site is given a public address. Set url in
lib/site.ts and every link in the catalog, llms.txt and llms-full.txt becomes absolute.
Using it#
const res = await fetch("/r/registry.json");
const { orbs } = await res.json();
// Which orbs have an "exposure" parameter?
orbs.filter((o) => o.params.some((p) => p.key === "exposure")).map((o) => o.title);The MCP server is built on this same data.