TIPTIP
Guides

Editing a profile

Which fields are a simple API call, which need a transaction, and which you cannot edit at all.

A tag's fields fall into three groups, each with a different editing path.

Off-chain, editable via the API

displayName, avatar, bio, and preferredToken live in the mirror, not on-chain. updateProfile() patches them directly, no transaction and no signature beyond the already-connected session:

await client.updateProfile("daniel", {
  displayName: "Daniel",
  bio: "Building on Solana",
});

Omit a key to leave it unchanged; pass null explicitly to clear it. Only fields you include in the call are touched.

On-chain, needs a transaction

wallet (where payments go) lives on-chain and can only change through a signed transaction. updateWallet() returns an unsigned transaction, the same shape register() does, for the connected wallet to sign and submit:

const unsigned = await client.updateWallet("daniel", newWalletAddress);

Protocol-controlled, not editable

tag and owner never change through a profile edit at all (see Ownership for what each one controls). verified and merchant are moderation flags with no client-facing write path in this stage: they are not part of updateProfile()'s accepted fields, so no signature or session, however well-formed, can set them.

On this page