Skip to content

App ID

appId est un UUID que le portefeuille Drop utilise pour rechercher la configuration propre à chaque dApp à la périphérie. Il contrôle trois éléments :

  1. Les origines parentes autorisées à embarquer le portefeuille. La edge function du portefeuille Drop ajoute un en-tête dynamique Content-Security-Policy: frame-ancestors <your-origins> sur chaque réponse. Une dApp qui essaie d'embarquer le portefeuille dans un iframe depuis une origine non enregistrée est bloquée par le navigateur avant qu'aucun code ne s'exécute.
  2. Les feature flags. Les dApps individuelles peuvent activer ou désactiver des fonctionnalités (chaînes supplémentaires, assets additionnels, etc.) sans affecter les autres intégrations.
  3. La portée de l'analytique. Le stockage, l'analytique et l'état par partenaire sont indexés par appId afin que votre intégration soit proprement isolée.

INFO

appId est optionnel en développement local. Vous pouvez l'omettre ou passer n'importe quel UUID et le portefeuille basculera vers une CSP limitée à localhost. Il devient obligatoire dès lors que vous déployez sur une origine publique.

Enregistrer un App ID

Il n'existe pas de portail en self-service à ce jour — l'enregistrement se fait via une PR contre la base de données partenaires.

  1. Générez un UUID v4 (par exemple uuidgen ou crypto.randomUUID()).

  2. Ouvrez une pull request contre apps/web/shared/partners.ts en ajoutant une entrée pour votre dApp :

    ts
    const PARTNERS: Record<string, AppConfig> = {
      // ... existing entries
      '<your-uuid>': {
        domains: ['your-app.com', '*.your-app.com'],
        assets: { additionalEnabled: [] },
      },
    }
  3. Une fois la PR fusionnée et le portefeuille redéployé, l'entrée est active.

domains

Les chaînes sont comparées à l'origine frame-ancestors rapportée par le navigateur à l'aide de wildcard-match. Vous pouvez lister des noms d'hôte bruts (your-app.com), des wildcards (*.your-app.com) ou des origines complètes avec protocole (https://your-app.com). Lorsque vous passez un nom d'hôte, les variantes http:// et https:// sont toutes deux acceptées.

localhost et 127.0.0.1 sont toujours autorisés indépendamment de domains, ce qui vous permet de développer contre un appId non enregistré ou avec des domains vides sans configuration supplémentaire.

assets.additionalEnabled

Une liste d'identifiants de chaînes supplémentaires à faire apparaître dans l'UI du portefeuille en plus de l'ensemble par défaut. Laissez [] si vous n'avez besoin que des valeurs par défaut.

Utiliser votre App ID

Passez l'UUID en tant qu'appId lors de la création du portefeuille :

tsx
const wallet = createWallet({
  appId: '424306bd-e3ae-40c0-902b-dffb1f18c7cc',
  providers: {
    solana: true,
  },
})

Le SDK le transmet à l'iframe sous la forme ?appId=<uuid> — il n'y a aucun handshake à exécuter à l'exécution.

Que se passe-t-il si l'App ID est incorrect ?

  • UUID inconnu — la edge function revient sur NO_APP_CONFIG, qui n'autorise que localhost et 127.0.0.1. Le portefeuille échouera à se charger sur votre origine de production avec une violation de CSP dans la console du navigateur.
  • Mauvais domaines — identique à ce qui précède : le navigateur bloque l'iframe avant qu'aucun code du portefeuille ne s'exécute.
  • UUID manquant — identique à « UUID inconnu » ci-dessus. Ce comportement est intentionnel, afin qu'oublier l'appId ne puisse pas élargir accidentellement votre liste d'autorisation.