Skip to content
wallet-appsPublic

About

Describe your web app once, for every wallet: a chain-agnostic Web App Manifest member (draft)

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Wallet App Manifest

Describe your app once, for every wallet.

Wallets that open web apps each ask for their own file: farcaster.json, tonconnect-manifest.json, a Safe manifest.json, a form on a developer portal. A Wallet App Manifest is one file any wallet can read, whatever chains it supports.

It is the Web App Manifest your site probably already has, plus one member:

{
  "name": "Orb Quest",
  "start_url": "/",
  "icons": [{ "src": "/icon-512.png", "sizes": "512x512", "type": "image/png" }],
  "wallet": {
    "version": "1",
    "chains": { "required": ["eip155:8453"] },
    "capabilities": { "required": ["provider.ethereum"], "optional": ["wallet.ready"] }
  }
}

That is all a wallet needs to show your app under its name and icon, warn users whose wallet lacks Base, and keep a loading screen up until your page calls window.wallet.ready().

Status: Draft, version 1. Comments and implementations welcome.

In short

Where <link rel="manifest"> of your home page, or /.well-known/wallet-app.json
Reused from the W3C name, short_name, icons, start_url, scope, description, background_color, categories, screenshots
Assets icon 1024 × 1024 opaque PNG, banner 1200 × 630, splash 200 × 200, phone screenshots 1284 × 2778 — the Farcaster sizes, so one set of files serves both
Added (wallet) version, subtitle, heroImageUrl, splashImageUrl, chains, capabilities, association, extensions
Chains CAIP-2 ids: eip155:1, bip122:000000000019d6689c085ae165831e93, …
Capabilities an open registry (provider.ethereum, provider.bitcoin, wallet.ready…), <wallet>:<name> for one wallet's own
Domain proof signed by any CAIP-10 account, no platform account, no third party
In the page window.wallet.ready()

Contents

Check a manifest

npm install
node scripts/validate.mjs examples/full.webmanifest orbquest.game
node scripts/validate.mjs https://your.app
npm test

Why another file?

It is not another file: it is the one you have. Wallets reading it agree on one format, so an app built for one wallet works in all of them, and no wallet decides alone what apps must declare. See Motivation and Relationship to other specifications in the spec.

Contributing

Issues and pull requests: see CONTRIBUTING.md. To add your wallet or app, edit IMPLEMENTATIONS.md.

License

The specification, schema, registries and examples are released under CC0 1.0 (public domain). The scripts are under the MIT license.

About

Describe your web app once, for every wallet: a chain-agnostic Web App Manifest member (draft)

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages