All posts

Posts tagged with: StoreKit 2

4 posts found

A security guard in a dark uniform standing alert on a grey floor, arms at their sides.
StoreKit 2 App Store Server API

StoreKit 2, Part 3: Server-Side Receipt Validation in 2026 (App Store Server API)

Day 17 of the 30-day iOS series, the finale of three on monetization. You can't trust the client — here's the minimal App Store Server API workflow for BrewLog: Server Notifications V2, JWSTransaction decoding, a Cloudflare Worker, and three pure Swift tests that prove the entitlement logic without ever calling Apple.

13 min read
A coir doormat reading 'well, hello there.' on a red brick step in front of a blue door with red trim.
StoreKit 2 Swift

StoreKit 2, Part 2: Free Trials, Win-Back Offers, and Promo Codes That Actually Convert

Day 16 of the 30-day iOS series. I add a 7-day free trial, a win-back banner for lapsed subscribers, and offer-code redemption to BrewLog's paywall — concrete App Store Connect configuration plus the Swift code, all covered by Swift Testing.

17 min read
A heavy brass padlock fastened through the latch of a teal metal door.
StoreKit 2 Swift

A StoreKit 2 Paywall From Scratch: Subscriptions, a Transaction Listener, and a Restore Button That Works

Day 15 of the 30-day iOS series, first of a three-part run on monetization. I built BrewLog's real paywall with StoreKit 2 — two subscription products, a transaction listener, and a restore flow — with zero third-party SDKs. Every number the paywall shows comes from one pure, tested function.

13 min read
Crumpled paper receipts on a dark surface — the analog metaphor for the App Store transactions your app keeps treating as valid long after Apple has refunded them.
StoreKit 2 Subscription Fraud

iOS Refund Abuse Has a TikTok Tutorial Now. Your Client-Side Receipt Check Is the Cashier Who Looks Away.

Subscription refund fraud quietly climbed past 11% on iOS in 2026, fueled by TikTok scripts and a 90-day Apple refund window most indies never reckoned with. Client-side receipt verification can't see any of it — and the gap between StoreKit's ‘.verified' and what your business is actually owed is now too big to ignore.

11 min read