Skip to main content
Track the latest updates to ZeroSettleKit. This changelog covers the iOS Swift SDK — the primary and most feature-complete platform. Android (Kotlin) and Flutter SDKs follow closely and share the same API endpoints. Current version: 1.0.25 Minimum requirements: iOS 17.0+, Swift 5.9+, Xcode 15.0+
Update to the latest version in Xcode: File → Packages → Update to Latest Package Versions, or update your Package.swift dependency.

March 2026

1.0.26
2026-03-22

Batch checkout & trial fields

New batch endpoint and trial metadata fields for the checkout API:
  • POST /v1/iap/payment-intents/batch/ — Create payment intents for up to 25 products in a single request. Reduces checkout latency by sharing Stripe customer/account resolution across products. Products that fail validation return per-product errors without failing the batch.
  • trial_type field on payment intent responses — indicates whether a trial is a standard free_trial or a Switch & Save migration trial.
  • trial_end and pending_amount fields on payment intent responses — Unix timestamp of trial expiry and the deferred charge amount.
These are additive, non-breaking changes. Existing integrations are unaffected.
1.0.25
2026-03-11

PaymentIntent opt-in mode

PaymentIntent and SetupIntent creation is now opt-in during bootstrap. This prevents over-populating your Stripe dashboard with unused intents when using preloaded checkout.Set preloadCheckout: true in your configuration to enable (unchanged behavior for existing integrations).
1.0.22
2026-03-10

Free trial awareness

The SDK now checks trial eligibility per product and exposes it on ZSProduct:
if product.isTrialEligible {
    // Show "Start Free Trial" instead of price
    print("Trial: \(product.freeTrialDuration ?? "7 days")")
}
Trial eligibility is determined server-side based on whether the user has previously used a trial for any product in the same subscription group.
1.0.21
2026-03-08

Faster checkout sheet presentation

Dramatically improved native checkout sheet presentation speed through more aggressive WKWebView preloading. The payment sheet now appears near-instantly when preloadCheckout: true is enabled.
1.0.18
2026-03-08

Switch & Save eligibility fix

Fixed an issue where users with consumable entitlements were incorrectly excluded from Switch & Save migration offers. Eligibility now correctly evaluates only subscription entitlements.
1.0.17
2026-03-05

Scrollable web views

Checkout web views now support scrolling for longer payment forms, improving the experience on smaller devices.
1.0.14
2026-03-04

String interop fix

Fixed string interoperability issues and removed the old Stripe SPI dependency. This is a clean-up release with no API changes.
1.0.13
2026-03-02

Smarter migration matching

Switch & Save now matches the migration offer to the user’s actual StoreKit subscription product, rather than showing a generic offer. This improves conversion by showing the correct discount for the user’s current plan.
1.0.12
2026-03-02

iOS 17 minimum deployment target

Lowered the minimum deployment target from iOS 17.4 to iOS 17.0, expanding device compatibility.

February 2026

1.0.11
2026-02-27

onPresent callback

Added an onPresent callback to the checkoutSheet modifier, letting you know when the payment sheet is actually visible:
.checkoutSheet(item: $product, userId: user.id) {
    // Custom header
} onPresent: {
    // Sheet is now visible — track analytics
    Analytics.track("checkout_presented")
} onComplete: { result in
    // Handle result
}
1.0.10
2026-02-27

Build system flexibility

The framework now lets the build system determine whether to link as static or dynamic, improving compatibility with different project configurations.
1.0.7
2026-02-26

Checkout sheet clipping fix

Fixed an issue where the checkout sheet was visually clipped when presented with a custom header view.
1.0.6
2026-02-25

Nested sheet support

The checkout sheet now works correctly when presented from within another .sheet() modifier. Previously, nested sheets could cause presentation failures.
1.0.5
2026-02-25

Subscription groups

Added subscription group support with mutual exclusion. Products in the same subscription group are now automatically managed — purchasing one cancels the other, matching Apple’s StoreKit behavior for web checkout.

1.0 Release

1.0.2 — 1.0.4
2026-02-24 — 2026-02-25

Initial stable release

The 1.0 release marks the first stable version of ZeroSettleKit with:
  • Embedded payment sheet (checkoutSheet modifier)
  • Safari VC and external Safari checkout modes
  • Apple Pay and card support
  • Product catalog fetching
  • Entitlement management and restoration
  • StoreKit 2 transaction syncing
  • Switch & Save migration flow
  • Universal link handling
  • Delegate callbacks for purchase lifecycle
  • Sandbox/Live mode via API key prefix

Pre-1.0 (Beta)

Versions 0.2.0 through 0.13.0 were beta releases during active development. Key milestones:
VersionMilestone
0.13.0Final beta — feature-complete for 1.0
0.10.0Switch & Save migration flow
0.8.0Native checkout sheet (WKWebView)
0.6.0StoreKit 2 integration
0.4.0Entitlement system
0.2.0Initial beta with Stripe checkout
Pre-1.0 versions are no longer supported. If you’re on a 0.x version, update to the latest 1.x release.