Swiftpack.co - russell-archer/StoreHelper as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by russell-archer.
russell-archer/StoreHelper v2.4
Implementing In-App Purchases with StoreKit2 in Xcode 14 using SwiftUI, Swift 5.7, iOS 16 and macOS 13.
⭐️ 281
🕓 4 weeks ago
iOS macOS
.package(url: "https://github.com/russell-archer/StoreHelper.git", from: "v2.4")


Recent Major Changes

  • 12 February, 2023
    • Made the configuration of subscription products more flexible
    • You can now either rely on a naming convention (as before) or use a "Subscriptions" section in "Products.plist"
    • See the Samples/Configuration/SampleProducts.plist file for details
    • Added unit tests to StoreHelperDemo project
  • 27 January, 2023
    • Fixed a bug related to isPurchased for consumable products. Caused a crash on macOS and iOS (thank you Abdullah Kardaş!)
  • 18 January, 2023
    • Additional logging of various activities added
  • 17 January, 2023
    • Improved support for handling extended wait times for StoreKit and App Store responses
    • Improved caching of purchasing status
    • Updates to many shared views to handle unknown purchases status
  • 10 January, 2023
    • Added support for caching of product purchase status in isPurchased(productId:) using the purchasedProductsFallback collection
    • Using purchasedProductsFallback as a cache can be turned on/off using StoreHelper.doUsePurchasedProductsFallbackCache
    • The purchasedProductsFallback property is now public private(set) rather than public
    • Added "Refresh Products" button and support for pull-to-refresh to the products list
    • UI improvements to various views and improved sharing of views between iOS and macOS
    • Minor documentation updates (StoreHelper Guide)
  • 13 December, 2022
    • Added proof-of-concept demo showing StoreHelper in a UIKit project
  • 27 November, 2022
    • Major update to the way subscriptions are handled
    • Subscription prices now show prices and renewal periods
    • Promotional and Introductory offers on subscriptions are now supported
    • The most appropriate promotional or introductory offers or standard price and renewal period are automatically displayed
    • Additions to StoreHelper.SubscriptionHelper: hasLowerValueCurrentSubscription(than:), isLapsedSubscriber(to:), allSubscriptionTransactions()
    • Added in-app redemption of offer codes
    • Added new sections to the Guide on "Subscription Introductory and Promotional Offers" and "Supporting In-App Offer Code Redemption"
    • Quick Start and Guide documentation reviewed and updated for iOS16/macOS13/Xcode14 and new subscription features
  • 7 Nov, 2022
    • Minor changes re upgrade to iOS 16 and macOS 13
  • 19 October, 2022
    • Added new section to the Guide on "Restoring Previous Purchases"
  • 15 March, 2022
    • Changed the initialization flow because of a new warning in Xcode 13.3 related to having @MainActor init()
    • Removed the need for StoreHelper's init method to run on the main thread by moving some initialization code to a new start() method
    • You should now call StoreHelper.start() as soon as possible after initializing StoreHelper
    • The start() method starts listening for transactions and get localized product info from the App Store
    • Updated all documentation because of this change
  • 25 January, 2022
    • Refactored StoreHelper as a SPM Package
    • Moved example app to separate repo (StoreHelperDemo)
    • Updated documentation re change to SPM package
  • 19 January, 2022
    • Major updates to documentation
    • Added Mac target
  • 21 December, 2021
    • Updated documentation to reflect refactoring changes
  • 20 December, 2021
    • Refactored throughout so that this non-private version of StoreHelper is in-sync with private StoreHelper code used in an app released to the App Store

Overview of StoreHelper

StoreHelper is a Swift Package Manager (SPM) package that enables developers using Xcode 14/13 to easily add in-app purchase support to iOS 16/15 and macOS 13/12 SwiftUI apps.

StoreHelper is used to provide in-app purchase support in Writerly (iOS/macOS), which is available on the App Store.

StoreHelper provides the following features:

  • Multi-platform (iOS, macOS) SwiftUI support for purchasing Consumable, Non-consumable and Subscription products
  • Detailed documentation and an example project
  • Supports transaction validation, pending ("ask to buy") transactions, cancelled and failed transactions
  • Supports customer refunds and management of subscriptions
  • Supports introdctory offers, in-app redeeming of offer codes and experimental support for promotional offers
  • Provides detailed transaction information and history for non-consumables and subscriptions
  • Support for direct App Store purchases of promoted in-app purchases


MIT license, copyright (c) 2022, 2023 Russell Archer. This software is provided "as-is" without warranty and may be freely used, copied, modified and redistributed, including as part of commercial software.

See License for details.


StoreHelper uses Apple's StoreKit2, which requires iOS 16/15, macOS 13/12 and Xcode 14/13.

Getting Started

Jump to the Quick Start guide.


Stars: 281
Last commit: 4 weeks ago
jonrohan Something's broken? Yell at me @ptrpavlik. Praise and feedback (and money) is also welcome.

Release Notes

Version 2.4
4 weeks ago

What's Changed

New Contributors

Full Changelog: https://github.com/russell-archer/StoreHelper/compare/v2.3...v2.4

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics