Skip to content

Releases: PerryTS/storekit

v0.1.3

Choose a tag to compare

@proggeramlug proggeramlug released this 08 Jul 12:25

Build on non-Mac hosts — including for iOS

The package no longer requires Swift or macOS to build, for any target:

  • Linux / Windows / Android targets — pure Rust (perry-ffi → dashmap, once_cell). crate-ios now compiles the same stub fallback as crate-stub on non-Apple targets instead of failing at xcrun.
  • iOS / macOS targets from a non-Mac host — the npm tarball ships prebuilt Swift bridge archives (crate-ios/prebuilt/<rust-triple>/libstorekit_bridge.a, built on macOS CI at publish time). When build.rs finds no swiftc, it links the prebuilt bridge, so cargo build --target aarch64-apple-ios works on Linux with only rustup target add aarch64-apple-ios. Perry's Linux builders link the result with ld64.lld + Apple sysroot as usual.
  • Macs with Xcode — unchanged: the bridge compiles from source. Force a path with PERRY_STOREKIT_BRIDGE=source|prebuilt.

CI now includes an ios-from-linux job that builds the iOS device archive on an ubuntu runner and asserts the full FFI + Swift bridge symbol surface.

v0.1.2

Choose a tag to compare

@proggeramlug proggeramlug released this 10 May 18:34

Changes

  • Clarify that Android is served by @perryts/play-billing — the Play Billing binding has shipped as a separate package.
  • Update README platforms table and npm description; drop stale references to issue #537.

No functional or API changes.

v0.1.1 — provenance casing fix

Choose a tag to compare

@proggeramlug proggeramlug released this 07 May 09:06

Fixes npm trusted-publisher provenance verification (0.1.0 failed at npm's signature step because package.json :: repository.url was lowercase perryts/storekit while GitHub's OIDC token reported PerryTS/storekit).

No code changes — same FFI surface, same Swift bridge, same TS types as 0.1.0.

v0.1.0 — initial release

Choose a tag to compare

@proggeramlug proggeramlug released this 07 May 09:05

First release of @perryts/storekit — StoreKit 2 in-app purchase bindings for Perry.

Closes PerryTS/perry#537.

Highlights

  • Built against perry-ffi = "0.5" (declares perry.nativeLibrary.abiVersion: "0.5").
  • Six FFI exports — js_storekit_load_products / purchase / restore / has_subscription / get_jws / start_listener — wired to a Swift bridge over StoreKit 2 (Product.products(for:), Product.purchase(), AppStore.sync(), Transaction.currentEntitlements, Transaction.updates).
  • iOS 16+ and macOS 13+ build the Swift bridge via crate-ios/build.rs. Non-Apple targets fall back to crate-stub so calling code can use the same imports without #ifdef-style platform checks.
  • TypeScript exports the typed Product / PurchaseResult / HasSubscriptionResult / JwsResult / RestoreResult shapes alongside the raw FFI declarations. README has a copy-pasteable typed wrapper layer.

Still open

Google Play Billing for Android is a separate binding (same TS surface, different native side) — out of scope for this release.