Skip to content
Skip to content
Goodspeed

Connect RevenueCat to your Goodspeed app

In-app purchase and subscription management for iOS and Android: offerings, paywalls, and restore all wired at generation time. Goodspeed wires RevenueCat into every app that needs it at generation time, so you start with a working integration, not a blank config and a documentation tab.

WHAT GETS WIRED IN

Built into every RevenueCat build

Every app Goodspeed generates with RevenueCat includes these wired integrations from the first build. No manual setup required.

ItemDescriptionStrength
Purchases.configure() called on app init with platform-correct iOS/Android API keys from gasConfig.backend.revenuecatPurchases.configure() called on app init with platform-correct iOS/Android API keys from gasConfig.backend.revenuecat01
identifyRevenueCatUser() called alongside PostHog identify on every login and signup eventidentifyRevenueCatUser() called alongside PostHog identify on every login and signup event02
getOfferings() with a 5-minute TTL cache to avoid redundant network calls on paywall opensgetOfferings() with a 5-minute TTL cache to avoid redundant network calls on paywall opens03
purchasePackage() and purchaseProduct() with full error surface for paywall UI componentspurchasePackage() and purchaseProduct() with full error surface for paywall UI components04
restorePurchases() for post-reinstall and device-switch flows, accessible from settingsrestorePurchases() for post-reinstall and device-switch flows, accessible from settings05
getCustomerInfo() for live entitlement checks throughout the app so premium gates are always currentgetCustomerInfo() for live entitlement checks throughout the app so premium gates are always current06

Source: gas-template repository · payments/subscriptions

REAL GENERATED CODE

A snippet from a RevenueCat integration the pipeline ships

This pattern comes directly from the gas-template codebase. The studio generates RevenueCat integration code like this for every app that includes it, not a placeholder you have to fill in yourself.

  1. Conditional IAP init

    // lib/revenuecat.ts
    export async function initRevenueCat(): Promise<void> {
      if (isWeb || !Purchases) return;
      if (!gasConfig.features.inAppPurchases.enabled) return;
      const apiKey = Platform.OS === 'ios'
        ? gasConfig.backend.revenuecat.iosKey
        : gasConfig.backend.revenuecat.androidKey;
      if (!apiKey) return;
      await Purchases.configure({ apiKey });
    }
GDaily Allergens

Today's log

Gluten
Tree nuts
Shellfish
Dairy
HomeScanLogProfile

START WITH REVENUECAT

Your RevenueCat integration, generated