---
description: Unofficial Capacitor plugin for Superwall SDK to manage in-app subscriptions and paywalls with support for Android and iOS.
title: Capacitor Superwall Plugin for Android & iOS - Capawesome
image: https://capawesome.io/docs/assets/images/social/sdks/capacitor/superwall.png
---

<!doctype html> 

[Skip to content ](#capacitor-superwall-plugin) 

[🖥️ Introducing the **Capacitor Electron Platform** — build desktop apps for macOS, Windows, and Linux. Free & open source. ](/blog/announcing-the-capacitor-electron-platform/) 

* [ SDKs ](/docs/sdks/)
* [ Formbricks ](/docs/sdks/capacitor/formbricks/)
* [ Geocoder ](/docs/sdks/capacitor/geocoder/)
* [ Google Sign-In ](/docs/sdks/capacitor/google-sign-in/)
* [ Grafana Faro ](/docs/sdks/capacitor/grafana-faro/)
* [ Gyroscope ](/docs/sdks/capacitor/gyroscope/)
* [ Haptics ](/docs/sdks/capacitor/haptics/)
* [ Home Indicator ](/docs/sdks/capacitor/home-indicator/)
* [ In-App Browser ](/docs/sdks/capacitor/in-app-browser/)
* [ Install Referrer ](/docs/sdks/capacitor/install-referrer/)
* [ Intercom ](/docs/sdks/capacitor/intercom/)
* [ Intune ](/docs/sdks/capacitor/intune/)
* [ Keep Awake ](/docs/sdks/capacitor/keep-awake/)
* [ libSQL ](/docs/sdks/capacitor/libsql/)
* [ Light Sensor ](/docs/sdks/capacitor/light-sensor/)
* [ Live Update ](/docs/sdks/capacitor/live-update/)
* [ Localization ](/docs/sdks/capacitor/localization/)
* [ Mail Composer ](/docs/sdks/capacitor/mail-composer/)
* [ Managed Configurations ](/docs/sdks/capacitor/managed-configurations/)
* [ Maps Launcher ](/docs/sdks/capacitor/maps-launcher/)
* [ Media Session ](/docs/sdks/capacitor/media-session/)
* [ ML Kit ](/docs/sdks/capacitor/mlkit/)
* [ Navigation Bar ](/docs/sdks/capacitor/navigation-bar/)
* [ Network ](/docs/sdks/capacitor/network/)
* [ NFC ](/docs/sdks/capacitor/nfc/)
* [ Node.js ](/docs/sdks/capacitor/nodejs/)
* [ OAuth ](/docs/sdks/capacitor/oauth/)
* [ Passkeys ](/docs/sdks/capacitor/passkeys/)
* [ Password Autofill ](/docs/sdks/capacitor/password-autofill/)
* [ PDF Generator ](/docs/sdks/capacitor/pdf-generator/)
* [ PDF Viewer ](/docs/sdks/capacitor/pdf-viewer/)
* [ Pedometer ](/docs/sdks/capacitor/pedometer/)
* [ Permissions ](/docs/sdks/capacitor/permissions/)
* [ Phone Dialer ](/docs/sdks/capacitor/phone-dialer/)
* [ Photo Editor ](/docs/sdks/capacitor/photo-editor/)
* [ Photo Manipulator ](/docs/sdks/capacitor/photo-manipulator/)
* [ PixLive ](/docs/sdks/capacitor/pixlive/)
* [ PostHog ](/docs/sdks/capacitor/posthog/)
* [ Printer ](/docs/sdks/capacitor/printer/)
* [ Privacy Screen ](/docs/sdks/capacitor/privacy-screen/)
* [ Proximity Sensor ](/docs/sdks/capacitor/proximity-sensor/)
* [ Purchases ](/docs/sdks/capacitor/purchases/)
* [ RealtimeKit ](/docs/sdks/capacitor/realtimekit/)
* [ Root Detection ](/docs/sdks/capacitor/root-detection/)
* [ Screen Brightness ](/docs/sdks/capacitor/screen-brightness/)
* [ Screen Orientation ](/docs/sdks/capacitor/screen-orientation/)
* [ Screen Reader ](/docs/sdks/capacitor/screen-reader/)
* [ Screenshot ](/docs/sdks/capacitor/screenshot/)
* [ Secure Preferences ](/docs/sdks/capacitor/secure-preferences/)
* [ Settings Launcher ](/docs/sdks/capacitor/settings-launcher/)
* [ Shake ](/docs/sdks/capacitor/shake/)
* [ Silent Mode ](/docs/sdks/capacitor/silent-mode/)
* [ SIM ](/docs/sdks/capacitor/sim/)
* [ SMS Composer ](/docs/sdks/capacitor/sms-composer/)
* [ Speech Recognition ](/docs/sdks/capacitor/speech-recognition/)
* [ Speech Synthesis ](/docs/sdks/capacitor/speech-synthesis/)
* [ Share Target ](/docs/sdks/capacitor/share-target/)
* [ Square Mobile Payments ](/docs/sdks/capacitor/square-mobile-payments/)
* [ SQLite ](/docs/sdks/capacitor/sqlite/)
* Superwall [ Superwall ](/docs/sdks/capacitor/superwall/)
* [ Configuration ](#configuration)
* [ Usage ](#usage)
* [ API ](#api)
* [ Enums ](#enums)
* [ FAQ ](#faq)
* [ Related Plugins ](#related-plugins)
* [ Newsletter ](#newsletter)
* [ Changelog ](#changelog)
* [ License ](#license)
* [ System WebView ](/docs/sdks/capacitor/system-webview/)
* [ Tauri ](/docs/sdks/capacitor/tauri/)
* [ Text Interaction ](/docs/sdks/capacitor/text-interaction/)
* [ Text Zoom ](/docs/sdks/capacitor/text-zoom/)
* [ Thermal State ](/docs/sdks/capacitor/thermal-state/)
* [ Toast ](/docs/sdks/capacitor/toast/)
* [ Torch ](/docs/sdks/capacitor/torch/)
* [ Vault ](/docs/sdks/capacitor/vault/)
* [ Volume ](/docs/sdks/capacitor/volume/)
* [ Wallet ](/docs/sdks/capacitor/wallet/)
* [ Wifi ](/docs/sdks/capacitor/wifi/)
* [ YouTube Player ](/docs/sdks/capacitor/youtube-player/)
* [ Zip ](/docs/sdks/capacitor/zip/)
* [ Cordova ](/docs/sdks/cordova/)
* [ Cloud ](/docs/cloud/)
* [ Integrations ](/docs/cloud/live-updates/integrations/)
* Concepts
* Reference
* [ Troubleshooting ](/docs/cloud/live-updates/troubleshooting/)
* [ FAQ ](/docs/cloud/live-updates/faq/)
* [ Native Builds ](/docs/cloud/native-builds/)
* [ Set Up Environments ](/docs/cloud/native-builds/environments/)
* [ Overwrite Native Configurations ](/docs/cloud/native-builds/native-configurations/)
* [ Auto-Increment Build Numbers ](/docs/cloud/native-builds/auto-incrementing-build-numbers/)
* [ Configure the Web Build Script ](/docs/cloud/native-builds/web-build-script/)
* [ Build from a Monorepo ](/docs/cloud/native-builds/monorepo/)
* [ Use pnpm, Yarn, or bun ](/docs/cloud/native-builds/package-managers/)
* [ Install Private npm Packages ](/docs/cloud/native-builds/npm-private-registry/)
* [ Override the Java Version ](/docs/cloud/native-builds/override-java-version/)
* [ Custom iOS Provisioning Profiles ](/docs/cloud/native-builds/custom-ios-provisioning-profiles/)
* [ Build without Git ](/docs/cloud/native-builds/build-without-git/)
* [ Access Git Behind a Firewall ](/docs/cloud/native-builds/firewall-access/)
* [ Integrations ](/docs/cloud/native-builds/integrations/)
* Reference
* [ Troubleshooting ](/docs/cloud/native-builds/troubleshooting/)
* [ FAQ ](/docs/cloud/native-builds/faq/)
* [ App Store Publishing ](/docs/cloud/app-store-publishing/)
* [ Submit a Build ](/docs/cloud/app-store-publishing/submit-a-build/)
* [ Submit Automatically After a Build ](/docs/cloud/app-store-publishing/submit-automatically/)
* [ Troubleshooting ](/docs/cloud/app-store-publishing/troubleshooting/)
* [ FAQ ](/docs/cloud/app-store-publishing/faq/)
* [ Automations ](/docs/cloud/automations/)
* [ Reference ](/docs/cloud/automations/reference/)
* [ Troubleshooting ](/docs/cloud/automations/troubleshooting/)
* [ FAQ ](/docs/cloud/automations/faq/)
* [ Assist ](/docs/cloud/assist/)
* [ CLI ](/docs/cloud/cli/)
* APIs and SDKs
* [ Webhooks ](/docs/cloud/webhooks/)
* [ Integrations ](/docs/cloud/integrations/)
* Account
* [ Organization ](/docs/cloud/organizations/)
* [ Two-Factor Enforcement ](/docs/cloud/organizations/two-factor-authentication/)
* [ Audit Logs ](/docs/cloud/organizations/audit-logs/)
* [ Billing ](/docs/cloud/organizations/billing/)
* [ License Keys ](/docs/cloud/license-keys/)
* [ AI ](/docs/ai/)
* [ Insiders ](/docs/insiders/)
* [ Billing & Plans ](/docs/insiders/billing-and-plans/)
* [ FAQ ](/docs/insiders/faq/)
* [ License ](https://capawesome.io/legal/eula/)
* [ Support ](/docs/support/)
* [ Contributing ](/docs/contributing/)
* Contributing code
* [ Code of Conduct ](/docs/contributing/code-of-conduct/)
* [ Questions ](https://docs.github.com/en/discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion#creating-a-discussion)
* [ Blog ](/blog/)
* Categories

* [ Configuration ](#configuration)
* [ Usage ](#usage)
* [ API ](#api)
* [ Enums ](#enums)
* [ FAQ ](#faq)
* [ Related Plugins ](#related-plugins)
* [ Newsletter ](#newsletter)
* [ Changelog ](#changelog)
* [ License ](#license)

# Capacitor Superwall Plugin[¶](#capacitor-superwall-plugin "Permanent link")

Unofficial Capacitor plugin for [Superwall SDK](https://superwall.com/).[1](#fn:1)

[ ![Deliver Live Updates to your Capacitor app with Capawesome Cloud](../../../assets/external/cloud.capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.69628c3f.png) ](https://cloud.capawesome.io/) 

## Features[¶](#features "Permanent link")

The Capacitor Superwall plugin brings remotely-configured paywalls and paywall experiments to Capacitor apps. Here are some of the key features:

* 🖥️ **Cross-platform**: Supports Android and iOS.
* 💰 **Paywall Presentation**: Show beautiful, remotely-configured paywalls to drive subscriptions.
* 🎯 **Feature Gating**: Control feature access based on subscription status.
* 📊 **Analytics Events**: Forward Superwall events to your analytics platform.
* 👤 **User Management**: Identify users, set custom attributes, and manage subscription status.
* 🧪 **A/B Testing**: Built-in support for paywall experiments and holdout groups.
* 🔗 **Deep Linking**: Handle deep links for paywall campaigns.
* 🎨 **Customization**: Configure paywall behavior, logging, and appearance.
* 🤝 **Compatibility**: Works alongside the [PostHog](https://capawesome.io/docs/sdks/capacitor/posthog/) and [Purchases](https://capawesome.io/docs/sdks/capacitor/purchases/) plugins.
* 🔁 **Up-to-date**: Always supports the latest Capacitor version.

Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look!

## Use Cases[¶](#use-cases "Permanent link")

The Superwall plugin is typically used to monetize an app with subscriptions, for example:

* **Feature gating**: Register a placement with `register(...)` when the user taps a premium feature and present a paywall if they don't have an active subscription.
* **Paywall experiments**: Run A/B tests and holdout groups for your paywalls, configured remotely on the Superwall dashboard without app updates.
* **Personalized paywalls**: Identify users and set custom attributes to target paywalls with audience filters.
* **Analytics forwarding**: Listen for Superwall events and forward them to your analytics platform.
* **Campaign deep links**: Handle deep links for paywall campaigns configured on the dashboard.

## Compatibility[¶](#compatibility "Permanent link")

| Plugin Version | Capacitor Version | Status         |
| -------------- | ----------------- | -------------- |
| 0.1.x          | \>=8.x.x          | Active support |

## Installation[¶](#installation "Permanent link")

You can use our **AI-Assisted Setup** to install the plugin. Add the [Capawesome Skills](https://github.com/capawesome-team/skills) to your AI tool using the following command:

`[](#%5F%5Fcodelineno-0-1)npx skills add capawesome-team/skills --skill capacitor-plugins
`

Then use the following prompt:

`` [](#%5F%5Fcodelineno-1-1) Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-superwall` plugin in my project.
 ``

If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below:

`[](#%5F%5Fcodelineno-2-1)npm install @capawesome/capacitor-superwall
[](#%5F%5Fcodelineno-2-2)npx cap sync
`

### Android[¶](#android "Permanent link")

#### Variables[¶](#variables "Permanent link")

This plugin will use the following project variables (defined in your app's `variables.gradle` file):

* `$superwallAndroidVersion` version of `com.superwall.sdk:superwall-android` (default: `2.6.6`)

#### Manifest[¶](#manifest "Permanent link")

Add the required activities to your `AndroidManifest.xml` file:

`[](#%5F%5Fcodelineno-3-1)<activity
[](#%5F%5Fcodelineno-3-2)  android:name="com.superwall.sdk.paywall.view.SuperwallPaywallActivity"
[](#%5F%5Fcodelineno-3-3)  android:theme="@style/Theme.MaterialComponents.DayNight.NoActionBar"
[](#%5F%5Fcodelineno-3-4)  android:configChanges="orientation|screenSize|keyboardHidden">
[](#%5F%5Fcodelineno-3-5)</activity>
[](#%5F%5Fcodelineno-3-6)<activity android:name="com.superwall.sdk.debug.DebugViewActivity" />
[](#%5F%5Fcodelineno-3-7)<activity android:name="com.superwall.sdk.debug.localizations.SWLocalizationActivity" />
[](#%5F%5Fcodelineno-3-8)<activity android:name="com.superwall.sdk.debug.SWConsoleActivity" />
`

Set your app's theme in the `android:theme` section of the `SuperwallPaywallActivity`.

## Configuration[¶](#configuration "Permanent link")

No configuration required for this plugin.

## Usage[¶](#usage "Permanent link")

The following examples show how to configure the SDK, present paywalls, identify users, manage subscription status, handle deep links, and listen for events.

### Configure the SDK[¶](#configure-the-sdk "Permanent link")

Configure the Superwall SDK with the API key from your dashboard. This must be called once before all other methods:

`[](#%5F%5Fcodelineno-4-1)import { Superwall } from '@capawesome/capacitor-superwall';
[](#%5F%5Fcodelineno-4-2)
[](#%5F%5Fcodelineno-4-3)const configureSuperwall = async () => {
[](#%5F%5Fcodelineno-4-4)  await Superwall.configure({
[](#%5F%5Fcodelineno-4-5)    apiKey: 'pk_your_api_key_here',
[](#%5F%5Fcodelineno-4-6)    options: {
[](#%5F%5Fcodelineno-4-7)      paywalls: {
[](#%5F%5Fcodelineno-4-8)        shouldPreload: true,
[](#%5F%5Fcodelineno-4-9)        automaticallyDismiss: true,
[](#%5F%5Fcodelineno-4-10)      },
[](#%5F%5Fcodelineno-4-11)      logging: {
[](#%5F%5Fcodelineno-4-12)        level: 'WARN',
[](#%5F%5Fcodelineno-4-13)        scopes: ['ALL'],
[](#%5F%5Fcodelineno-4-14)      },
[](#%5F%5Fcodelineno-4-15)    },
[](#%5F%5Fcodelineno-4-16)  });
[](#%5F%5Fcodelineno-4-17)};
`

### Present a paywall[¶](#present-a-paywall "Permanent link")

Register a placement with `register(...)` to present a paywall if the user doesn't have an active subscription. This is the primary method for feature gating and paywall presentation:

`[](#%5F%5Fcodelineno-5-1)import { Superwall } from '@capawesome/capacitor-superwall';
[](#%5F%5Fcodelineno-5-2)
[](#%5F%5Fcodelineno-5-3)const showPaywall = async () => {
[](#%5F%5Fcodelineno-5-4)  const result = await Superwall.register({
[](#%5F%5Fcodelineno-5-5)    placement: 'premium_feature',
[](#%5F%5Fcodelineno-5-6)    params: {
[](#%5F%5Fcodelineno-5-7)      user_level: 5,
[](#%5F%5Fcodelineno-5-8)      source: 'settings',
[](#%5F%5Fcodelineno-5-9)    },
[](#%5F%5Fcodelineno-5-10)  });
[](#%5F%5Fcodelineno-5-11)
[](#%5F%5Fcodelineno-5-12)  console.log('Paywall result:', result.result); // 'PURCHASED', 'CANCELLED', or 'RESTORED'
[](#%5F%5Fcodelineno-5-13)};
`

### Check whether a paywall would be presented[¶](#check-whether-a-paywall-would-be-presented "Permanent link")

Use `getPresentationResult(...)` to check if a paywall would be presented for a placement without actually presenting it:

`[](#%5F%5Fcodelineno-6-1)import { Superwall } from '@capawesome/capacitor-superwall';
[](#%5F%5Fcodelineno-6-2)
[](#%5F%5Fcodelineno-6-3)const checkPaywall = async () => {
[](#%5F%5Fcodelineno-6-4)  const result = await Superwall.getPresentationResult({
[](#%5F%5Fcodelineno-6-5)    placement: 'premium_feature',
[](#%5F%5Fcodelineno-6-6)  });
[](#%5F%5Fcodelineno-6-7)
[](#%5F%5Fcodelineno-6-8)  if (result.type === 'PAYWALL') {
[](#%5F%5Fcodelineno-6-9)    console.log('Paywall would be shown');
[](#%5F%5Fcodelineno-6-10)  } else if (result.type === 'NO_AUDIENCE_MATCH') {
[](#%5F%5Fcodelineno-6-11)    console.log('User does not match audience, no paywall');
[](#%5F%5Fcodelineno-6-12)  }
[](#%5F%5Fcodelineno-6-13)};
`

### Identify the user[¶](#identify-the-user "Permanent link")

Identify the current user with a unique ID to link it to their anonymous alias for analytics and paywall assignments:

`[](#%5F%5Fcodelineno-7-1)import { Superwall } from '@capawesome/capacitor-superwall';
[](#%5F%5Fcodelineno-7-2)
[](#%5F%5Fcodelineno-7-3)const identifyUser = async (userId: string) => {
[](#%5F%5Fcodelineno-7-4)  await Superwall.identify({
[](#%5F%5Fcodelineno-7-5)    userId: userId,
[](#%5F%5Fcodelineno-7-6)    options: {
[](#%5F%5Fcodelineno-7-7)      restorePaywallAssignments: true,
[](#%5F%5Fcodelineno-7-8)    },
[](#%5F%5Fcodelineno-7-9)  });
[](#%5F%5Fcodelineno-7-10)};
`

### Set user attributes[¶](#set-user-attributes "Permanent link")

Set custom user attributes for personalization and audience filtering on the Superwall dashboard. Keys starting with `$` are reserved for Superwall use:

`[](#%5F%5Fcodelineno-8-1)import { Superwall } from '@capawesome/capacitor-superwall';
[](#%5F%5Fcodelineno-8-2)
[](#%5F%5Fcodelineno-8-3)const setAttributes = async () => {
[](#%5F%5Fcodelineno-8-4)  await Superwall.setUserAttributes({
[](#%5F%5Fcodelineno-8-5)    attributes: {
[](#%5F%5Fcodelineno-8-6)      username: 'john_doe',
[](#%5F%5Fcodelineno-8-7)      subscription_tier: 'free',
[](#%5F%5Fcodelineno-8-8)      total_purchases: 5,
[](#%5F%5Fcodelineno-8-9)    },
[](#%5F%5Fcodelineno-8-10)  });
[](#%5F%5Fcodelineno-8-11)};
`

### Check the subscription status[¶](#check-the-subscription-status "Permanent link")

Read the current subscription status of the user:

`[](#%5F%5Fcodelineno-9-1)import { Superwall } from '@capawesome/capacitor-superwall';
[](#%5F%5Fcodelineno-9-2)
[](#%5F%5Fcodelineno-9-3)const checkSubscription = async () => {
[](#%5F%5Fcodelineno-9-4)  const result = await Superwall.getSubscriptionStatus();
[](#%5F%5Fcodelineno-9-5)  console.log('Subscription status:', result.status); // 'ACTIVE', 'INACTIVE', or 'UNKNOWN'
[](#%5F%5Fcodelineno-9-6)};
`

### Listen for events[¶](#listen-for-events "Permanent link")

Listen for analytics events, subscription status changes, paywall lifecycle events and custom paywall actions:

`[](#%5F%5Fcodelineno-10-1)import { Superwall } from '@capawesome/capacitor-superwall';
[](#%5F%5Fcodelineno-10-2)
[](#%5F%5Fcodelineno-10-3)const addListeners = async () => {
[](#%5F%5Fcodelineno-10-4)  // Forward analytics events to your platform
[](#%5F%5Fcodelineno-10-5)  await Superwall.addListener('superwallEvent', (event) => {
[](#%5F%5Fcodelineno-10-6)    console.log('Superwall event:', event.type, event.data);
[](#%5F%5Fcodelineno-10-7)    // Forward to your analytics: Analytics.track(event.type, event.data);
[](#%5F%5Fcodelineno-10-8)  });
[](#%5F%5Fcodelineno-10-9)
[](#%5F%5Fcodelineno-10-10)  // Track subscription status changes
[](#%5F%5Fcodelineno-10-11)  await Superwall.addListener('subscriptionStatusDidChange', (event) => {
[](#%5F%5Fcodelineno-10-12)    console.log('Subscription status changed to:', event.status);
[](#%5F%5Fcodelineno-10-13)  });
[](#%5F%5Fcodelineno-10-14)
[](#%5F%5Fcodelineno-10-15)  // Handle paywall lifecycle events
[](#%5F%5Fcodelineno-10-16)  await Superwall.addListener('paywallPresented', (event) => {
[](#%5F%5Fcodelineno-10-17)    console.log('Paywall presented:', event.paywallInfo.placement);
[](#%5F%5Fcodelineno-10-18)  });
[](#%5F%5Fcodelineno-10-19)
[](#%5F%5Fcodelineno-10-20)  await Superwall.addListener('paywallDismissed', (event) => {
[](#%5F%5Fcodelineno-10-21)    console.log('Paywall dismissed:', event.paywallInfo.placement);
[](#%5F%5Fcodelineno-10-22)  });
[](#%5F%5Fcodelineno-10-23)
[](#%5F%5Fcodelineno-10-24)  // Handle custom paywall actions
[](#%5F%5Fcodelineno-10-25)  await Superwall.addListener('customPaywallAction', (event) => {
[](#%5F%5Fcodelineno-10-26)    console.log('Custom action:', event.name);
[](#%5F%5Fcodelineno-10-27)    // Handle custom actions like 'help', 'contact', etc.
[](#%5F%5Fcodelineno-10-28)  });
[](#%5F%5Fcodelineno-10-29)};
`

### Handle a campaign deep link[¶](#handle-a-campaign-deep-link "Permanent link")

Process deep links associated with Superwall campaigns configured on the dashboard:

`[](#%5F%5Fcodelineno-11-1)import { Superwall } from '@capawesome/capacitor-superwall';
[](#%5F%5Fcodelineno-11-2)
[](#%5F%5Fcodelineno-11-3)const handleCampaignDeepLink = async (url: string) => {
[](#%5F%5Fcodelineno-11-4)  await Superwall.handleDeepLink({ url });
[](#%5F%5Fcodelineno-11-5)};
`

### Reset the user identity on logout[¶](#reset-the-user-identity-on-logout "Permanent link")

Reset the user identity when the user explicitly logs out:

`[](#%5F%5Fcodelineno-12-1)import { Superwall } from '@capawesome/capacitor-superwall';
[](#%5F%5Fcodelineno-12-2)
[](#%5F%5Fcodelineno-12-3)const logout = async () => {
[](#%5F%5Fcodelineno-12-4)  await Superwall.reset();
[](#%5F%5Fcodelineno-12-5)};
`

## API[¶](#api "Permanent link")

* [configure(...)](#configure)
* [register(...)](#register)
* [getPresentationResult(...)](#getpresentationresult)
* [identify(...)](#identify)
* [reset()](#reset)
* [getUserId()](#getuserid)
* [getIsLoggedIn()](#getisloggedin)
* [setUserAttributes(...)](#setuserattributes)
* [handleDeepLink(...)](#handledeeplink)
* [getSubscriptionStatus()](#getsubscriptionstatus)
* [addListener('superwallEvent', ...)](#addlistenersuperwallevent-)
* [addListener('subscriptionStatusDidChange', ...)](#addlistenersubscriptionstatusdidchange-)
* [addListener('paywallPresented', ...)](#addlistenerpaywallpresented-)
* [addListener('paywallWillDismiss', ...)](#addlistenerpaywallwilldismiss-)
* [addListener('paywallDismissed', ...)](#addlistenerpaywalldismissed-)
* [addListener('customPaywallAction', ...)](#addlistenercustompaywallaction-)
* [removeAllListeners()](#removealllisteners)
* [Interfaces](#interfaces)
* [Enums](#enums)

### configure(...)[¶](#configure "Permanent link")

`[](#%5F%5Fcodelineno-13-1)configure(options: ConfigureOptions) => Promise<void>
`

Configure the Superwall SDK.

This method must be called once before all other methods.

Only available on Android and iOS.

| Param       | Type                                  |
| ----------- | ------------------------------------- |
| **options** | [ConfigureOptions](#configureoptions) |

**Since:** 0.0.1

---

### register(...)[¶](#register "Permanent link")

`[](#%5F%5Fcodelineno-14-1)register(options: RegisterOptions) => Promise<RegisterResult>
`

Register a placement and present a paywall if the user doesn't have an active subscription.

This is the primary method for feature gating and paywall presentation. The feature closure will execute based on the gating mode: - Non-gated: Executes immediately - Gated: Executes after subscription or if already subscribed

Only available on Android and iOS.

| Param       | Type                                |
| ----------- | ----------------------------------- |
| **options** | [RegisterOptions](#registeroptions) |

**Returns:** `Promise<[RegisterResult](#registerresult)>`

**Since:** 0.0.1

---

### getPresentationResult(...)[¶](#getpresentationresult "Permanent link")

`[](#%5F%5Fcodelineno-15-1)getPresentationResult(options: GetPresentationResultOptions) => Promise<GetPresentationResultResult>
`

Check if a paywall would be presented for a placement without actually presenting it.

Useful for determining whether to show a feature or paywall before the user interacts.

Only available on Android and iOS.

| Param       | Type                                                          |
| ----------- | ------------------------------------------------------------- |
| **options** | [GetPresentationResultOptions](#getpresentationresultoptions) |

**Returns:** `Promise<[GetPresentationResultResult](#getpresentationresultresult)>`

**Since:** 0.0.1

---

### identify(...)[¶](#identify "Permanent link")

`[](#%5F%5Fcodelineno-16-1)identify(options: IdentifyOptions) => Promise<void>
`

Identify the current user with a unique ID.

This links the user ID to their anonymous alias for analytics and paywall assignments.

Only available on Android and iOS.

| Param       | Type                                |
| ----------- | ----------------------------------- |
| **options** | [IdentifyOptions](#identifyoptions) |

**Since:** 0.0.1

---

### reset()[¶](#reset "Permanent link")

`[](#%5F%5Fcodelineno-17-1)reset() => Promise<void>
`

Reset the user identity.

This rotates the anonymous user ID, clears local paywall assignments, and requires the SDK to re-download configuration. Should only be called on explicit logout.

Only available on Android and iOS.

**Since:** 0.0.1

---

### getUserId()[¶](#getuserid "Permanent link")

`[](#%5F%5Fcodelineno-18-1)getUserId() => Promise<GetUserIdResult>
`

Get the current user ID.

Returns the identified user ID if set, otherwise returns the anonymous ID.

Only available on Android and iOS.

**Returns:** `Promise<[GetUserIdResult](#getuseridresult)>`

**Since:** 0.0.1

---

### getIsLoggedIn()[¶](#getisloggedin "Permanent link")

`[](#%5F%5Fcodelineno-19-1)getIsLoggedIn() => Promise<GetIsLoggedInResult>
`

Check if the user is logged in (identified).

Only available on Android and iOS.

**Returns:** `Promise<[GetIsLoggedInResult](#getisloggedinresult)>`

**Since:** 0.0.1

---

### setUserAttributes(...)[¶](#setuserattributes "Permanent link")

`[](#%5F%5Fcodelineno-20-1)setUserAttributes(options: SetUserAttributesOptions) => Promise<void>
`

Set custom user attributes for personalization and audience filtering.

Attributes can be used in audience filters on the Superwall dashboard. Keys starting with `$` are reserved for Superwall use. Arrays and nested structures are not supported. Set values to null to remove attributes.

Only available on Android and iOS.

| Param       | Type                                                  |
| ----------- | ----------------------------------------------------- |
| **options** | [SetUserAttributesOptions](#setuserattributesoptions) |

**Since:** 0.0.1

---

### handleDeepLink(...)[¶](#handledeeplink "Permanent link")

`[](#%5F%5Fcodelineno-21-1)handleDeepLink(options: HandleDeepLinkOptions) => Promise<void>
`

Handle a deep link URL for paywall campaigns.

This processes deep links associated with Superwall campaigns configured on the dashboard.

Only available on Android and iOS.

| Param       | Type                                            |
| ----------- | ----------------------------------------------- |
| **options** | [HandleDeepLinkOptions](#handledeeplinkoptions) |

**Since:** 0.0.1

---

### getSubscriptionStatus()[¶](#getsubscriptionstatus "Permanent link")

`[](#%5F%5Fcodelineno-22-1)getSubscriptionStatus() => Promise<GetSubscriptionStatusResult>
`

Get the current subscription status.

Only available on Android and iOS.

**Returns:** `Promise<[GetSubscriptionStatusResult](#getsubscriptionstatusresult)>`

**Since:** 0.0.1

---

### addListener('superwallEvent', ...)[¶](#addlistenersuperwallevent "Permanent link")

`[](#%5F%5Fcodelineno-23-1)addListener(eventName: 'superwallEvent', listenerFunc: (event: SuperwallEventInfo) => void) => Promise<PluginListenerHandle>
`

Add a listener for Superwall analytics events.

These events can be forwarded to your analytics platform.

Only available on Android and iOS.

| Param            | Type                                                       |
| ---------------- | ---------------------------------------------------------- |
| **eventName**    | 'superwallEvent'                                           |
| **listenerFunc** | (event: [SuperwallEventInfo](#superwalleventinfo)) => void |

**Returns:** `Promise<[PluginListenerHandle](#pluginlistenerhandle)>`

**Since:** 0.0.1

---

### addListener('subscriptionStatusDidChange', ...)[¶](#addlistenersubscriptionstatusdidchange "Permanent link")

`[](#%5F%5Fcodelineno-24-1)addListener(eventName: 'subscriptionStatusDidChange', listenerFunc: (event: SubscriptionStatusDidChangeEvent) => void) => Promise<PluginListenerHandle>
`

Add a listener for subscription status changes.

Only available on Android and iOS.

| Param            | Type                                                                                   |
| ---------------- | -------------------------------------------------------------------------------------- |
| **eventName**    | 'subscriptionStatusDidChange'                                                          |
| **listenerFunc** | (event: [SubscriptionStatusDidChangeEvent](#subscriptionstatusdidchangeevent)) => void |

**Returns:** `Promise<[PluginListenerHandle](#pluginlistenerhandle)>`

**Since:** 0.0.1

---

### addListener('paywallPresented', ...)[¶](#addlistenerpaywallpresented "Permanent link")

`[](#%5F%5Fcodelineno-25-1)addListener(eventName: 'paywallPresented', listenerFunc: (event: PaywallPresentedEvent) => void) => Promise<PluginListenerHandle>
`

Add a listener for when a paywall is presented.

Only available on Android and iOS.

| Param            | Type                                                             |
| ---------------- | ---------------------------------------------------------------- |
| **eventName**    | 'paywallPresented'                                               |
| **listenerFunc** | (event: [PaywallPresentedEvent](#paywallpresentedevent)) => void |

**Returns:** `Promise<[PluginListenerHandle](#pluginlistenerhandle)>`

**Since:** 0.0.1

---

### addListener('paywallWillDismiss', ...)[¶](#addlistenerpaywallwilldismiss "Permanent link")

`[](#%5F%5Fcodelineno-26-1)addListener(eventName: 'paywallWillDismiss', listenerFunc: (event: PaywallWillDismissEvent) => void) => Promise<PluginListenerHandle>
`

Add a listener for when a paywall will dismiss.

Only available on Android and iOS.

| Param            | Type                                                                 |
| ---------------- | -------------------------------------------------------------------- |
| **eventName**    | 'paywallWillDismiss'                                                 |
| **listenerFunc** | (event: [PaywallWillDismissEvent](#paywallwilldismissevent)) => void |

**Returns:** `Promise<[PluginListenerHandle](#pluginlistenerhandle)>`

**Since:** 0.0.1

---

### addListener('paywallDismissed', ...)[¶](#addlistenerpaywalldismissed "Permanent link")

`[](#%5F%5Fcodelineno-27-1)addListener(eventName: 'paywallDismissed', listenerFunc: (event: PaywallDismissedEvent) => void) => Promise<PluginListenerHandle>
`

Add a listener for when a paywall is dismissed.

Only available on Android and iOS.

| Param            | Type                                                             |
| ---------------- | ---------------------------------------------------------------- |
| **eventName**    | 'paywallDismissed'                                               |
| **listenerFunc** | (event: [PaywallDismissedEvent](#paywalldismissedevent)) => void |

**Returns:** `Promise<[PluginListenerHandle](#pluginlistenerhandle)>`

**Since:** 0.0.1

---

### addListener('customPaywallAction', ...)[¶](#addlistenercustompaywallaction "Permanent link")

`[](#%5F%5Fcodelineno-28-1)addListener(eventName: 'customPaywallAction', listenerFunc: (event: CustomPaywallActionEvent) => void) => Promise<PluginListenerHandle>
`

Add a listener for custom paywall actions.

Triggered when a user taps an element with the `data-pw-custom` attribute.

Only available on Android and iOS.

| Param            | Type                                                                   |
| ---------------- | ---------------------------------------------------------------------- |
| **eventName**    | 'customPaywallAction'                                                  |
| **listenerFunc** | (event: [CustomPaywallActionEvent](#custompaywallactionevent)) => void |

**Returns:** `Promise<[PluginListenerHandle](#pluginlistenerhandle)>`

**Since:** 0.0.1

---

### removeAllListeners()[¶](#removealllisteners "Permanent link")

`[](#%5F%5Fcodelineno-29-1)removeAllListeners() => Promise<void>
`

Remove all listeners for this plugin.

**Since:** 0.0.1

---

### Interfaces[¶](#interfaces "Permanent link")

#### ConfigureOptions[¶](#configureoptions "Permanent link")

| Prop        | Type                                  | Description                                 | Since |
| ----------- | ------------------------------------- | ------------------------------------------- | ----- |
| **apiKey**  | string                                | The Superwall API key from your dashboard.  | 0.0.1 |
| **options** | [SuperwallOptions](#superwalloptions) | Optional configuration options for the SDK. | 0.0.1 |

#### SuperwallOptions[¶](#superwalloptions "Permanent link")

| Prop                                | Type                                      | Description                                                                          | Default                    | Since |
| ----------------------------------- | ----------------------------------------- | ------------------------------------------------------------------------------------ | -------------------------- | ----- |
| **paywalls**                        | [PaywallOptions](#paywalloptions)         | Paywall presentation and behavior options.                                           |                            | 0.0.1 |
| **logging**                         | [LoggingOptions](#loggingoptions)         | Logging configuration.                                                               |                            | 0.0.1 |
| **networkEnvironment**              | [NetworkEnvironment](#networkenvironment) | Network environment for API requests.                                                | NetworkEnvironment.Release | 0.0.1 |
| **localeIdentifier**                | string                                    | Override the locale identifier for localization.                                     |                            | 0.0.1 |
| **shouldObservePurchases**          | boolean                                   | Observe external Google Play purchases. Only available on Android.                   | true                       | 0.0.1 |
| **isExternalDataCollectionEnabled** | boolean                                   | Enable or disable external data collection for analytics. Only available on Android. | true                       | 0.0.1 |

#### PaywallOptions[¶](#paywalloptions "Permanent link")

| Prop                               | Type    | Description                                           | Default | Since |
| ---------------------------------- | ------- | ----------------------------------------------------- | ------- | ----- |
| **isHapticFeedbackEnabled**        | boolean | Enable haptic feedback on paywall interactions.       | true    | 0.0.1 |
| **shouldShowPurchaseFailureAlert** | boolean | Show an alert when purchase restoration fails.        | true    | 0.0.1 |
| **shouldPreload**                  | boolean | Preload paywalls during SDK initialization.           | true    | 0.0.1 |
| **automaticallyDismiss**           | boolean | Automatically dismiss paywall on purchase or restore. | true    | 0.0.1 |

#### LoggingOptions[¶](#loggingoptions "Permanent link")

| Prop       | Type                  | Description                 | Default          | Since |
| ---------- | --------------------- | --------------------------- | ---------------- | ----- |
| **level**  | [LogLevel](#loglevel) | The log level for SDK logs. | LogLevel.Warn    | 0.0.1 |
| **scopes** | LogScope\[\]          | The log scopes to enable.   | \[LogScope.All\] | 0.0.1 |

#### RegisterResult[¶](#registerresult "Permanent link")

| Prop       | Type                            | Description                             | Since |
| ---------- | ------------------------------- | --------------------------------------- | ----- |
| **result** | [PaywallResult](#paywallresult) | The result of the paywall presentation. | 0.0.1 |

#### RegisterOptions[¶](#registeroptions "Permanent link")

| Prop          | Type                | Description                                                                                      | Since |
| ------------- | ------------------- | ------------------------------------------------------------------------------------------------ | ----- |
| **placement** | string              | The placement identifier configured in the Superwall dashboard.                                  | 0.0.1 |
| **params**    | Record<string, any> | Optional parameters for audience filtering. Keys starting with $ are reserved for Superwall use. | 0.0.1 |

#### GetPresentationResultResult[¶](#getpresentationresultresult "Permanent link")

| Prop           | Type                                              | Description                                                                  | Since |
| -------------- | ------------------------------------------------- | ---------------------------------------------------------------------------- | ----- |
| **type**       | [PresentationResultType](#presentationresulttype) | The type of presentation result.                                             | 0.0.1 |
| **experiment** | [Experiment](#experiment)                         | [Experiment](#experiment) information if the result is a paywall or holdout. | 0.0.1 |

#### Experiment[¶](#experiment "Permanent link")

| Prop        | Type   | Description                               | Since |
| ----------- | ------ | ----------------------------------------- | ----- |
| **id**      | string | The unique identifier for the experiment. | 0.0.1 |
| **variant** | string | The variant assigned to the user.         | 0.0.1 |

#### GetPresentationResultOptions[¶](#getpresentationresultoptions "Permanent link")

| Prop          | Type                | Description                                 | Since |
| ------------- | ------------------- | ------------------------------------------- | ----- |
| **placement** | string              | The placement identifier to check.          | 0.0.1 |
| **params**    | Record<string, any> | Optional parameters for audience filtering. | 0.0.1 |

#### IdentifyOptions[¶](#identifyoptions "Permanent link")

| Prop        | Type                                            | Description                              | Since |
| ----------- | ----------------------------------------------- | ---------------------------------------- | ----- |
| **userId**  | string                                          | The unique user ID to identify the user. | 0.0.1 |
| **options** | [IdentifyOptionsConfig](#identifyoptionsconfig) | Additional options for identification.   | 0.0.1 |

#### IdentifyOptionsConfig[¶](#identifyoptionsconfig "Permanent link")

| Prop                          | Type    | Description                                                                                              | Default | Since |
| ----------------------------- | ------- | -------------------------------------------------------------------------------------------------------- | ------- | ----- |
| **restorePaywallAssignments** | boolean | Restore paywall assignments from the server. Set to true when switching accounts to restore assignments. | false   | 0.0.1 |

#### GetUserIdResult[¶](#getuseridresult "Permanent link")

| Prop       | Type   | Description                                    | Since |
| ---------- | ------ | ---------------------------------------------- | ----- |
| **userId** | string | The current user ID (identified or anonymous). | 0.0.1 |

#### GetIsLoggedInResult[¶](#getisloggedinresult "Permanent link")

| Prop           | Type    | Description                                 | Since |
| -------------- | ------- | ------------------------------------------- | ----- |
| **isLoggedIn** | boolean | Whether the user is logged in (identified). | 0.0.1 |

#### SetUserAttributesOptions[¶](#setuserattributesoptions "Permanent link")

| Prop           | Type                | Description                                                                                                     | Since |
| -------------- | ------------------- | --------------------------------------------------------------------------------------------------------------- | ----- |
| **attributes** | Record<string, any> | User attributes as key-value pairs. Keys starting with $ are reserved. Set values to null to remove attributes. | 0.0.1 |

#### HandleDeepLinkOptions[¶](#handledeeplinkoptions "Permanent link")

| Prop    | Type   | Description                  | Since |
| ------- | ------ | ---------------------------- | ----- |
| **url** | string | The deep link URL to handle. | 0.0.1 |

#### GetSubscriptionStatusResult[¶](#getsubscriptionstatusresult "Permanent link")

| Prop       | Type                                      | Description                      | Since |
| ---------- | ----------------------------------------- | -------------------------------- | ----- |
| **status** | [SubscriptionStatus](#subscriptionstatus) | The current subscription status. | 0.0.1 |

#### PluginListenerHandle[¶](#pluginlistenerhandle "Permanent link")

| Prop       | Type                |
| ---------- | ------------------- |
| **remove** | () => Promise<void> |

#### SuperwallEventInfo[¶](#superwalleventinfo "Permanent link")

| Prop     | Type                                      | Description                               | Since |
| -------- | ----------------------------------------- | ----------------------------------------- | ----- |
| **type** | [SuperwallEventType](#superwalleventtype) | The type of Superwall event.              | 0.0.1 |
| **data** | Record<string, any>                       | Additional event data as key-value pairs. | 0.0.1 |

#### SubscriptionStatusDidChangeEvent[¶](#subscriptionstatusdidchangeevent "Permanent link")

| Prop       | Type                                      | Description                  | Since |
| ---------- | ----------------------------------------- | ---------------------------- | ----- |
| **status** | [SubscriptionStatus](#subscriptionstatus) | The new subscription status. | 0.0.1 |

#### PaywallPresentedEvent[¶](#paywallpresentedevent "Permanent link")

| Prop            | Type                        | Description                              | Since |
| --------------- | --------------------------- | ---------------------------------------- | ----- |
| **paywallInfo** | [PaywallInfo](#paywallinfo) | Information about the presented paywall. | 0.0.1 |

#### PaywallInfo[¶](#paywallinfo "Permanent link")

| Prop           | Type                      | Description                                                                  | Since |
| -------------- | ------------------------- | ---------------------------------------------------------------------------- | ----- |
| **id**         | string                    | The unique identifier for the paywall.                                       | 0.0.1 |
| **placement**  | string                    | The placement identifier.                                                    | 0.0.1 |
| **experiment** | [Experiment](#experiment) | [Experiment](#experiment) information if the paywall is part of an A/B test. | 0.0.1 |
| **data**       | Record<string, any>       | Additional paywall metadata.                                                 | 0.0.1 |

#### PaywallWillDismissEvent[¶](#paywallwilldismissevent "Permanent link")

| Prop            | Type                        | Description                                    | Since |
| --------------- | --------------------------- | ---------------------------------------------- | ----- |
| **paywallInfo** | [PaywallInfo](#paywallinfo) | Information about the paywall being dismissed. | 0.0.1 |

#### PaywallDismissedEvent[¶](#paywalldismissedevent "Permanent link")

| Prop            | Type                        | Description                              | Since |
| --------------- | --------------------------- | ---------------------------------------- | ----- |
| **paywallInfo** | [PaywallInfo](#paywallinfo) | Information about the dismissed paywall. | 0.0.1 |

#### CustomPaywallActionEvent[¶](#custompaywallactionevent "Permanent link")

| Prop     | Type   | Description                    | Since |
| -------- | ------ | ------------------------------ | ----- |
| **name** | string | The name of the custom action. | 0.0.1 |

### Enums[¶](#enums "Permanent link")

#### LogLevel[¶](#loglevel "Permanent link")

| Members   | Value   | Description            | Since |
| --------- | ------- | ---------------------- | ----- |
| **Debug** | 'DEBUG' | Debug level logging.   | 0.0.1 |
| **Info**  | 'INFO'  | Info level logging.    | 0.0.1 |
| **Warn**  | 'WARN'  | Warning level logging. | 0.0.1 |
| **Error** | 'ERROR' | Error level logging.   | 0.0.1 |

#### LogScope[¶](#logscope "Permanent link")

| Members       | Value       | Description                 | Since |
| ------------- | ----------- | --------------------------- | ----- |
| **All**       | 'ALL'       | All log scopes.             | 0.0.1 |
| **Analytics** | 'ANALYTICS' | Analytics related logs.     | 0.0.1 |
| **Config**    | 'CONFIG'    | Configuration related logs. | 0.0.1 |
| **Events**    | 'EVENTS'    | Event tracking logs.        | 0.0.1 |
| **Paywalls**  | 'PAYWALLS'  | Paywall related logs.       | 0.0.1 |
| **Purchases** | 'PURCHASES' | Purchase related logs.      | 0.0.1 |

#### NetworkEnvironment[¶](#networkenvironment "Permanent link")

| Members       | Value       | Description                          | Since |
| ------------- | ----------- | ------------------------------------ | ----- |
| **Release**   | 'RELEASE'   | Production environment.              | 0.0.1 |
| **Developer** | 'DEVELOPER' | Development environment for testing. | 0.0.1 |

#### PaywallResult[¶](#paywallresult "Permanent link")

| Members       | Value       | Description                 | Since |
| ------------- | ----------- | --------------------------- | ----- |
| **Purchased** | 'PURCHASED' | User completed a purchase.  | 0.0.1 |
| **Cancelled** | 'CANCELLED' | User cancelled the paywall. | 0.0.1 |
| **Restored**  | 'RESTORED'  | User restored purchases.    | 0.0.1 |

#### PresentationResultType[¶](#presentationresulttype "Permanent link")

| Members                 | Value                     | Description                             | Since |
| ----------------------- | ------------------------- | --------------------------------------- | ----- |
| **PlacementNotFound**   | 'PLACEMENT\_NOT\_FOUND'   | The placement was not found.            | 0.0.1 |
| **NoAudienceMatch**     | 'NO\_AUDIENCE\_MATCH'     | No audience matched for this placement. | 0.0.1 |
| **Paywall**             | 'PAYWALL'                 | A paywall would be presented.           | 0.0.1 |
| **Holdout**             | 'HOLDOUT'                 | User is in a holdout group.             | 0.0.1 |
| **PaywallNotAvailable** | 'PAYWALL\_NOT\_AVAILABLE' | Paywall is not available.               | 0.0.1 |

#### SubscriptionStatus[¶](#subscriptionstatus "Permanent link")

| Members      | Value      | Description                                | Since |
| ------------ | ---------- | ------------------------------------------ | ----- |
| **Unknown**  | 'UNKNOWN'  | Subscription status is unknown.            | 0.0.1 |
| **Active**   | 'ACTIVE'   | User has an active subscription.           | 0.0.1 |
| **Inactive** | 'INACTIVE' | User does not have an active subscription. | 0.0.1 |

#### SuperwallEventType[¶](#superwalleventtype "Permanent link")

| Members                         | Value                               | Description                  | Since |
| ------------------------------- | ----------------------------------- | ---------------------------- | ----- |
| **FirstSeen**                   | 'FIRST\_SEEN'                       | First time user is seen.     | 0.0.1 |
| **AppOpen**                     | 'APP\_OPEN'                         | App was opened.              | 0.0.1 |
| **AppLaunch**                   | 'APP\_LAUNCH'                       | App was launched.            | 0.0.1 |
| **AppClose**                    | 'APP\_CLOSE'                        | App was closed.              | 0.0.1 |
| **SessionStart**                | 'SESSION\_START'                    | Session started.             | 0.0.1 |
| **DeepLink**                    | 'DEEP\_LINK'                        | Deep link was opened.        | 0.0.1 |
| **TriggerFire**                 | 'TRIGGER\_FIRE'                     | Trigger was fired.           | 0.0.1 |
| **PaywallOpen**                 | 'PAYWALL\_OPEN'                     | Paywall was opened.          | 0.0.1 |
| **PaywallClose**                | 'PAYWALL\_CLOSE'                    | Paywall was closed.          | 0.0.1 |
| **PaywallDecline**              | 'PAYWALL\_DECLINE'                  | Paywall was declined.        | 0.0.1 |
| **TransactionStart**            | 'TRANSACTION\_START'                | Transaction started.         | 0.0.1 |
| **TransactionComplete**         | 'TRANSACTION\_COMPLETE'             | Transaction completed.       | 0.0.1 |
| **TransactionFail**             | 'TRANSACTION\_FAIL'                 | Transaction failed.          | 0.0.1 |
| **TransactionAbandon**          | 'TRANSACTION\_ABANDON'              | Transaction was abandoned.   | 0.0.1 |
| **TransactionRestore**          | 'TRANSACTION\_RESTORE'              | Transaction restore.         | 0.0.1 |
| **TransactionTimeout**          | 'TRANSACTION\_TIMEOUT'              | Transaction timeout.         | 0.0.1 |
| **SubscriptionStart**           | 'SUBSCRIPTION\_START'               | Subscription started.        | 0.0.1 |
| **FreeTrialStart**              | 'FREE\_TRIAL\_START'                | Free trial started.          | 0.0.1 |
| **SubscriptionStatusDidChange** | 'SUBSCRIPTION\_STATUS\_DID\_CHANGE' | Subscription status changed. | 0.0.1 |

## FAQ[¶](#faq "Permanent link")

### Which platforms are supported by this plugin?[¶](#which-platforms-are-supported-by-this-plugin "Permanent link")

The plugin supports Android and iOS. There is no Web implementation, since the Superwall SDK targets native mobile apps.

### Do I need to call `configure` before using other methods?[¶](#do-i-need-to-call-configure-before-using-other-methods "Permanent link")

Yes, `configure(...)` must be called once with the Superwall API key from your dashboard before all other methods. You can optionally pass configuration options for paywall behavior, logging, and the network environment.

### What is the difference between `register` and `getPresentationResult`?[¶](#what-is-the-difference-between-register-and-getpresentationresult "Permanent link")

The `register(...)` method registers a placement and actually presents a paywall if the user doesn't have an active subscription. The `getPresentationResult(...)` method only checks whether a paywall would be presented for a placement without presenting it, which is useful for deciding whether to show a feature or a paywall before the user interacts.

### When should I call `reset`?[¶](#when-should-i-call-reset "Permanent link")

Call `reset()` only on explicit logout. It rotates the anonymous user ID, clears local paywall assignments, and requires the SDK to re-download its configuration. To identify a new user afterwards, use `identify(...)`.

### How do I forward Superwall events to my analytics platform?[¶](#how-do-i-forward-superwall-events-to-my-analytics-platform "Permanent link")

Add a listener for the `superwallEvent` event. It emits Superwall analytics events such as paywall opens, transactions, and subscription starts, together with additional event data that you can pass to your analytics platform. See [Listen for events](#listen-for-events) above for an example.

### Is this an official Superwall plugin?[¶](#is-this-an-official-superwall-plugin "Permanent link")

No, this is an unofficial Capacitor plugin for the Superwall SDK maintained by Capawesome. It is not affiliated with, endorsed by, or sponsored by the makers of Superwall.

### Can I use this plugin with Ionic, React, Vue or Angular?[¶](#can-i-use-this-plugin-with-ionic-react-vue-or-angular "Permanent link")

Yes, the plugin is framework-agnostic. It works in any Capacitor app regardless of the web framework, including Ionic with Angular, React, or Vue, as well as plain JavaScript projects.

## Related Plugins[¶](#related-plugins "Permanent link")

* [App Review](https://capawesome.io/docs/sdks/capacitor/app-review/): Let users submit app store reviews and ratings.
* [PostHog](https://capawesome.io/docs/sdks/capacitor/posthog/): Track events and analyze user behavior with PostHog.
* [Purchases](https://capawesome.io/docs/sdks/capacitor/purchases/): Support in-app purchases in your Capacitor app.

## Newsletter[¶](#newsletter "Permanent link")

Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/).

## Changelog[¶](#changelog "Permanent link")

See [CHANGELOG.md](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/superwall/CHANGELOG.md).

## License[¶](#license "Permanent link")

See [LICENSE](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/superwall/LICENSE).

---

1. This project is not affiliated with, endorsed by, sponsored by, or approved by Nest 22, Inc. or any of their affiliates or subsidiaries. [↩](#fnref:1 "Jump back to footnote 1 in the text")

July 8, 2026 

Back to top

```json
{"@context": "https://schema.org", "@graph": [{"@type": "TechArticle", "@id": "https://capawesome.io/docs/sdks/capacitor/superwall/#article", "headline": "Capacitor Superwall Plugin for Android & iOS", "name": "Capacitor Superwall Plugin for Android & iOS", "description": "Unofficial Capacitor plugin for Superwall SDK to manage in-app subscriptions and paywalls with support for Android and iOS.", "inLanguage": "en", "url": "https://capawesome.io/docs/sdks/capacitor/superwall/", "mainEntityOfPage": "https://capawesome.io/docs/sdks/capacitor/superwall/", "author": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "publisher": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "about": {"@id": "https://capawesome.io/docs/sdks/capacitor/superwall/#software"}}, {"@type": "SoftwareSourceCode", "@id": "https://capawesome.io/docs/sdks/capacitor/superwall/#software", "name": "Capacitor Superwall Plugin for Android & iOS", "description": "Unofficial Capacitor plugin for Superwall SDK to manage in-app subscriptions and paywalls with support for Android and iOS.", "url": "https://capawesome.io/docs/sdks/capacitor/superwall/", "programmingLanguage": "TypeScript", "runtimePlatform": "Capacitor", "codeRepository": "https://github.com/capawesome-team", "author": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "publisher": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}}]}
{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "Which platforms are supported by this plugin?", "acceptedAnswer": {"@type": "Answer", "text": "The plugin supports Android and iOS. There is no Web implementation, since the Superwall SDK targets native mobile apps."}}, {"@type": "Question", "name": "Do I need to call configure before using other methods?", "acceptedAnswer": {"@type": "Answer", "text": "Yes, configure(...) must be called once with the Superwall API key from your dashboard before all other methods. You can optionally pass configuration options for paywall behavior, logging, and the network environment."}}, {"@type": "Question", "name": "What is the difference between register and getPresentationResult?", "acceptedAnswer": {"@type": "Answer", "text": "The register(...) method registers a placement and actually presents a paywall if the user doesn't have an active subscription. The getPresentationResult(...) method only checks whether a paywall would be presented for a placement without presenting it, which is useful for deciding whether to show a feature or a paywall before the user interacts."}}, {"@type": "Question", "name": "When should I call reset?", "acceptedAnswer": {"@type": "Answer", "text": "Call reset() only on explicit logout. It rotates the anonymous user ID, clears local paywall assignments, and requires the SDK to re-download its configuration. To identify a new user afterwards, use identify(...)."}}, {"@type": "Question", "name": "How do I forward Superwall events to my analytics platform?", "acceptedAnswer": {"@type": "Answer", "text": "Add a listener for the superwallEvent event. It emits Superwall analytics events such as paywall opens, transactions, and subscription starts, together with additional event data that you can pass to your analytics platform. See Listen for events above for an example."}}, {"@type": "Question", "name": "Is this an official Superwall plugin?", "acceptedAnswer": {"@type": "Answer", "text": "No, this is an unofficial Capacitor plugin for the Superwall SDK maintained by Capawesome. It is not affiliated with, endorsed by, or sponsored by the makers of Superwall."}}, {"@type": "Question", "name": "Can I use this plugin with Ionic, React, Vue or Angular?", "acceptedAnswer": {"@type": "Answer", "text": "Yes, the plugin is framework-agnostic. It works in any Capacitor app regardless of the web framework, including Ionic with Angular, React, or Vue, as well as plain JavaScript projects."}}], "url": "https://capawesome.io/docs/sdks/capacitor/superwall/"}
```
