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.