Apps on other sites
A coin's owner will soon be able to put Chain Daddy apps on the coin's own website, with one script tag. Your app runs there only if you ask for it and it qualifies. This page says what qualifies and what an app can do there.
Ask for it
Add "embed": true to your manifest (schema 1.1.0 or later), then submit a build as usual:
{
"schemaVersion": "1",
"embed": true
}The reviewer and your Builds tab show the verdict for each build: Yes, on any https site, Yes, on the coin's verified sites only, or No, with the reason.
What qualifies
Your app must run in the standard app frame. That means none of these in its manifest:
| Not allowed | Reason code |
|---|---|
A build pinned by CID (source) | source |
| A build that runs on its own play origin | play_origin |
An engine block | engine |
| Paid files | paid_files |
network (connecting to your own servers) | network |
A contentRating of nsfw | nsfw |
type: headless (nothing to show) | no_ui |
Holders only (access.tokenGating) | holders_only |
It may hold only these permissions: wallet:transaction, wallet:sign, clipboard:write, ui:fullscreen and storage:local. Any other permission refuses it with the code permission. A build that is not approved and published yet reads not_live, and one without "embed": true reads not_opted_in. An install its owner limited to a holder group also reads holders_only: an app on another site is shown to everyone, so it is not shown at all.
Paid apps cannot run on other sites yet. An app there cannot sell anything.
Where it runs
- Read-only apps (no
wallet:permission) run on any https site. - Wallet apps (
wallet:transactionorwallet:sign) run only on the coin's verified sites. Each request opens a Chain Daddy window, where the visitor sees the site, your app and the coin, then approves or declines. Chain Daddy checks the request on its servers first, with the same rules as on the coin's page. The site never sees the visitor's wallet or the result.
What works there
An embedded app runs in the same frame and sandbox as on a coin page. Its box is as wide as the site gives it and as tall as its tile on a coin page (its defaultSize), or its display.minHeight if that is more, so draw for that box: content past it scrolls inside the app. Of its actions:
| Works | Refused |
|---|---|
transaction and sign-typed-data (wallet apps): checked by Chain Daddy, approved in a Chain Daddy window | api-call, navigate, quote, iap-purchase, pay, upload-image, upload-media, open-settings |
modal with a title (a dialog), toast, clipboard (with clipboard:write) | A named modal (a coin page's own) |
sign-in and connect-wallet open a Chain Daddy sign-in window | track |
Wallet requests and sign-in on other sites are not open yet: until they are, they are refused too.
A refused action answers { ok: false, error: "This works on the coin's page on Chain Daddy, not on other sites" }. Your app is told signedIn: false until the visitor signs in through that window, and it never sees the site around it, which never sees your app's data either.