Skip to content

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:

json
{
  "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 allowedReason code
A build pinned by CID (source)source
A build that runs on its own play originplay_origin
An engine blockengine
Paid filespaid_files
network (connecting to your own servers)network
A contentRating of nsfwnsfw
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:transaction or wallet: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:

WorksRefused
transaction and sign-typed-data (wallet apps): checked by Chain Daddy, approved in a Chain Daddy windowapi-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 windowtrack

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.