Guide: Deploying an App
Once you've built, graded, and styled your app locally (see Build, Grade & Style Before You Deploy), deploying is registering your app's bytes on-chain — a one-time cost, after which anyone renders it for free forever.
The steps
- Compile your composition to get its bytes and hash.
- Register the bytes to the
ComponentRegistry(one transaction). The hash is now a live, renderable app. - (Optional) Name it — register a subname (
myapp.chainrender.eth) so it's resolvable by name. See ENS Names & Integration. - (Optional) Seed a theme — if you tuned a custom theme, seed its CSS on-chain and point your app at it.
- Verify — render the deployed hash against multiple RPCs and confirm byte-identical output. See Contracts → Verifying.
What you pay for
- Registering bytes: gas, once, proportional to app size (stored via SSTORE2 — cheap and permanent).
- Rendering: nothing, ever. It's a
viewcall. - Naming: a refundable stake (spam cost, not a fee).
- Theme changes: nothing at render time; a one-time seed only if you commit a new default theme.
Multichain
Because rendering is deterministic and content-addressed, the same app has the same hash and output on any EVM chain. To deploy across chains, register the same bytes on each; a chain-id-aware viewer resolves the right deployment. (Portability, not bridging — each chain holds its own immutable copy.)
Updating later
You don't mutate a deployed app — you publish a new version through the versioned-name registry (timelocked, observable). See Update a Deployed App.