Profile avatar uploads sound simple — until you build them properly.
Built a production-grade flow:
• Direct browser → Cloudinary uploads (signed)
• Deterministic public IDs per user
• Versioned URLs to fix CDN/browser caching
• Optimistic UI with rollback (React Query)
👇