Treats and Gifting

Treats provide a simple gifting loop: create a token, share it, and let the recipient claim in-app with status and expiry checks.

What this feature does today

  • Treat creation generates a unique token with configurable expiry windows.
  • Claims validate treat status, expiry, and recipient restrictions before success.
  • Pending treats auto-transition to expired status when checked after expiration.
  • Web deep-link pages route recipients into the app claim experience.

Where it is used

Convex treat mutations and web landing routes under `/treat/[id]`.