Chapter 11

Integrating Storage in dApps

Users judge your dApp by upload speed and image load time, not by whether you use IPFS. A clunky flow — wallet sign, then browser hang, then broken thumbnail — loses creators even if the architecture is principled.

Never hard-code a single public gateway. Run your own, use a provider subdomain, or resolve through multiple endpoints with timeout fallback. ipfs.io is a convenience, not an SLA. Rate limits during viral mints are predictable.

Server-side signing keys for uploads belong in environment secrets, not client bundles. For user-owned content, consider wallet-signed uploads through delegated pinning or direct Kubo RPC over VPN. Log CIDs in your database even when the chain is the source of truth — support teams need a fast lookup when a collector reports a blank image.