System · In Orbit and Wordly

Shop and Currency

One shop, every game.

Every game here sells something different in its own voice: Sol skins and Glow, a hint jar. Underneath it is the same shop. You list products in one catalog, the wallet keeps every grant and spend in an audit log, StoreKit 2 handles purchases and restore, and the screens draw from your theme, so the shop looks like your game and not like a template.

Get SwiftPieces Games import GameShop

Real captures from the iOS Simulator: one GameShop, worn in 2 different Skins.

You download GameShop once, with plain screens. Skins are their own downloads.

What you get

  • Shop screen, product sheet, purchase and restore states
  • Coins, gems or anything else, with a wallet and an audit log
  • Starter packs, one-time offers with end dates and bundles
  • StoreKit 2 purchases, restore and a server-check hook
  • Every surface reads your game's theme

Screens

  • Shop grid
  • Product sheet
  • Purchase in progress
  • Purchase complete
  • Restore purchases
  • Offer banner with countdown
  • Not enough coins

Underneath

  • A catalog of products in one file
  • Wallets for any number of currencies
  • Packs that grant items and currency together
  • Offers that end on a trusted clock
  • Restore and entitlement checks
  • A fairness flag for pay-to-win items
Usage.swiftSwift 6 · iOS 17.0
import GameShop

let catalog = Catalog {
    ShopItem.coins("coins.small", amount: 500)
    ShopItem.pack("starter", once: true, grants: [.coins(1_000), .item("boost", 3)])
    ShopItem.unlock("plus")
    ShopItem.item("boost", cost: .coins(200), affectsPlay: true)
}
let shop = Shop(catalog: catalog)

ShopScreen(shop)              // drawn from your theme
try await shop.buy("starter")
try await shop.restore()
  • Screens7 screens and sheets
  • Swift857 lines in 6 files
  • Tests13 tests
  • RequiresiOS 17.0, Swift 6

The hard parts, already inside

  • StoreKit 2 with restore
  • Wallet with an audit log
  • Atomic saves
  • Offer times on a trusted clock

The screens are written once and read your game's theme: colours, type, panels, buttons and sounds. Set a Skin, or your own theme, and the whole system changes with it.

Changelog

  1. 0.1.0 · 2026-10-30

    • A catalog of currency packs, starter packs, unlocks and items priced in coins, in one builder.
    • A wallet for any number of currencies, items and unlocks, with an audit log and atomic saves.
    • StoreKit 2 purchases that grant once per verified transaction, restore, and a server-check hook.
    • Offers with end dates on a clock that cannot be wound back, and a flag for items that help in play.
    • Shop screen, product sheet, purchase states, restore, offer banner and "not enough" sheet, drawn from the game's skin.