Skip to main content
Breaking Changes in v4:
  • presentUpsell() renamed to presentPaywall() with required onPaywallNotShown handler
  • Initialize parameters moved to Helium.identify and Helium.config namespaces
  • Fallback views removed - use fallback bundles only
What’s New:
  • Simplified initialize() - just pass your API key
  • Automatic fallback bundle detection (helium-fallbacks.json)
  • Cleaner namespaced APIs: Helium.identify, Helium.config, Helium.experiments, Helium.entitlements
  • New HeliumPaywall SwiftUI component for embedded paywalls
  • HeliumRevenueCat is now a separate SPM package (CocoaPods unchanged)

Installation Update

Update your version constraint to ~> 4.0:
Update the Dependency Rule in Xcode to allow 4.x versions, or remove and re-add the package with the new version constraint.
RevenueCat users: HeliumRevenueCat is now a separate SPM package. After updating to v4, you may see a build error:
To fix this:
  1. In your target’s Frameworks, Libraries, and Embedded Content, remove the broken HeliumRevenueCat reference
  2. Go to Package Dependencies and add the new package:
  3. Add the HeliumRevenueCat product from the new package to your app’s main target

Initialize Migration

The biggest change in v4 is the simplified initialization. Configuration that was previously passed to initialize() is now set on dedicated namespaces beforehand. v3 (many parameters):
v4 (simplified):
Set identity and configuration values before calling initialize() for best results.
See the quickstart for more details.

presentUpsell to presentPaywall

The method has been renamed and now requires an onPaywallNotShown handler.

Full Example with All Parameters

v4:

API Namespace Migration

Helium.identify

Helium.config

Helium.experiments

Helium.entitlements

Fallback Changes

v4 removes fallback views and simplifies fallback configuration.

What’s Changed

  • No more fallback views - Use fallback bundles exclusively
  • Automatic detection - SDK auto-detects helium-fallbacks.json in your main bundle
  • Optional override - Use Helium.config.customFallbacksURL if needed

Migration

v3:
v4:
Download your fallbacks from the Helium dashboard. See the Fallback Bundle Guide for details.

Embedded Paywall Views

The SwiftUI view for embedding paywalls has been replaced.
See ways to show a paywall for more information.

Removed APIs

The following APIs have been removed in v4:

Quick Migration Checklist

Use this checklist to ensure you’ve covered all migration steps:
  • Update SDK to 4.x (~> 4.0)
  • Move user ID/traits to Helium.identify.* before initialize()
  • Move delegate/config to Helium.config.* before initialize()
  • Replace presentUpsell() with presentPaywall() and add required handler
  • Set up fallback bundle (download from dashboard, add as helium-fallbacks.json)
  • Update experiment calls to Helium.experiments.*
  • Update entitlement calls to Helium.entitlements.*
  • Replace upsellViewForTrigger() with HeliumPaywall component
  • Test paywall presentation and purchases

Need Help?