Design dApp requests around explicit user intent, validated inputs, account scope, and privacy-aware defaults.
Your application can prepare a request, but the Noir Wallet approval window is where the user confirms it. Do not imitate the wallet approval UI or claim a transaction succeeded before the SDK resolves.
Only read data for accounts the origin was authorized to access. Refresh authorization with getAccounts() rather than trusting stale local storage.
Default to shielded funding when it fits the product. If a user chooses transparent funding, explain that the selected UTXOs and transaction details are public.
A legitimate dApp integration never needs a seed phrase, wallet password, private key, or decrypted wallet database.
Do not log wallet request payloads indiscriminately. Memos, addresses, signatures, and account mappings can be sensitive even when they are not private keys.