🛡️Safety-first purchase flowAcknowledge native transactions ONLY after the backend confirms validation. No phantom grants if the network drops mid-purchase.
🔌Transport-agnosticHTTP/JSON default. Swap in a custom BackendAdapter for GraphQL, gRPC-web, Firebase, or Supabase without changing call sites.
🧬Generic entitlement typeBring your own TEntitlement. The library validates the base shape; your domain fields ride along through caches, events, and responses.
♻️At-least-once recoveryKilled-mid-purchase transactions persist to local storage and re-verify on next launch. Users never end up paying for nothing.
⚡Reactive eventsSubscribe to entitlements-changed and wire a Pinia or React store in 5 lines. Frozen entitlement objects prevent accidental mutation.
🌐Web-friendlyWeb platform is no-op for purchases (rejects with PLATFORM_NOT_SUPPORTED). Cached entitlement reads still work for dev workflows.