# SuperwallOptions

Options for configuring the Superwall SDK.

> **Warning**

**Deprecated SDK**We strongly recommend migrating to the new [Superwall Expo SDK](/docs/expo), see our [migration guide](/docs/expo/guides/migrating-react-native) for details.



Purpose [#purpose]

Options for configuring the Superwall SDK. Use this to customize the appearance and behavior of paywalls, logging, and other SDK features.

Signature [#signature]

```typescript
export class SuperwallOptions {
  paywalls: PaywallOptions = new PaywallOptions()
  networkEnvironment: NetworkEnvironment = NetworkEnvironment.Release
  isExternalDataCollectionEnabled = true
  localeIdentifier?: string
  isGameControllerEnabled = false
  logging: LoggingOptions = new LoggingOptions()
  collectAdServicesAttribution = false
  passIdentifiersToPlayStore = false
  storeKitVersion?: "STOREKIT1" | "STOREKIT2"
  enableExperimentalDeviceVariables = false
}
```

Properties [#properties]

<TypeTable
  type="{
  paywalls: {
    type: &#x22;PaywallOptions&#x22;,
    typeDescriptionLink: &#x22;/react-native/sdk-reference/PaywallOptions&#x22;,
    description: &#x22;Options for configuring paywall appearance and behavior.&#x22;,
    required: true,
  },
  networkEnvironment: {
    type: &#x22;NetworkEnvironment&#x22;,
    description: &#x22;The network environment to use. Options: `Release`, `ReleaseCandidate`, `Developer`.&#x22;,
    default: &#x22;Release&#x22;,
  },
  isExternalDataCollectionEnabled: {
    type: &#x22;boolean&#x22;,
    description: &#x22;Whether external data collection is enabled.&#x22;,
    default: &#x22;true&#x22;,
  },
  localeIdentifier: {
    type: &#x22;string?&#x22;,
    description: &#x22;The locale identifier to use. If not set, the system locale is used.&#x22;,
  },
  isGameControllerEnabled: {
    type: &#x22;boolean&#x22;,
    description: &#x22;Whether game controller support is enabled.&#x22;,
    default: &#x22;false&#x22;,
  },
  logging: {
    type: &#x22;LoggingOptions&#x22;,
    description: &#x22;Options for configuring logging behavior. **Must be an instance of `LoggingOptions` so `toJson()` is available.**&#x22;,
    required: true,
  },
  collectAdServicesAttribution: {
    type: &#x22;boolean&#x22;,
    description: &#x22;Whether to collect AdServices attribution data.&#x22;,
    default: &#x22;false&#x22;,
  },
  passIdentifiersToPlayStore: {
    type: &#x22;boolean&#x22;,
    description: &#x22;Whether to pass identifiers to Play Store.&#x22;,
    default: &#x22;false&#x22;,
  },
  storeKitVersion: {
    type: &#x22;\&#x22;STOREKIT1\&#x22; | \&#x22;STOREKIT2\&#x22;?&#x22;,
    description: &#x22;The StoreKit version to use (iOS only).&#x22;,
    default: &#x22;`undefined` (auto-detect)&#x22;,
  },
  enableExperimentalDeviceVariables: {
    type: &#x22;boolean&#x22;,
    description: &#x22;Whether to enable experimental device variables.&#x22;,
    default: &#x22;false&#x22;,
  },
}"
/>

Usage [#usage]

Create options when configuring the SDK:

```typescript
import { SuperwallOptions, PaywallOptions, LoggingOptions, NetworkEnvironment, LogLevel, LogScope } from "@superwall/react-native-superwall"

// Build logging options (must be an instance so toJson exists)
const logging = new LoggingOptions()
logging.level = LogLevel.Debug
logging.scopes = [LogScope.All]

// Build paywall options (set properties after construction)
const paywalls = new PaywallOptions()
paywalls.shouldShowPurchaseFailureAlert = false
paywalls.isHapticFeedbackEnabled = true

const options = new SuperwallOptions({
  networkEnvironment: NetworkEnvironment.Developer,
  isExternalDataCollectionEnabled: true,
  localeIdentifier: "en_US",
  logging,
  paywalls
})

await Superwall.configure({
  apiKey: "pk_your_api_key",
  options: options
})
```

Network Environment [#network-environment]

Use different network environments for different build configurations:

```typescript
// Development builds
const devOptions = new SuperwallOptions({
  networkEnvironment: NetworkEnvironment.Developer
})

// Release candidate builds
const rcOptions = new SuperwallOptions({
  networkEnvironment: NetworkEnvironment.ReleaseCandidate
})

// Production builds
const prodOptions = new SuperwallOptions({
  networkEnvironment: NetworkEnvironment.Release
})
```

Related [#related]

* [`PaywallOptions`](/docs/react-native/sdk-reference/PaywallOptions) - Paywall-specific options
* [`configure()`](/docs/react-native/sdk-reference/configure) - Configure the SDK with options