The exact, honest capability matrix for Google Play and Apple App Store — what ships today, what has known limitations, and what's still planned. Grounded in the code, not the roadmap.
Tierux supports both Google Play (Android) and the Apple App Store (iOS / StoreKit 2). Google Play is the primary, most battle-tested path — production-hardened and e2e-verified. Apple App Store support is implemented via a native Swift SDK and a server-side JWS verifier; it works today, but iOS is not yet at full production parity with the Google Play path. Every row below reflects what the code does, not an intention.
| Capability | Google Play | Apple App Store |
|---|---|---|
| Purchase verification (server-side) | Yes — Play Developer API (subscriptionsv2 + one-time) | Yes, with limitations — JWS certificate-chain verification (StoreKit 2) |
| Lifecycle sync | Yes — Real-time Developer Notifications (Pub/Sub) | Yes, with limitations — App Store Server Notifications v2 |
| Plan changes (upgrade / downgrade) | Not implemented — in progress | Not implemented — in progress |
| Sandbox / test-mode verification | Yes — real verify from a license-tester token | Yes — real verify from a pasted StoreKit JWS |
| Agent (MCP) setup | Yes — setup_google_play |
Yes — setup_app_store |
Full detail on every row below. Web checkout (Stripe) isn't in this table — it's a separate, unstarted platform, covered at the end of this page.
Google Play — implemented. Verification calls the Google Play Developer API: purchases.subscriptionsv2 for subscriptions, plus the one-time products endpoint for consumables and non-consumables. This is Tierux's most production-hardened path.
Apple App Store — implemented, with limitations. Tierux decodes and validates the StoreKit 2 JWS transaction with full certificate-chain verification against Apple's root CA. It works end-to-end today, but has received less production hardening than the Google Play path — fewer edge cases covered, less idempotency/ordering logic exercised at scale.
Google Play — Real-time Developer Notifications (RTDN). Implemented and production-hardened. Google Play pushes every subscription lifecycle event — renewals, cancellations, grace period, account hold, recovery, expiry, revocation — over Pub/Sub. JWTs are validated against your configured audience before any entitlement state changes.
Apple App Store — App Store Server Notifications v2. Implemented, with limitations. Notifications are wired at a per-app webhook endpoint; the setup_app_store MCP guide walks you through pointing Apple at it (Production and Sandbox point at the same URL). The resulting TEST handshake and a real DID_RENEW refresh are both verified end-to-end through the real JWS decode path. Still less production-hardened than the RTDN path — fewer ordering guards, less battle-tested at scale.
Google Play — in progress. Moving a subscriber between plans (e.g. monthly → annual) isn't shipped yet.
Apple App Store — not handled today. Apple signals a plan change via a DID_CHANGE_RENEWAL_PREF notification. Tierux's App Store notification processor does not currently act on this notification type — it's treated the same as other informational notifications (price increases, offer redemptions), and no entitlement change is applied.
com.tierux:android-sdk:0.2.0 is live from the self-hosted Maven registry at https://maven-tierux.web.app. The same source is also available as a direct download — no API key needed..package(path: "Tierux")) — there's no remote package-registry listing yet, so point your package manager at the local source, not a hosted dependency.@tierux/react-native, tierux_flutter) live in-repo, but neither is published to a package registry yet. The recommended path today is REST-first: use your existing IAP library and call Tierux's REST API directly (see the React Native and Flutter guides) — or download the wrapper source and vendor it locally: react-native, flutter.The Android Maven host is live. React Native and Flutter wrappers remain source-only.
The onboarding wizard's test-purchase step runs an actual server-side verification against the store, for both platforms — neither path is a mock:
jwsRepresentation JWS) from a Sandbox purchase; Tierux runs the same JWS certificate-chain verification used in production and shows the live entitlement result. A bare numeric transaction ID can only be format-checked — full verification needs the JWS.If verification fails, you see the real error the store returned.
Both stores are configured over MCP, guided by your AI agent:
setup_google_play(packageName, appId) → Creates the GCP service account, enables the Android Publisher API, wires Pub/Sub for RTDN. setup_app_store(bundleId, appId) → Walks Bundle ID / App Apple ID config and the App Store Server Notifications URL.
SDK integration snippets are generated for every supported platform, including native Swift for iOS — the agent no longer dead-ends when it reaches the SDK step. See MCP Setup for the full guide.
Available (early) — server verification + agent setup shipped. Sell subscriptions on the web through your own Stripe account and have them land in the same entitlements as Google Play and the App Store. The verification endpoint, the lifecycle webhook, the setup_stripe_web MCP tool, and the web SDK snippet are live; see the Stripe web store guide. Buyers must be signed-in Firebase users, and v1 supports subscriptions only; one-time purchases are not available yet.
Client SDK integration — Android (Maven), iOS (SPM), and REST-first frameworks.
Connect your AI agent to configure stores and products.
Deep dive on Apple StoreKit 2 JWS verification.
Full integration path from project creation to verified purchase.
Free tier — unlimited apps, 1 paywall. No credit card, no revenue share.
Start free