# entitlements

The entitlements tied to the device, accessible via Superwall.shared.entitlements.

> **Info**

The `entitlements` property provides access to all entitlements, both active and inactive, as well as methods to query entitlements by product IDs.



Purpose [#purpose]

Provides access to the user's entitlements and methods to query them. Entitlements represent subscription tiers or features that a user has access to.

Signature [#signature]

```swift
public var entitlements: EntitlementsInfo { get }
```

Properties and Methods [#properties-and-methods]

<TypeTable
  type="{
  active: {
    type: &#x22;Set<Entitlement>&#x22;,
    description: &#x22;The active entitlements.&#x22;,
    required: true,
  },
  inactive: {
    type: &#x22;Set<Entitlement>&#x22;,
    description: &#x22;The inactive entitlements.&#x22;,
    required: true,
  },
  all: {
    type: &#x22;Set<Entitlement>&#x22;,
    description: &#x22;All entitlements, regardless of whether they're active or not.&#x22;,
    required: true,
  },
  web: {
    type: &#x22;Set<Entitlement>&#x22;,
    description: &#x22;Active entitlements redeemed via the web.&#x22;,
    required: true,
  },
  &#x22;byProductId(_:)&#x22;: {
    type: &#x22;(String) -> Set<Entitlement>&#x22;,
    description: &#x22;Returns entitlements for a given product ID.&#x22;,
    required: true,
  },
  &#x22;byProductIds(_:)&#x22;: {
    type: &#x22;(Set<String>) -> Set<Entitlement>&#x22;,
    description: &#x22;Returns entitlements for a given set of product IDs. Available in version 4.10.0+.&#x22;,
    required: true,
  },
}"
/>

Returns / State [#returns--state]

Returns an `EntitlementsInfo` object that provides access to entitlements and methods to query them.

Usage [#usage]

Get all active entitlements:

```swift
let activeEntitlements = Superwall.shared.entitlements.active

for entitlement in activeEntitlements {
  print("Active entitlement: \(entitlement.id)")
}
```

Get entitlements by product ID:

```swift
let productId = "com.example.premium_monthly"
let entitlements = Superwall.shared.entitlements.byProductId(productId)

print("Product \(productId) unlocks \(entitlements.count) entitlements")
```

Get entitlements by multiple product IDs (4.10.0+):

```swift
let productIds: Set<String> = [
  "com.example.premium_monthly",
  "com.example.premium_annual"
]

let entitlements = Superwall.shared.entitlements.byProductIds(productIds)

print("Products unlock \(entitlements.count) entitlements")
```

Check if user has specific entitlement:

```swift
let hasPremium = Superwall.shared.entitlements.active.contains { 
  $0.id == "premium" 
}

if hasPremium {
  showPremiumFeatures()
}
```

Get web entitlements:

```swift
let webEntitlements = Superwall.shared.entitlements.web

if !webEntitlements.isEmpty {
  print("User has \(webEntitlements.count) web entitlements")
}
```

Related [#related]

* [`Entitlements`](/docs/ios/sdk-reference/entitlements) - Represents the customer's entitlements
* [`subscriptionStatus`](/docs/ios/sdk-reference/subscriptionStatus) - Subscription status which includes active entitlements
* [`customerInfo`](/docs/ios/sdk-reference/customerInfo) - Customer info which includes all entitlements