⚠️ Alpha · testnets only. ChainRender is in active alpha and deployed on testnets only — Ethereum Sepolia, the Robinhood Chain Testnet, and the Circle Arc Testnet — not on any mainnet. Contracts, addresses, and APIs may change. Do not use with real funds or production assets.
Concepts

The Apps Directory (Collection Page)

The Apps page (linked from the explorer header) is a browsable directory of runnable ChainRender apps. It exists because some apps \u2014 especially rich-media (games, generative art) \u2014 present far better full-page than as a small component-catalog card, where only their on-chain floor renders.

Two sections

Deployed apps \u2014 read directly from SceneComponentRegistry on-chain. Every rich-media app you deploy registers its scene there, so the page enumerates scenes (count / idAt / bindingOf), decodes each binding (libHash, seed, sketchId) into a full-page viewer URL, and shows it as a card. Self-updating and fully on-chain \u2014 no JSON, no manual step; deploy an app and it appears. Apps whose library is not on-chain (older pre-fix deploys with a zero libHash) are skipped, so only genuinely on-chain apps are listed.

Tools \u2014 a small curated list (webapps/apps-collection.json) of first-party ChainRender utilities: theme tools, ID Sigil, on-chain Cartography, SDF showcases, games. These are ChainRender's own showcases, honestly distinct from user-deployed apps. (This index is off-chain metadata \u2014 a table of contents; the tools themselves are on-chain.)

Why full-page

A component catalog card renders an app's on-chain floor (the poster). For a rich-media app, the floor is what non-GPU clients see, but the interactive experience (the p5/three sketch) wants the whole viewport. The Apps page links each app to its full-page viewer, which loads the sketch from SourceStore + the library from DependencyRegistry and runs it \u2014 the complete experience, not just the floor.

Sharing a deployed app

Every deploy produces a complete, self-contained viewer URL (chainrender-viewer.html?type=richmedia&kind=...&sketch=0x...&lib=0x...). That URL is shareable anywhere \u2014 anyone who opens it gets the full app, loaded from chain. The Apps page reconstructs these URLs from the on-chain scene registry automatically.

The cards use on-chain icons

The Apps page dogfoods the on-chain icon library: each card's icon is fetched from the on-chain icons library and rendered from chain \u2014 the collection of on-chain apps, displayed with on-chain icons.

Honest boundary

The on-chain scene binding stores libHash, seed, and sketchId \u2014 enough to run the app \u2014 but not a title, so cards show a readable id-based name ("3D Scene a1b2c3") rather than a human title. Richer names await a title field in the scene binding (a planned additive enhancement).

Related