> ## Documentation Index
> Fetch the complete documentation index at: https://moengage.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# iOS SDK

> View all release notes and changelogs for the MoEngage iOS Native SDK.

<div style={{ padding: '16px', border: '1px solid #E8E8E8', borderRadius: '8px', marginBottom: '20px' }}>
  <p style={{ fontWeight: 'bold', fontSize: '1.1em', marginBottom: '12px' }}>Module Status Legend</p>

  <ul style={{ listStyle: 'none', paddingLeft: '0' }}>
    <li><span style={{ color: '#008767', fontWeight: 'bold' }}>■ Updated:</span> Module version has been updated in this release.</li>
    <li><span style={{ fontWeight: 'bold' }}>■ Unchanged:</span> Module remains on the previous version.</li>
    <li><span style={{ color: '#8c8c8c', textDecoration: 'line-through', fontWeight: 'bold' }}>■ Deprecated:</span> Module is deprecated and will be removed in a future release.</li>
  </ul>
</div>

<Update label="22nd July 2026" description="SDK 11.0.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Messaging</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards</span>

      RichNotification · CampaignsCore · LiveActivity · Inbox · Geofence · RealTimeTrigger · Personalize
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  <span style={{ backgroundColor: 'rgba(212, 56, 13, 0.1)', color: '#D4380D', border: '1px solid #FFCCC7', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Breaking Changes</span>

  * **SDK initialization enforced before API use:** The SDK now triggers a `fatalError` across all build configurations — Debug, Release, and TestFlight builds — when any public API is invoked before initialization, so incorrect integration order surfaces immediately instead of failing silently.
  * **Public APIs return typed task objects:** Several APIs that previously returned `Void` now return typed task objects. Function-reference assignments with an explicit `Void` return type no longer compile.
  * **Objective-C enums migrated to Swift:** The public Objective-C enums `MoEngageInAppActionType` and `MoEngageNudgePosition` have been migrated to Swift (see the migration tables below).

  #### Core

  <span style={{ backgroundColor: 'rgba(212, 56, 13, 0.1)', color: '#D4380D', border: '1px solid #FFCCC7', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Breaking Changes</span>

  * Public APIs that previously returned `Void` now return a typed task object (a `MoEngageBaseTask` subclass, for example `MoEngageTrackEventTask`, `MoEngageShowInAppTask`) so you can observe per-call success or failure through `onSuccess` / `onFailure` or the async `result()` method. Modules changed: Core, InApp, Messaging. Direct calls and Objective-C callers compile unchanged, since `@discardableResult` covers ignored return values. Swift function-reference assignments with an explicit `Void` return type no longer compile.

    | API                                          | Before (compiled)                                                                                              | After (explicit closure required)                                                                                                                                                                            |
    | :------------------------------------------- | :------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | `trackEvent` (`MoEngageSDKAnalytics`)        | `let trackFn: (String, MoEngageProperties?, String?) -> Void = MoEngageSDKAnalytics.sharedInstance.trackEvent` | `let trackFn: (String, MoEngageProperties?, String?) -> Void = { name, props, appID in`<br />`    _ = MoEngageSDKAnalytics.sharedInstance.trackEvent(name, withProperties: props, forAppID: appID)`<br />`}` |
    | `initializeDefaultLiveInstance` (`MoEngage`) | `let initFn: (MoEngageSDKConfig) -> Void = MoEngage.sharedInstance.initializeDefaultLiveInstance`              | `let initFn: (MoEngageSDKConfig) -> Void = {`<br />`    _ = MoEngage.sharedInstance.initializeDefaultLiveInstance($0)`<br />`}`                                                                              |

    Direct calls stay untouched:

    ```swift theme={null}
    // This continues to compile and behave exactly as before:
    MoEngageSDKAnalytics.sharedInstance.trackEvent("Purchase", withProperties: properties)

    // Optionally observe the outcome now:
    MoEngageSDKAnalytics.sharedInstance.trackEvent("Purchase", withProperties: properties)
        .onSuccess { result in /* tracked */ }
        .onFailure { failure in /* see failure.reason */ }
    ```

  * `MoEngageSDKAnalytics` now requires user and device attribute values to conform to `Sendable` for Swift concurrency safety. The `value` parameters of the following public APIs changed from `Any` to `any Sendable`, including untyped `[String: Any]` dictionaries, which are now `[String: any Sendable]`. Under the Swift 6 language mode or strict concurrency, call sites passing non-`Sendable` values need to be updated.
    * `setUserAttribute(_:withAttributeName:level:forAppID:)` — `value` parameter (`Any` → `any Sendable`)
    * `setDeviceAttribute(_:withName:forWorkspaceId:)` — `value` parameter (`Any` → `any Sendable`)

  * The following public callback protocols are now `Sendable` and `@MainActor` isolated. Conforming types must be safe to use across concurrency domains, and their callback methods are now invoked on the main actor, so implementations that were not already main-thread confined need to be updated.
    * `MoEngageAnalyticsCallBack`
    * `MoEngageAuthenticationError.Listener`

  * `MoEngageProperties` now requires event attribute values to conform to `Sendable` for Swift concurrency safety. The value and payload parameters of the following public APIs changed from `Any` to `any Sendable`. Under the Swift 6 language mode or strict concurrency, call sites passing non-`Sendable` values, including untyped `[String: Any]` dictionaries, need to be updated.
    * `init(withAttributes:)` — `attributesDict` parameter (`[String: Any]` → `[String: any Sendable]`)
    * `addAttribute(_:withName:)` — `attrVal` parameter (`Any` → `any Sendable`)

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed a possible deadlock that could occur for scene-based apps when passing URLs to the MoEngage SDK.

  #### InApp

  <span style={{ backgroundColor: 'rgba(212, 56, 13, 0.1)', color: '#D4380D', border: '1px solid #FFCCC7', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Breaking Changes</span>

  * `showInApp` now returns a typed task object (`MoEngageShowInAppTask`) instead of `Void`, so you can observe per-call success or failure through `onSuccess` / `onFailure` or the async `result()` method. Direct calls and Objective-C callers compile unchanged. Swift function-reference assignments with an explicit `Void` return type no longer compile.

    | API                              | Before (compiled)                                                    | After (explicit closure required)                                                                |
    | :------------------------------- | :------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------- |
    | `showInApp` (`MoEngageSDKInApp`) | `let showFn: () -> Void = MoEngageSDKInApp.sharedInstance.showInApp` | `let showFn: () -> Void = {`<br />`    _ = MoEngageSDKInApp.sharedInstance.showInApp()`<br />`}` |

  * The public Objective-C enums `MoEngageInAppActionType` and `MoEngageNudgePosition` have been migrated to Swift. Update your code to use the Swift equivalents listed below. For more information, refer to the [In-App Messages](/docs/developer-guide/ios-sdk/in-app-messages/in-app-nativ) guide.

    **`MoEngageInAppActionType` migration:**

    |                   | Swift (before)     | Swift (after)       | Objective-C (before) | Objective-C (after)                       |
    | :---------------- | :----------------- | :------------------ | :------------------- | :---------------------------------------- |
    | Navigation action | `NavigationAction` | `.navigationAction` | `NavigationAction`   | `MoEngageInAppActionTypeNavigationAction` |
    | Custom action     | `CustomAction`     | `.customAction`     | `CustomAction`       | `MoEngageInAppActionTypeCustomAction`     |

    **`MoEngageNudgePosition` migration:**

    |              | Swift (before)             | Swift (after)  | Objective-C (before)       | Objective-C (after)                |
    | :----------- | :------------------------- | :------------- | :------------------------- | :--------------------------------- |
    | Top          | `NudgePositionTop`         | `.top`         | `NudgePositionTop`         | `MoEngageNudgePositionTop`         |
    | Bottom       | `NudgePositionBottom`      | `.bottom`      | `NudgePositionBottom`      | `MoEngageNudgePositionBottom`      |
    | Bottom-left  | `NudgePositionBottomLeft`  | `.bottomLeft`  | `NudgePositionBottomLeft`  | `MoEngageNudgePositionBottomLeft`  |
    | Bottom-right | `NudgePositionBottomRight` | `.bottomRight` | `NudgePositionBottomRight` | `MoEngageNudgePositionBottomRight` |
    | Any          | `NudgePositionAny`         | `.any`         | `NudgePositionAny`         | `MoEngageNudgePositionAny`         |
    | None         | `NudgePositionNone`        | `.none`        | `NudgePositionNone`        | `MoEngageNudgePositionNone`        |

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed the nudge visibility check to correctly scope by the current screen.
  * Fixed a cropped HTML non-intrusive in-app on device orientation change.
  * Fixed a bottom-positioned non-intrusive nudge rendering pushed above the screen with an unreachable close button when the content exceeded the visible area.

  #### Messaging

  <span style={{ backgroundColor: 'rgba(212, 56, 13, 0.1)', color: '#D4380D', border: '1px solid #FFCCC7', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Breaking Changes</span>

  * `setPushToken` now returns a typed task object instead of `Void`, so you can observe per-call success or failure through `onSuccess` / `onFailure` or the async `result()` method. Direct calls and Objective-C callers compile unchanged. Swift function-reference assignments with an explicit `Void` return type no longer compile.

    | API                                     | Before (compiled)                                                                 | After (explicit closure required)                                                                               |
    | :-------------------------------------- | :-------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------- |
    | `setPushToken` (`MoEngageSDKMessaging`) | `let tokenFn: (Data?) -> Void = MoEngageSDKMessaging.sharedInstance.setPushToken` | `let tokenFn: (Data?) -> Void = {`<br />`    _ = MoEngageSDKMessaging.sharedInstance.setPushToken($0)`<br />`}` |

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed the push notification received impression being dropped if storage encryption is enabled (introduced in `10.08.1`).

  #### Cards

  <span style={{ backgroundColor: 'rgba(212, 56, 13, 0.1)', color: '#D4380D', border: '1px solid #FFCCC7', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Breaking Changes</span>

  * `presentCardsViewController`, `pushCardsViewController`, and `getCardsViewController` are now annotated `@MainActor`. Objective-C callers are unaffected. Swift callers invoking these methods from a non-main-actor context must now hop to the main actor.

    | API                          | Before (compiled anywhere)                                                                                                                                                      | After (must be on the main actor)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
    | :--------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | `presentCardsViewController` | `func openCards() {`<br />`    MoEngageSDKCards.sharedInstance.presentCardsViewController()`<br />`}`                                                                           | `func openCards() async {`<br />`    await MainActor.run {`<br />`        MoEngageSDKCards.sharedInstance.presentCardsViewController()`<br />`    }`<br />`}`<br /><br />or mark the caller `@MainActor` so the hop is implicit:<br />`@MainActor`<br />`func openCards() {`<br />`    MoEngageSDKCards.sharedInstance.presentCardsViewController()`<br />`}`                                                                                                                                                         |
    | `pushCardsViewController`    | `func openCards(in navController: UINavigationController) {`<br />`    MoEngageSDKCards.sharedInstance.pushCardsViewController(toNavigationController: navController)`<br />`}` | `func openCards(in navController: UINavigationController) async {`<br />`    await MainActor.run {`<br />`        MoEngageSDKCards.sharedInstance.pushCardsViewController(toNavigationController: navController)`<br />`    }`<br />`}`<br /><br />or mark the caller `@MainActor` so the hop is implicit:<br />`@MainActor`<br />`func openCards(in navController: UINavigationController) {`<br />`    MoEngageSDKCards.sharedInstance.pushCardsViewController(toNavigationController: navController)`<br />`}`     |
    | `getCardsViewController`     | `func openCards() {`<br />`    MoEngageSDKCards.sharedInstance.getCardsViewController(withCompletionBlock: { cardsVC in`<br />`        // use cardsVC`<br />`    })`<br />`}`   | `func openCards() async {`<br />`    await MainActor.run {`<br />`        MoEngageSDKCards.sharedInstance.getCardsViewController(withCompletionBlock: { cardsVC in`<br />`            // use cardsVC`<br />`        })`<br />`    }`<br />`}`<br /><br />or mark the caller `@MainActor` so the hop is implicit:<br />`@MainActor`<br />`func openCards() {`<br />`    MoEngageSDKCards.sharedInstance.getCardsViewController(withCompletionBlock: { cardsVC in`<br />`        // use cardsVC`<br />`    })`<br />`}` |
</Update>

<Update label="29th June 2026" description="SDK 10.14.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Personalize</span>

      RichNotification · CampaignsCore · LiveActivity · Messaging · Cards · Inbox · Geofence · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * **Scene Delegate Support:** The SDK now supports Scene Delegate-based app lifecycles. Apps using `UISceneDelegate` will have full SDK functionality without requiring additional configuration.

  #### InApp

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * **Push to In-App:** Push notifications can now trigger In-App messages, enabling richer and more contextual messaging experiences directly within your app.
  * **Movable Nudges:** Nudge campaigns can now be repositioned by the user within the app interface, providing a less intrusive and more flexible experience.

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed an issue where Bottom nudges were displayed simultaneously alongside BottomLeft or BottomRight nudges. These positions are now treated as mutually exclusive.

  #### Personalize

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Improvements</span>

  * Updated the app SDK caching strategy for the Personalize API.
</Update>

<Update label="25th May 2026" description="SDK 10.13.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards</span>

      InApp · RichNotification · CampaignsCore · LiveActivity · Messaging · Inbox · Geofence · RealTimeTrigger · Personalize
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * `MoEngageBadgeUpdateEnabled`: Added a new Boolean key to the root level of `Info.plist` to control whether the SDK manages the app's badge count. Defaults to `YES`. Set to `NO` if your app manages badge counts independently. For more information, refer to [Disable Badge Reset](https://www.moengage.com/docs/developer-guide/ios-sdk/push/advanced/custom-notification-handling#disable-badge-reset).

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Improvements</span>

  * Updated badge count to sync with the actual number of MoEngage notifications in the Notification Center, replacing the previous increment/decrement logic.

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed a crash on iOS 15.x and 16.x during SDK initialization caused by `NSClassFromString` being invoked on unrecognized third-party Swift class names.

  #### Cards

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed an issue where a user could not see a previously deleted card after they regained eligibility for that campaign.
</Update>

<Update label="30th April 2026" description="SDK 10.12.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Personalize</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>

      RichNotification · CampaignsCore · LiveActivity · Messaging · Cards · Inbox · Geofence · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed an issue that caused unit tests to fail consistently when executed without a host application.

  #### Personalize

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Improvements</span>

  * Updated API names and signatures to ensure consistency across all platforms.

  #### InApp

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed an application crash that occurred when attempting to display a nudge via test push.
</Update>

<Update label="15th April 2026" description="SDK 10.11.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Personalize</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>

      RichNotification · CampaignsCore · LiveActivity · Messaging · Cards · Inbox · Geofence · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Improvements</span>

  * Internal improvements. No developer action required.

  #### Personalize

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * **MoEngage Personalize SDK:** A secure framework for fetching personalized campaign content and tracking user impressions and clicks at the campaign and offering level. For more information, refer to [Personalize SDK](/docs/developer-guide/ios-sdk/personalize/personalize-sdk).

  #### InApp

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Improvements</span>

  * Internal improvements. No developer action required.
</Update>

<Update label="31st March 2026" description="SDK 10.10.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>

      RichNotification · CampaignsCore · LiveActivity · Messaging · Cards · Inbox · Geofence · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Improvements</span>

  * Internal improvements. No developer action required.

  #### InApp

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed a memory leak that occurred when the application was running in the background. (Introduced in 10.09.0) affects versions 10.09.0, 10.10.0, and 10.10.1. Only apps that do not have `MoEngageLiveActivity` integrated are affected.
</Update>

<Update label="3rd March 2026" description="SDK 10.10.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>

      Core · RichNotification · CampaignsCore · LiveActivity · Messaging · Cards · Inbox · Geofence · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  #### InApp

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed click callbacks for HTML in-app messages not executing on the main thread.
</Update>

<Update label="29th January 2026" description="SDK 10.10.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Messaging</span>

      Core · RichNotification · CampaignsCore · LiveActivity · Cards · Inbox · Geofence · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  #### Messaging

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * **Self-Handled Background Push:** Added support for the Self-Handled Background Push template. For more information, see [Push Display Handled by Application](/docs/developer-guide/ios-sdk/push/optional/push-handled-by-application#handling-background-updates-self-handled).

  #### InApp

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed a crash that occurred when testing HTML nudge templates via test push. This issue only affected dashboard users previewing campaigns and did not impact production campaigns.
</Update>

<Update label="19th January 2026" description="SDK 10.10.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>LiveActivity</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Messaging</span>

      RichNotification · CampaignsCore · Cards · Inbox · Geofence · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * **Custom Proxy Domain:** Added support for custom proxy domains to route SDK traffic through a customer-owned subdomain, bypassing ad blockers and private DNS services. For more information, see [Custom Proxy Domain for iOS](/docs/developer-guide/ios-sdk/sdk-integration/advanced/custom-proxy-domain-ios).

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Improvements</span>

  * Fixed handling of KMM errors for CocoaPods integration.

  #### InApp

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * **Segment Re-evaluation:** Trigger-time segment re-evaluation ensures in-app messages are shown only to users who are eligible at trigger time. No integration changes are required; updating to this SDK version is sufficient to enable this feature. For more information, see [Re-evaluate Campaign Eligibility](/docs/user-guide/campaigns-and-channels/in-app-message/create/create-in-app-campaign#re-evaluate-campaign-eligibility).
  * **Frequency Capping:** Limits the number of in-app campaigns shown to a user within a defined period. For more information, see [Frequency Capping](/docs/user-guide/settings/channels/delivery-controls/frequency-capping).

  #### LiveActivity

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * **Transactional Live Activity:** Added support for Transactional Live Activities. For more information, see [Transactional Live Activities](/docs/user-guide/campaigns-and-channels/mobile-push/notification-features-and-behavior/transactional-live-activities).

  #### Messaging

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * **Notification Click Tracking:** Added the new API `logNotificationClicked` to accurately track clicks and dismisses of notifications. For more information, see [Track Notification Click](/docs/developer-guide/ios-sdk/push/optional/push-handled-by-application#track-notification-click).
</Update>

<Update label="1st December 2025" description="SDK 10.08.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RichNotification</span>

      CampaignsCore · Messaging · Cards · Inbox · Geofence · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Added three string operators for campaign trigger conditions:
    * `containsInTheFollowing` — matches if the attribute value contains any string from a given list.
    * `startsWithInTheFollowing` — matches if the attribute value starts with any string from a given list.
    * `endsWithInTheFollowing` — matches if the attribute value ends with any string from a given list.

  #### InApp

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed build-time header warnings in the `MoEngageInApps` framework. This is a compile-time fix with no runtime impact.

  #### RichNotification

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed an intermittent issue where a subtitle configured in the template backup was incorrectly shown in collapsed notifications when the rich push payload did not include a subtitle. Affects any push notification that uses a template backup alongside a rich push payload.
</Update>

<Update label="29th October 2025" description="SDK 10.08.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>CampaignsCore</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>

      Messaging · Cards · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Introduced JWT-based SDK authentication. For more information, refer to [JWT Authentication](/docs/developer-guide/ios-sdk/sdk-integration/advanced/jwt-authentication).

  #### CampaignsCore

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added support for tracking clicks in emails sent from the MoEngage Platform. This feature is enabled automatically upon upgrading to this SDK version. For more information, refer [here](https://www.moengage.com/docs/user-guide/campaigns-and-channels/email/getting-started-with-email/configure-a-deep-linking-domain).

  #### InApp

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed InApp stats API mapping.
</Update>

<Update label="17th October 2025" description="SDK 10.07.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RealTimeTrigger</span>

      Core · CampaignsCore · Messaging · InApp · Cards · Inbox · RichNotification
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  #### Geofence

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed binary incompatibility with the core module.

  #### RealTimeTrigger

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed binary incompatibility with the core module.
</Update>

<Update label="13th October 2025" description="SDK 10.07.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>CampaignsCore</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Messaging</span>

      Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  #### All Modules

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed deprecated iOS/tvOS 13 API usage across all modules.

  #### InApp

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed a build error caused by the use of a reserved Objective-C++ keyword in module headers. This affected apps with the `SWIFT_OBJC_INTEROP_MODE` compiler flag enabled.
  * Fixed in-app delivery statistics syncing issues.
</Update>

<Update label="24th September 2025" description="SDK 10.07.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>

      CampaignsCore · Messaging · Cards · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added multiple projects support in a single workspace. For more information, see [Portfolio-Level User Attributes](/docs/developer-guide/ios-sdk/data-tracking/basic/tracking-user-attributes#portfolio-level-user-attributes).
  * Added support for portfolio-level user attributes tracking. For more information, see [User Attributes](/docs/developer-guide/ios-sdk/data-tracking/basic/tracking-user-attributes).

  <Warning>
    The SDK now throws an exception that crashes the app in debug mode when portfolio-level user attributes are set without a corresponding project configuration, or when the unique ID is set at the portfolio level. To disable this behavior, call [`disableIntegrationValidator()`](https://moengage.github.io/ios-api-reference/Classes/MoEngageSDKCore.html#/c:@M@MoEngageCore@objc\(cs\)MoEngageSDKCore\(im\)disableIntegrationValidator). This crash is limited to Xcode debug builds and does not affect TestFlight or App Store builds. For more information, see [User Attributes](/docs/developer-guide/ios-sdk/data-tracking/basic/tracking-user-attributes).
  </Warning>

  #### InApp

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed Objective-C headers, Nullability, and nullable warnings.
  * Fixed crash while migrating InApp campaigns data.
</Update>

<Update label="20th September 2025" description="SDK 10.06.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>

      Messaging · Cards · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed a storage deduplication issue while upgrading from v7.x to v10.x.

  #### InApp

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed an issue in GIF-based Nudge in-app templates where borders configured via the dashboard were rendering on the surrounding container instead of the GIF/image widget.
</Update>

<Update label="8th September 2025" description="SDK 10.05.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Messaging</span>

      InApp · Cards · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Improvements</span>

  * Internal improvements. No developer action required.

  #### Messaging

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Improvements</span>

  * Internal improvements. No developer action required.
</Update>

<Update label="28th August 2025" description="SDK 10.04.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApps</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Messaging</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards</span>

      Core · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  #### InApp

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed a thread hang/crash in the in-app condition evaluator (introduced in 9.23.4, fixed in 10.03.2). Only apps that call `MoEngageSDKInApp.sharedInstance.setCurrentInAppContexts(_:)` or `MoEngageSDKInApp.sharedInstance.invalidateInAppContexts()` are affected. Apps that do not use context-based in-app display rules are not impacted.

  #### Messaging

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Improved push notification received impression tracking performance.
  * Added a completion callback to `logNotificationReceived`.

  <Warning>
    The legacy `logNotificationReceived` API (without a completion callback) is deprecated in version 10.04.02 and will be removed in a future release. Migrate to `logNotificationReceived(completionCallback:)` to ensure reliable impression tracking. For more information, see [Track Notification Received](/docs/developer-guide/ios-sdk/push/optional/push-handled-by-application#track-notification-received).
  </Warning>

  #### Cards

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed the Cards future qualifier with UID and MultiID on the stats API.

  <Info>
    - **UID** = Unique User ID set via `setUniqueId(_:)` API
    - **MultiID** = Multiple user identity key-value pairs set via the `identifyUser(identities:)` API
  </Info>
</Update>

<Update label="21st August 2025" description="SDK 10.04.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApps</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Messaging</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards</span>

      Core · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  #### InApp

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed nullability specifier warnings/errors in ObjC files.
  * Fixed the universal deeplink callback to SceneDelegate.

  #### Messaging

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed the universal deeplink callback to SceneDelegate.

  #### Cards

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed the universal deeplink callback to SceneDelegate.
</Update>

<Update label="5th August 2025" description="SDK 10.04.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApps</span>

      Core · Messaging · Cards · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  #### InApp

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added support for Non-Intrusive HTML Nudges. For more information, see [HTML Nudge Templates](/docs/user-guide/campaigns-and-channels/in-app-message/templates/html-nudge-templates).
  * Added support for the new Test In-App experience. For more information, see [Test Your In-App Campaign](/docs/user-guide/campaigns-and-channels/in-app-message/create/test-your-in-app-campaign).
</Update>

<Update label="25th July 2025" description="SDK 10.03.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApps</span>

      Messaging · Cards · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed an issue with impression tracking when signature validation is enabled on server.

  <Warning>
    The SDK now throws an exception that crashes the app in debug mode when the Info.plist contains renamed or inverted configuration keys. To disable this behavior, call [`disableIntegrationValidator()`](https://moengage.github.io/ios-api-reference/Classes/MoEngageSDKCore.html#/c:@M@MoEngageCore@objc\(cs\)MoEngageSDKCore\(im\)disableIntegrationValidator). This crash is limited to Xcode debug builds and does not affect TestFlight or App Store builds. For more information, see [SDK Initialization](/docs/developer-guide/ios-sdk/sdk-integration/basic/sdk-initialization).
  </Warning>

  #### InApp

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed GIFs and images not remaining visible in in-app nudges when accessibility features are enabled.
  * Fixed a random crash in in-app messages on removing context. If you are not using the context-based InApp APIs (`setCurrentInAppContexts(_:)` and `invalidateInAppContexts()`), you are not affected by this issue.
</Update>

<Update label="16th July 2025" description="SDK 10.03.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>

      Messaging · InApps · Cards · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Internal improvements. No developer action required.
</Update>

<Update label="15th July 2025" description="SDK 10.03.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>

      Messaging · InApps · Cards · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added support for initializing the default SDK instance with configuration data in the application's Info.plist. This is primarily intended for cross-platform frameworks (such as React Native, Flutter, and Cordova) that use this mechanism for SDK initialization and is not exposed as a native SDK API. No action required for native iOS developers.
</Update>

<Update label="8th July 2025" description="SDK 10.02.3">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards</span>

      Messaging · InApps · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed the order of event tracking in `offeringClicked()`:

    * **Before (10.02.2 and earlier):** `Offering Experience Clicked` (`experienceClicked`) → `Offering Clicked` stats event
    * **After (10.02.3+):** `Offering Clicked` stats event → `Offering Experience Clicked` (`experienceClicked`)

    The `Offering Clicked` stats event now fires first, ensuring offering attribution is recorded before the experience click event.
  * Fixed data tracked immediately after logout being lost.

  #### Cards

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed missing accessibility data in the card metadata dictionary for cross-platform frameworks.
</Update>

<Update label="27th June 2025" description="SDK 10.02.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>

      Messaging · InApps · Cards · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added APIs for tracking clicks and impressions for personalization offerings. For more information, see [Offerings Events Tracking](/docs/developer-guide/ios-sdk/data-tracking/advanced/offerings-events-tracking).
</Update>

<Update label="26th June 2025" description="SDK 10.02.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Messaging</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>LiveActivity</span>

      Core · InApps · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  #### Messaging

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed notification click impressions not being tracked with proxy enabled or disabled when the application is launched from a killed state with delayed initialization.

  #### Cards

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added accessibility support for card campaigns. For more information, see [Accessible Campaigns in MoEngage](/docs/user-guide/campaigns-and-channels/getting-started/campaign-content/accessible-campaigns-in-moengage).

  #### LiveActivity

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added support for Broadcast Live Activities. For more information, see [Broadcast Live Activities for iOS Push Campaigns](/docs/user-guide/campaigns-and-channels/mobile-push/notification-features-and-behavior/broadcast-live-activities-for-ios-push-campaigns).
</Update>

<Update label="16th June 2025" description="SDK 10.01.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Messaging</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApps</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RealTimeTrigger</span>

      Cards · Geofence · RichNotification
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added APIs for tracking personalization clicks and impressions. For more information, see [Personalize Experience Events tracking](/docs/developer-guide/ios-sdk/data-tracking/advanced/personalize-experience-events-tracking).

  #### Messaging

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added accessibility support for push campaigns. For more information, see [Accessible Campaigns in MoEngage](/docs/user-guide/campaigns-and-channels/getting-started/campaign-content/accessible-campaigns-in-moengage).

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Added redundancy in tracking provisional push permission status, will be tracked once every 24 hours.

  #### Inbox

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added accessibility support for push campaigns. For more information, see [Accessible Campaigns in MoEngage](/docs/user-guide/campaigns-and-channels/getting-started/campaign-content/accessible-campaigns-in-moengage).

  #### InApp

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added accessibility support for in-app campaigns. For more information, see [Accessible Campaigns in MoEngage](/docs/user-guide/campaigns-and-channels/getting-started/campaign-content/accessible-campaigns-in-moengage).

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed a crash in the in-app display path caused by an unguarded `rootViewController` access. SDK 10.00.0 raised the deployment target to iOS 13 and adopted scene-based window management, but the in-app presentation logic did not account for cases where `rootViewController` is `nil` before a scene's window is fully established. A nil check is now in place before attempting to present the campaign view. **Affected versions:** 10.00.0 only.

  <Note>
    **Known limitations when accessibility features are enabled:**

    * The GIF nudge template cannot be resized.
    * Additional border space is displayed in the maximize state for resizable nudges.
  </Note>

  #### RealTimeTrigger

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added accessibility support for RTT push campaigns. For more information, see [Accessible Campaigns in MoEngage](/docs/user-guide/campaigns-and-channels/getting-started/campaign-content/accessible-campaigns-in-moengage).
</Update>

<Update label="27th May 2025" description="SDK 10.00.0 - Major Release">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApps</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RealTimeTrigger</span>

      Messaging · Cards · Geofence · RichNotification
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 13.0
      * tvOS: 13.0
    </Card>
  </CardGroup>

  <span style={{ backgroundColor: 'rgba(212, 56, 13, 0.1)', color: '#D4380D', border: '1px solid #FFCCC7', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Breaking Changes</span>

  <Danger>
    **Action required before upgrading to 10.00.0:**

    * iOS and tvOS deployment targets are now 13.0. Update your project's deployment target before integrating.
    * Support for Intel-based simulators has been removed.
    * Deprecated initializer and SSL configuration APIs have been removed from the `Core` module (see the table below).
  </Danger>

  * Updated iOS and tvOS deployment target to 13.
  * Removed support for Intel-based simulators.

  #### Kotlin Multiplatform

  Trigger condition evaluation for InApps, Inbox, and RealTimeTrigger now uses a single shared library built with Kotlin Multiplatform, replacing separate iOS and Android implementations. This consolidation keeps evaluation logic in one place as the SDK evolves.

  #### Core

  <span style={{ backgroundColor: 'rgba(212, 56, 13, 0.1)', color: '#D4380D', border: '1px solid #FFCCC7', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Breaking Changes</span>

  Removed deprecated APIs:

  | Then                                                    | Now                                    |
  | :------------------------------------------------------ | :------------------------------------- |
  | `MoEngageSDKConfig(withAppID:)`                         | `MoEngageSDKConfig(appId:dataCenter:)` |
  | `MoEngageSDKConfig.networkConfig.sslVerificationConfig` | NA                                     |

  #### Inbox

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added support for notification grouping, replacement & event tracking. For more information, see [Push Notification Grouping](/docs/user-guide/campaigns-and-channels/mobile-push/notification-features-and-behavior/push-notification-grouping) and [Push Notification Update](/docs/user-guide/campaigns-and-channels/mobile-push/notification-features-and-behavior/push-notification-update).
  * Migrated trigger evaluation logic to Kotlin Multi-Platform. This adds approximately 3.3 MB to the binary size on arm64 devices.

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed the ***MoEngageInboxEntry.collapseId*** being set to empty instead of nil when the value is not present in the payload (introduced in 9.24.0).

  #### InApp

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added Kotlin Multi-Platform-based event trigger condition evaluator.

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed persistent data migration failing from 7.x.x and 8.x.x to latest version.

  #### RealTimeTrigger

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added Kotlin Multi-Platform-based event trigger condition evaluator (`MoEngageKMMConditionEvaluator`), enabled by default.
</Update>

<Update label="29th April 2025" description="SDK 9.24.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Messaging</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>

      Core · Inbox · Cards · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### Messaging

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed Rich landing action for push notification when opened from inbox in killed state.
  * Fixed push notification tracking in application killed state.

  #### InApp

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added support for Session Triggered InApps. For more information, see [Create In-App Campaign](/docs/user-guide/campaigns-and-channels/in-app-message/create/create-in-app-campaign).
</Update>

<Update label="15th April 2025" description="SDK 9.23.4">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Messaging</span>

      Core · InApps · Cards · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### Messaging

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed push opt-in tracked as false if banners notification settings is disabled (introduced in 9.19.0).
</Update>

<Update label="14th April 2025" description="SDK 9.23.3">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Messaging</span>

      Core · InApps · Cards · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### Messaging

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed notification clicks not being tracked when the app was launched from a killed state via a notification tap.
</Update>

<Update label="26th March 2025" description="SDK 9.23.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Messaging</span>

      Core · InApps · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### Cards

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed Pinned card being returned as first element in `fetchCards` API.

  #### Messaging

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed no navigation on Inbox messages click.
</Update>

<Update label="19th March 2025" description="SDK 9.23.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Device Triggered</span>

      Core · InApps · Cards · Inbox · Messaging · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### Geofence

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed a "symbol not found" exception introduced in 9.23.0.

  #### Device Triggered

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed a "symbol not found" exception introduced in 9.23.0.
</Update>

<Update label="11th March 2025" description="SDK 9.23.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApps</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Messaging</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence</span>

      RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added multiple identities support. For more information, see [Unified Identity (Identity Resolution)](/docs/user-guide/data/user-data/unified-identity-identity-resolution).

  <Warning>
    The SDK now throws an exception that crashes the app in debug mode when it detects incorrect integration, including nil or empty attribute names, unsupported value types in event and user attributes, and Date or location values nested inside arrays or dictionaries. Empty arrays and dictionaries are also treated as invalid. To disable this behavior, call [`disableIntegrationValidator()`](https://moengage.github.io/ios-api-reference/Classes/MoEngageSDKCore.html#/c:@M@MoEngageCore@objc\(cs\)MoEngageSDKCore\(im\)disableIntegrationValidator). This crash is limited to Xcode debug builds and does not affect TestFlight or App Store builds. For more information, see [Event Tracking](/docs/developer-guide/ios-sdk/data-tracking/basic/tracking-events) and [User Attributes](/docs/developer-guide/ios-sdk/data-tracking/basic/tracking-user-attributes).
  </Warning>

  #### Cards

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Cards sync on user identity set or update.

  #### InApp

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * InApp sync on user identity set or update.
  * Added Click analysis support in HTML.

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed Self-Handled Trigger Callback not executing on the main queue for the TestInApp flow (introduced in 9.19.0).
  * Fixed data accumulation by removing unused data from older versions (introduced in 9.21.0).

  #### Inbox

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed inbox expiry time migration (introduced in 9.21.0).

  #### Messaging

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed data accumulation by removing unused data from older versions (introduced in 9.21.0).

  #### RichNotification

  <Warning>
    The SDK now throws an exception that crashes the app in debug mode when a Rich Push payload is received without the MoEngageRichNotification extension integrated. To disable this behavior, call [`disableIntegrationValidator()`](https://moengage.github.io/ios-api-reference/Classes/MoEngageSDKCore.html#/c:@M@MoEngageCore@objc\(cs\)MoEngageSDKCore\(im\)disableIntegrationValidator). This crash is limited to Xcode debug builds and does not affect TestFlight or App Store builds. For more information, see [iOS Push Integration Tutorial](/docs/developer-guide/ios-sdk/push/basic/ios-push-integration-tutorial).
  </Warning>

  #### Geofence

  <span style={{ backgroundColor: 'rgba(212, 56, 13, 0.1)', color: '#D4380D', border: '1px solid #FFCCC7', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Known Issues</span>

  * A "symbol not found" exception (introduced in 9.23.0). Fixed in 9.23.1.

  #### Device Triggered

  <span style={{ backgroundColor: 'rgba(212, 56, 13, 0.1)', color: '#D4380D', border: '1px solid #FFCCC7', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Known Issues</span>

  * A "symbol not found" exception (introduced in 9.23.0). Fixed in 9.23.1.
</Update>

<Update label="18th February 2025" description="SDK 9.22.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards</span>

      Messaging · InApps · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Updated repo URL to [https://github.com/moengage/apple-sdk](https://github.com/moengage/apple-sdk) for faster SPM dependency fetching.

  #### Cards

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed campaigns navigation data parsing (introduced in 9.21.0).
</Update>

<Update label="27th January 2025" description="SDK 9.22.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>

      Messaging · InApps · Cards · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Improvements</span>

  * Internal improvements. No developer action required.
</Update>

<Update label="27th January 2025" description="SDK 9.22.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>

      Messaging · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added InApp InSession Attributes support. For more information, see [On Session Start](/docs/user-guide/campaigns-and-channels/in-app-message/create/create-in-app-campaign#on-session-start).

  #### Cards

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed logged in users card sync (introduced in 9.21.0).

  #### InApp

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added InApp InSession Attributes support. For more information, see [On Session Start](/docs/user-guide/campaigns-and-channels/in-app-message/create/create-in-app-campaign#on-session-start).

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed a crash that occurred when switching App IDs at runtime (reinitializing the SDK with a different App ID while the app is running). This fix only applies to apps that switch App IDs at runtime; apps using a single, fixed App ID are not affected.
</Update>

<Update label="7th January 2025" description="SDK 9.21.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RichNotification</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence</span>

      Messaging · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added APIs for mParticle integration. For more information, refer [here](https://partners.moengage.com/hc/en-us/articles/32950769289108-iOS-Kit-Integration).
  * Added SDK feature adoption tracking.

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Improvements</span>

  * Internal improvements. No developer action required.

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed Config API `log_level` parsing.

  #### Inbox

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Improvements</span>

  * Internal improvements. No developer action required.

  #### Cards

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Improvements</span>

  * Internal improvements. No developer action required.

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed images getting trimmed in Illustration Cards.

  #### InApp

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Improvements</span>

  * Internal improvements. No developer action required.

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed Bottom margin issue in Nudges.

  #### RichNotification

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Improvements</span>

  * Internal improvements. No developer action required.

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed the random crash seen due to memory limit.

  #### Geofence

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Improvements</span>

  * Internal improvements. No developer action required.
</Update>

<Update label="18th November 2024" description="SDK 9.20.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>

      InApps · Messaging · Cards · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Removed debug symbols from frameworks (introduced in 9.18.0).
</Update>

<Update label="26th September 2024" description="SDK 9.20.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Messaging</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>

      Cards · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed integer in timestamp/date based trigger conditions not working.
  * Fixed the issue where Tablet device model is tracked as MOBILE.

  #### InApp

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added JSON Object support in campaign trigger condition evaluator.
</Update>

<Update label="5th September 2024" description="SDK 9.19.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RichNotification</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Device Triggered</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence</span>

      Messaging · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added support for provisional push.
  * Added push opt-in device attribute and events tracking.

  #### Cards

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added Cards fetch on login support.

  #### InApp

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Multiple self-handled InApp support.
</Update>

<Update label="1st August 2024" description="SDK 9.18.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>

      InApps · Messaging · Cards · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### All Modules

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed SPM package resolution.
</Update>

<Update label="31st July 2024" description="SDK 9.18.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence</span>

      InApps · Messaging · Cards · Inbox · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Improvements</span>

  * Internal improvements. No developer action required.

  <span style={{ backgroundColor: 'rgba(212, 56, 13, 0.1)', color: '#D4380D', border: '1px solid #FFCCC7', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Breaking Changes</span>

  * Deprecated SDK provided SSL Pinning in favour of OS provided one.

  #### Geofence

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Geofence API will be blocked, if data tracking is opted out.
</Update>

<Update label="12th June 2024" description="SDK 9.17.5">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApps</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RichNotification</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RealTimeTrigger</span>

      Messaging
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added JSON object support to user attributes.
  * Handled environment updates with the same installation.

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed crash by handling data race when the application comes to foreground.
  * Notification impression not tracked after app update.
  * Fixed tracked object attribute duplication.
  * Reset user completion handler not invoked.

  #### InApp, Cards, Geofence, RichNotification, Inbox, RealTimeTrigger

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Handled environment updates with the same installation.

  #### InApp

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * InApp touch navigates to parent controller.
</Update>

<Update label="21st May 2024" description="SDK 9.17.4">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence</span>

      Messaging · Cards · Inbox · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added support of Array in trigger-based InApps.

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed geofence enabled migration with encryption.

  #### InApp

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed SwiftUI reference crash on iOS 12.

  #### Geofence

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed the API issue that caused geofence campaigns to not be displayed.
  * Fixed hang caused with CLLocationManager.
</Update>

<Update label="16th May 2024" description="SDK 9.17.3">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>

      InApps · Messaging · Cards · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added DC-06 support.

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed where notification received event was tracked when SDK was disabled.
  * Fixed push token migration from 7.x version.
</Update>

<Update label="2nd May 2024" description="SDK 9.17.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox</span>

      Messaging · Cards · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed migration crash from 8.2.0 to 9.17.0.
  * Fixed the issue where push token was not being sent in API call when app group id is missing.
  * Fixed the issue where API call is made when SDK is disabled.
  * Fixed the issue where ReInstall was not getting tracked.

  #### InApp

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed non-intrusive InApp breaking with tabbar.

  #### Inbox

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Improvements</span>

  * Internal optimization to handle the inbox storage.
</Update>

<Update label="18th April 2024" description="SDK 9.17.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>

      Messaging · Cards · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added support to provide optional deep link callback to MoEngageInAppNativeDelegate protocol via MoEngageInAppConfig.

  #### InApp

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added support to provide optional deep link callback to MoEngageInAppNativeDelegate protocol via MoEngageInAppConfig.

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed type name collision.

  <span style={{ backgroundColor: 'rgba(212, 56, 13, 0.1)', color: '#D4380D', border: '1px solid #FFCCC7', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Breaking Changes</span>

  * MoEngageInAppNativeDelegate protocol where MoEngageInAppAction is replaced with MoEngageInAppNavigationAction.

  | Then                                                                                                                                                                                       | Now                                                                                                                                                                                                  |
  | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | `func inAppClicked(withCampaignInfo inappCampaign: MoEngageInAppCampaign, andNavigationActionInfo navigationAction: MoEngageInAppAction, forAccountMeta accountMeta: MoEngageAccountMeta)` | `func inAppClicked(withCampaignInfo inappCampaign: MoEngageInAppCampaign, andNavigationActionInfo navigationAction: MoEngageInAppNavigationAction, forAccountMeta accountMeta: MoEngageAccountMeta)` |

  *`navigationAction.screenName` is dropped from MoEngageInAppAction. Instead use `navigationAction.navigationUrl` of MoEngageInAppNavigationAction.*
</Update>

<Update label="8th April 2024" description="SDK 9.17.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RichNotification</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RealTimeTrigger</span>

      Messaging
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added Intrusive InApp support for tvOS.

  #### InApp

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added support for Non-Intrusive InApps.
</Update>

<Update label="21st March 2024" description="SDK 9.16.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox</span>

      InApps · Messaging · Cards · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### Core & Inbox

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed app rejection issue due to privacy manifest.
</Update>

<Update label="18th March 2024" description="SDK 9.16.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards</span>

      Messaging · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added AND support in inApp trigger-campaign evaluation.
  * Provided callback when force logout is completed.
  * Added tvOS platform identifier changes.
  * Removed linking to AdSupport by default. AdSupport and AppTrackingTransparency need to be linked by app target for IDFA tracking.

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed the issue where session start was not tracked in some cases.
  * Fixed crash in network session delegate.

  #### InApp

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Dismiss inApp on context change.
  * Added tvOS platform identifier changes.
  * Added AND support in inApp trigger-campaign evaluation.

  #### Cards

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added tvOS platform identifier changes.
</Update>

<Update label="7th March 2024" description="SDK 9.16.1 (InApp)">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>

      Core · Cards · Messaging · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### InApp

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added support for Non-Intrusive InApps.

  <span style={{ backgroundColor: 'rgba(212, 56, 13, 0.1)', color: '#D4380D', border: '1px solid #FFCCC7', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Breaking Changes</span>

  * Removed support for existing embedded nudges.

  **List of removed APIs:**

  * `getNudgeView(completionBlock: @escaping NudgeCreationCompletionBlock)`
  * `getNudgeView(forAppId appId: String? = nil, completionBlock: @escaping NudgeCreationCompletionBlock)`
  * `nudgeCampaignShown(_ campaignInfo: MoEngageInAppCampaign?)`
  * `nudgeCampaignShown(_ campaignInfo: MoEngageInAppCampaign?, forAppId appId: String? = nil)`
</Update>

<Update label="27th February 2024" description="SDK 9.16.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RichNotification</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RealTimeTrigger</span>

      Messaging
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  <span style={{ backgroundColor: 'rgba(212, 56, 13, 0.1)', color: '#D4380D', border: '1px solid #FFCCC7', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Breaking Changes</span>

  | Then                          | Now                                                                                                 |
  | :---------------------------- | :-------------------------------------------------------------------------------------------------- |
  | `sdkConfig.enableLogs = true` | `sdkConfig.consoleLogConfig = MoEngageConsoleLogConfig(isLoggingEnabled: true, loglevel: .verbose)` |

  #### InApp

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added support for Non-Intrusive InApps.
</Update>

<Update label="9th February 2024" description="SDK 9.15.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards</span>

      Messaging · Inbox · Geofence · RichNotification · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed network client leaking.

  #### InApp

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed HTML InApps leaking.

  #### Cards

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed cards page leaking.
</Update>

<Update label="7th February 2024" description="SDK 9.15.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RichNotification</span>

      InApp · Cards · Messaging · Inbox · Geofence · RealTimeTrigger
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed crash in decryption.
  * Fixed the extra new line rendering in notification.

  #### RichNotification

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed the extra new line rendering.
</Update>

<Update label="23rd January 2024" description="SDK 9.15.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>All Modules</span>
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
      * tvOS: 11.0
    </Card>
  </CardGroup>

  #### All Modules

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Added Privacy manifest file for XCFramework.
  * Added Code signature support for XCFramework.

  #### Cards

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed memory leak with Cards screen.
</Update>

<Update label="30th November 2023" description="Core 9.14.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.14.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 4.13.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards 4.13.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence 5.13.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RichNotification 7.13.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox 2.13.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RealTimeTrigger 2.13.0</span>
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(0, 135, 103, 0.1)', color: '#008767', border: '1px solid #B5F5EC', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>What's New</span>

  * Updated hashing algorithm usages to SHA256.

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Handled removing of invalid value from an array of user attributes and parsing the rest.
  * Fixed redirection URLs being percent encoded.
  * Bug fix for processing notifications action for Screen-Navigation from Inbox (Notification Center) not behaving the same in SDK version 9.xx as it used to be in 7.xx series.

  #### InApp, Cards, RichNotification

  * Updated hashing algorithm usages to SHA256.

  #### Geofence, Inbox, RealTimeTrigger

  * Updated the dependency to MoEngage-iOS-SDK 9.14.0.
</Update>

<Update label="16th November 2023" description="InApp/Cards 4.12.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 4.12.1</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards 4.12.1</span>
    </Card>

    <Card title="Dependencies">
      * Core SDK: 9.13.0
    </Card>
  </CardGroup>

  #### InApp

  * Added self-handled inapps for tvOS.

  #### Cards

  * Added self-handled cards for tvOS.
</Update>

<Update label="15th November 2023" description="Core 9.13.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.13.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 4.12.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards 4.12.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence 5.12.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RichNotification 7.12.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox 2.12.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RealTimeTrigger 2.12.0</span>
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  * Added notification impression and click API.
  * Cards in first app.

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed the common logs issue.
  * Incorrect model\_name tracked for iPhone 14 Pro.

  #### InApp

  * Added self-handled inapps for tvOS.
  * Added OR condition support for trigger events.

  #### Cards

  * Added self-handled cards for tvOS.

  #### Geofence

  * Updated the dependency to MoEngage-iOS-SDK 9.13.0.

  #### RichNotification

  * Added notification impression and click API.

  #### Inbox

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Notifications are not listed in the inbox when app is in background and storage encryption is enabled.
  * Fixed the clicked state for inbox message when the notification is clicked from terminate state.

  #### RealTimeTrigger

  * Updated the dependency to MoEngage-iOS-SDK 9.13.0.
</Update>

<Update label="26th September 2023" description="Core 9.12.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.12.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 4.11.2</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards 4.11.1</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence 5.11.1</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RichNotification 7.11.1</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox 2.11.1</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RealTimeTrigger 2.11.1</span>
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed `setImage` and `setGIF` extension methods name collision.

  #### Cards

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed `setImage` and `setGIF` extension methods name collision.
  * Fixed invalid gif data not falling back to static image.
  * Fixed text styles getting duplicated in Card UI.
  * Updated the dependency to MoEngage-iOS-SDK 9.12.0.

  #### RichNotification

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed `setImage` and `setGIF` extension methods name collision.
  * Fixed invalid gif data not falling back to static image.
  * Fixed gif getting duplicated in carousal.
  * Updated the dependency to MoEngage-iOS-SDK 9.12.0.

  #### InApp, Geofence, Inbox, RealTimeTrigger

  * Updated the dependency to MoEngage-iOS-SDK 9.12.0.
</Update>

<Update label="19th September 2023" description="Core 9.11.3">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.11.3</span>
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  * Internal code optimizations.
</Update>

<Update label="14th September 2023" description="Core 9.11.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.11.2</span>
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  * Updated the default Gzip state.
</Update>

<Update label="12th September 2023" description="Core 9.11.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.11.1</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 4.11.1</span>
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  * Added delayed InApps support.

  #### InApp

  * Added delayed InApps support.
  * Updated the dependency to MoEngage-iOS-SDK to 9.11.1.
</Update>

<Update label="30th August 2023" description="Core 9.11.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.11.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 4.11.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards 4.11.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence 5.11.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RichNotification 7.11.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox 2.11.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RealTimeTrigger 2.11.0</span>
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  * Added GZIP Support in all API calls.
  * Internal code optimizations.

  #### InApp

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed the boolean value tracked as 0/1 in HTML InApp.
  * Fixed API failure tracked when the campaign is paused.
  * Updated the dependency to MoEngage-iOS-SDK 9.11.0.

  #### Cards

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * `getCardsForCategory` API returns all cards if the category is **All**.
  * Updated the dependency to MoEngage-iOS-SDK 9.11.0.

  #### Geofence, Inbox, RealTimeTrigger

  * Updated the dependency to MoEngage-iOS-SDK 9.11.0.

  #### RichNotification

  * Updated the dependency to MoEngage-iOS-SDK 9.11.0.
  * Internal code optimizations.
</Update>

<Update label="16th August 2023" description="Core 9.10.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.10.2</span>
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Fixed crash while serializing the JSON by removing invalid values on migration.
</Update>

<Update label="7th August 2023" description="Geofence 5.10.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence 5.10.1</span>
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
    </Card>
  </CardGroup>

  #### Geofence

  * Fixed the threading issue in geofence module by unblocking the main thread.
</Update>

<Update label="1st August 2023" description="Core 9.10.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.10.1</span>
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  * Added SSL pinning support for network requests.
</Update>

<Update label="18th July 2023" description="Core 9.10.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.10.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 4.10.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards 4.10.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence 5.10.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RichNotification 7.10.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox 2.10.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RealTimeTrigger 2.10.0</span>
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  * Added DC-100 data centre.
  * iOS breakpoint issue fix by changing the Xcode config settings.

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Handled duplicate tracking of Push-Preference.
  * Fixed API connection timeout.

  #### InApp

  * iOS breakpoint issue fix by changing the Xcode config settings.
  * Fixed crash by handling the nil value.

  #### Cards

  * Added Cards sync API and Cards delivered API.
  * iOS breakpoint issue fix by changing the Xcode config settings.

  #### Geofence, RichNotification, Inbox, RealTimeTrigger

  * iOS breakpoint issue fix by changing the Xcode config settings.
</Update>

<Update label="20th June 2023" description="Core 9.9.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.9.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 4.9.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards 4.9.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence 5.9.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RichNotification 7.9.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox 2.9.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RealTimeTrigger 2.9.0</span>
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
    </Card>
  </CardGroup>

  #### All Modules

  * iOS breakpoint issue fix by creating framework from Xcode 14.3.1.
</Update>

<Update label="16th June 2023" description="Cards 4.8.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards 4.8.1</span>
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
    </Card>
  </CardGroup>

  #### Cards

  * Added cards sync API for self-handled cards.
  * Fixed crash by returning the completion handler in main thread.
</Update>

<Update label="2nd June 2023" description="InApp 4.8.3">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 4.8.3</span>
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
    </Card>
  </CardGroup>

  #### InApp

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Handled the callback for selfHandled InApp when called before sync API.
</Update>

<Update label="31st May 2023" description="Core 9.8.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.8.2</span>
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Added integration details in Extension API call.
</Update>

<Update label="25th May 2023" description="Core 9.8.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.8.1</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 4.8.2</span>
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
    </Card>
  </CardGroup>

  #### Core

  * Adding support to track primitive arrays in UserAttributes.
  * Additional Constructor with Data Center Support.

  #### InApp

  * Fixed crash by adding null check while fetching general in-apps.
</Update>

<Update label="12th May 2023" description="InApp 4.8.1 / Inbox 2.8.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 4.8.1</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox 2.8.1</span>
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
    </Card>
  </CardGroup>

  #### InApp

  * Fixed crash due to completion handler.

  #### Inbox

  * Added RTL support for Inbox message and date.
</Update>

<Update label="4th May 2023" description="Core 9.8.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.8.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 4.8.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards 4.8.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence 5.8.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RichNotification 7.8.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox 2.8.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RealTimeTrigger 2.8.0</span>
    </Card>

    <Card title="Dependencies">
      * Swift: 5.0.0
      * iOS: 11.0
    </Card>
  </CardGroup>

  #### All Modules

  * Updated the deployment target to 11.0.
  * Added support for API and Storage Encryption.

  #### Core

  * Added MoEngageSecurity framework.
</Update>

<Update label="17th April 2023" description="Core 9.7.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.7.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 4.7.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards 4.7.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence 5.7.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RichNotification 7.7.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox 2.7.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RealTimeTrigger 2.7.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Added DC-05 support.
</Update>

<Update label="11th April 2023" description="Core 9.6.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.6.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 4.6.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards 4.6.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence 5.6.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RichNotification 7.6.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox 2.6.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RealTimeTrigger 2.6.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Added support to track `deviceType`.
  * Internal code optimization.

  #### InApp, Cards

  * Updated the dependency to MoEngage-iOS-SDK 9.6.0.
  * Internal code optimisation.
</Update>

<Update label="17th March 2023" description="Core 9.5.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.5.1</span>
    </Card>
  </CardGroup>

  #### Core

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Handled the deep link callback to **SceneDelegate** class.
  * Fixed crash due to data race condition in the Core module.
</Update>

<Update label="6th March 2023" description="Inbox 2.5.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox 2.5.1</span>
    </Card>
  </CardGroup>

  #### Inbox

  * Internal code optimization.
</Update>

<Update label="22nd February 2023" description="Core 9.5.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.5.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 4.5.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards 4.5.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence 5.5.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RichNotification 7.5.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox 2.5.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RealTimeTrigger 2.5.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Code optimization.
</Update>

<Update label="7th February 2023" description="Core 9.4.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.4.1</span>
    </Card>
  </CardGroup>

  #### Core

  * Fixed the crash when migrating from 8.2.0 to 9.x.x.
</Update>

<Update label="6th February 2023" description="Core 9.4.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.4.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 4.4.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards/Geofence/Rich/Inbox vX.4.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Code optimization.

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Handled the logic to open the URL in an external browser.
  * Fixed the crash by handling data race conditions in Messaging module.

  #### InApp

  * Code optimization.
  * Handled sms action when message contains space.
</Update>

<Update label="1st February 2023" description="InApp 4.3.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 4.3.1</span>
    </Card>
  </CardGroup>

  #### InApp

  * Fixed the validation condition to consider non-expired campaigns for displaying.
</Update>

<Update label="25th January 2023" description="Core 9.3.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.3.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 4.3.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards 4.3.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence 5.3.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Rich/Inbox/RTT vX.3.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RealTimeTrigger 2.4.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Support for `stopGeofenceMonitoring` API in Geofence module.

  #### Geofence

  * Added `stopGeofenceMonitoring` API to support stop geofence monitoring.
</Update>

<Update label="24th January 2023" description="InApp 4.2.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 4.2.2</span>
    </Card>
  </CardGroup>

  #### InApp

  * Fixed the crash by handling **NULL** in inapp timestamp.
</Update>

<Update label="20th January 2023" description="Core 9.2.3">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.2.3</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 4.2.1</span>
    </Card>
  </CardGroup>

  #### Core

  * Fixed migration crash for session and source.

  #### InApp

  * Fixed the migration crash for inapp stats.
</Update>

<Update label="11th January 2023" description="Core 9.2.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.2.2</span>
    </Card>
  </CardGroup>

  #### Core

  * Added DC-04 support.
</Update>

<Update label="6th January 2023" description="Cards 4.2.1 / 3.7.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards 4.2.1 / 3.7.1</span>
    </Card>
  </CardGroup>

  #### Cards

  * Cards clicked status is not being updated for self handled cards.
</Update>

<Update label="3rd January 2023" description="Core 9.2.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.2.1</span>
    </Card>
  </CardGroup>

  #### Core

  * Fixed the delay in deeplink callback for the custom URL scheme.
  * Handled the crash when registering for remote notifications.
</Update>

<Update label="28th December 2022" description="Core 9.2.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.2.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RichNotification 7.2.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp/Cards/Geofence vX.2.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox/RTT vX.2.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Fixed Carousel image not displaying multiple images.
  * Fixed the crash when migrating from 8.2.0 to 9.1.0.

  #### RichNotification

  * Fixed Carousel image not displaying multiple images.
</Update>

<Update label="23rd December 2022" description="Core 8.7.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 8.7.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RichNotification 6.7.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp/Cards/Geofence vX.7.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox/RTT 1.7.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Carousel image not displaying multiple images.

  #### RichNotification

  * Carousel image not displaying multiple images.
</Update>

<Update label="13th December 2022" description="Core 9.1.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.1.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 4.1.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards 4.1.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence 5.1.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RichNotification 7.1.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox 2.1.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RealTimeTrigger 2.1.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Handling the logic to discard RichLanding action if the URL does not start with `http:` or `https:`.
  * Carousel Image Order Mismatch in collapsed mode for rich notifications.

  #### InApp

  * Added dSYM file support for debugging.

  #### Cards

  * Handle sorting of self handled cards based on the pinned cards and updated time for cards.
  * Cards clicked status is not being updated for self handled cards.

  #### Geofence, Inbox, RealTimeTrigger

  * Added dSYMs files for debugging.

  #### RichNotification

  * Carousel Image Order Mismatch in collapsed mode for rich notifications.
</Update>

<Update label="12th December 2022" description="Core 8.6.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 8.6.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Sub-modules vX.6.0</span>
    </Card>
  </CardGroup>

  #### All Modules

  * Added dSYMs files for debugging.
</Update>

<Update label="12th December 2022" description="Core 8.5.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 8.5.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 3.5.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards 3.5.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence 4.5.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RichNotification 6.5.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox/RTT 1.5.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Handled Carousel Image Order Mismatch in collapsed mode for rich notifications.

  #### Cards

  * Handle sorting of self handled cards based on the pinned cards and updated time for cards.
  * Cards clicked status is not being updated for self handled cards.

  #### RichNotification

  * Handled Carousel Image Order Mismatch in collapsed mode for rich notifications.
</Update>

<Update label="8th December 2022" description="InApp 4.0.1 / 3.4.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 4.0.1 / 3.4.2</span>
    </Card>
  </CardGroup>

  #### InApp

  * Fixed duplicate events being tracked for inapps.
</Update>

<Update label="7th December 2022" description="Core 9.0.0 — Major Release">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 9.0.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 4.0.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Sub-modules vX.0.0</span>
    </Card>
  </CardGroup>

  <span style={{ backgroundColor: 'rgba(212, 56, 13, 0.1)', color: '#D4380D', border: '1px solid #FFCCC7', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Breaking Changes</span>

  * Removed optional modules from MoEngageSDK target.
  * Updated `disableBadgeReset` method of `MoEngageSDKMessaging` to take Bool as its parameter.
  * All the classes and modules are prefixed with **MoEngage**.
  * Renamed **MOCore** to **MoEngageCore** for iPhone SDK and tvOS SDK.

  #### Core

  <span style={{ backgroundColor: 'rgba(212, 107, 8, 0.1)', color: '#D46B08', border: '1px solid #FFE58F', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Fixes</span>

  * Badge is not getting reset when the disableBadgeReset is set as false.
  * Fixed test inapp api getting called multiple times on clicking the test inapp push notification.

  #### InApp

  * Migrated **MoEngageInApp**, **MoEngageInAppCampaign**, **MoEngageInAppSelfHandledCampaign**, **MoEngageInAppAction**, **MoEngageInAppNativeDelegate** from Objective-C to Swift.
  * Added API documentation.
  * All the classes and modules are prefixed with **MoEngage**.
  * Fixed inapp getting auto dismissed before the auto dismiss interval expires.

  #### Sub-modules

  * All the classes and modules are prefixed with **MoEngage**.
</Update>

<Update label="1st December 2022" description="Core 8.4.3">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 8.4.3</span>
    </Card>
  </CardGroup>

  #### Core

  * Added DC-04 support.
</Update>

<Update label="30th November 2022" description="Inbox 1.4.1 / RTT 1.4.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox 1.4.1</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RealTimeTrigger 1.4.1</span>
    </Card>
  </CardGroup>

  #### Inbox

  * Handled removing of duplicate inbox messages when received via sync API.
  * Updated the logic for persistent storage of inbox messages.

  #### RealTimeTrigger

  * Handled removing of duplicate RTT campaigns when received via sync API.
</Update>

<Update label="17th November 2022" description="Core 8.4.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 8.4.2</span>
    </Card>
  </CardGroup>

  #### Core

  * Updated AppDelegate swizzler to handle crash while registering for remote notifications.
  * Handled removing of **infinity** and **NaN** from the payload on migration.
</Update>

<Update label="11th November 2022" description="Cards 3.4.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards 3.4.2</span>
    </Card>
  </CardGroup>

  #### Cards

  * Handled the "All" category in Cards UI to be hidden by default for landscape mode.
</Update>

<Update label="9th November 2022" description="Core 8.4.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 8.4.1</span>
    </Card>
  </CardGroup>

  #### Core

  * Fixed crash while passing **infinity** and **NaN** to SDK via user attributes and track event properties.
  * Added support to track userAttribute of type **Float**.
</Update>

<Update label="28th October 2022" description="Cards 3.4.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards 3.4.1</span>
    </Card>
  </CardGroup>

  #### Cards

  * Handled the "All" category in Cards UI to be hidden by default.
</Update>

<Update label="21st October 2022" description="InApp 3.4.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 3.4.1</span>
    </Card>
  </CardGroup>

  #### InApp

  * Added support to take safeArea inset for Applications with SceneDelegate.
</Update>

<Update label="18th October 2022" description="Core 8.4.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 8.4.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 3.4.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Sub-modules vX.4.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Added MoEngageSDK Initialization method with SDK State.
  * Fixed handling of notification observers to avoid runtime crashes.
  * Added exception handling to fix the crashes in a few scenarios.

  #### InApp

  * Added support to take the custom inset for InApp nudge in `MOSDKConfig` using `MoEngageInAppConfig` class.
</Update>

<Update label="3rd October 2022" description="RichNotification 6.3.2 / RTT 1.3.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RichNotification 6.3.2</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RealTimeTrigger 1.3.1</span>
    </Card>
  </CardGroup>

  #### RichNotification & RealTimeTrigger

  * Handled updating of badge count for Notifications.
</Update>

<Update label="22nd September 2022" description="Core 8.3.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 8.3.1</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox 1.3.1</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 3.3.1</span>
    </Card>
  </CardGroup>

  #### Core

  * Added support for `setUserAttributeISODate` in the ISO format `yyyy-MM-dd'T'HH:mm:ss.SSS'Z'`.
  * Added API `setDateOfBirthInISO` to track Date of birth in ISO format.
  * Added API `MoESdkStateHelper.isSDKInitialized` to check if SDK is initialised.

  #### Inbox

  * Added completionHandler for API `markInboxNotificationClick`, `removeInboxMessage` and `removeInboxMessages`.
  * On calling `trackInboxClick`, the notification will be marked as read.

  #### InApp

  * Handled dataType mismatch in `trackDismiss` of HTML InApp.
</Update>

<Update label="1st August 2022" description="RichNotification 6.3.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RichNotification 6.3.1</span>
    </Card>
  </CardGroup>

  #### RichNotification

  * Handled downloading of resources for Basic notification.
</Update>

<Update label="20th July 2022" description="Core 8.3.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 8.3.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp/Inbox/RTT vX.3.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RichNotification 6.3.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards 3.3.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence 4.3.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Fixed multithreading issue in SDK, which led to crashes in few cases.
  * Added API `MoESdkStateHelper.isSDKEnabled` to fetch current state of the SDK.

  #### RichNotification

  * Updated the dependency to MoEngage-iOS-SDK 8.3.0.
  * Campaign stats tracking was missed in some cases from the Notification Service extension.

  #### Cards

  * Updated the dependency to MoEngage-iOS-SDK 8.3.0.
  * Fixed issue in UIRefreshControl.
</Update>

<Update label="22nd June 2022" description="Core 8.2.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 8.2.1</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 3.2.1</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox 1.2.1</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RealTimeTrigger/Rich/Geofence vX.2.1</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards 3.2.1</span>
    </Card>
  </CardGroup>

  #### Core

  * Fixed the lldb issue when integrating MoEngage-iOS-SDK to Swift application.
  * Removed public init method for UIColor.

  #### InApp

  * Fixed the lldb issue when integrating MoEngage-iOS-SDK to Swift application.

  #### Inbox

  * Fixed the lldb issue when integrating MoEngage-iOS-SDK to Swift application.
  * Handled customisation of `navigationBarColor` when pushing the InboxController.

  #### Cards

  * Fixed the lldb issue when integrating MoEngage-iOS-SDK to Swift application.
  * Handled the customisation of `cardSelectionTintColor` and `navigationBarColor` when presenting and pushing the CardsController.
</Update>

<Update label="15th June 2022" description="Core 7.2.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 7.2.2</span>
    </Card>
  </CardGroup>

  #### Core

  * Handled removing of UniqueID from storage on resetting the user.
</Update>

<Update label="7th June 2022" description="Core 8.2.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 8.2.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 3.2.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox 1.2.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RealTimeTrigger 1.2.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>RichNotification 6.2.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards 3.2.0</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence 4.2.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Updated the framework name from MoEngage to **MoEngageSDK**.
  * RealTimeTrigger and Inbox feature is separated from MoEngageSDK. Hence these modules must be integrated explicitly.
  * Deprecated existing UserAttribute methods.
  * Provided Swift Package manager support to install the SDK.

  #### InApp

  * Changes to support App version, SDK version and platform in the trigger condition of InApps.
  * Updated the dependency to MoEngage-iOS-SDK 8.2.0.
  * Renamed the module to **MoEngageInApps**.
  * Provided Swift Package manager support to install the SDK.
  * Fixed the parsing error in InApp payload due to datatype mismatch.

  #### Other Modules

  * Updated the dependency to MoEngage-iOS-SDK 8.2.0.
  * Renamed modules (e.g., **MoEngageRichNotification**, **MoEngageCards**, **MoEngageGeofence**).
  * Provided Swift Package manager support to install the SDK.
  * Breaking Inbox and RTT from the main SDK.
</Update>

<Update label="14th April 2022" description="InApp 2.2.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 2.2.1</span>
    </Card>
  </CardGroup>

  #### InApp

  * Fixed the appearance of thin grey line above the label in the InApp when displayed in larger screen devices.
</Update>

<Update label="11th February 2022" description="Core 7.2.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 7.2.1</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards 2.2.1</span>
    </Card>
  </CardGroup>

  #### Core

  * Handled SDK initialisation from background thread.

  #### Cards

  * Handled crash in CardsController in 12.4 OS version.
</Update>

<Update label="31st January 2022" description="Core 7.2.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 7.2.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Added **Capacitor** integration type.
  * MORichNotification dependency updated to `~> 5.3.0` (Fixed height for the message in the notification).
  * InApp, Cards dependency updated to `~> 2.2.0`.
  * Geofence dependency updated to `~> 3.2.0`.
</Update>

<Update label="29th December 2021" description="Core 7.1.4">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 7.1.4</span>
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 2.1.2</span>
    </Card>
  </CardGroup>

  #### Core & InApp

  * SDK version tracking fix, version was being tracked incorrectly in a few cases.
</Update>

<Update label="24th December 2021" description="InApp 2.1.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 2.1.1</span>
    </Card>
  </CardGroup>

  #### InApp

  * Handled multiline text in text widget getting clipped in some of the devices.
</Update>

<Update label="2nd December 2021" description="Core 7.1.3">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 7.1.3</span>
    </Card>
  </CardGroup>

  #### Core

  * Changed the implementation to determine SDK version, as in a few instances App Version was getting tracked as SDK version.
</Update>

<Update label="29th October 2021" description="Core 7.1.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 7.1.2</span>
    </Card>
  </CardGroup>

  #### Core

  * Handled warning in **MoEngageCore** due to missing nullability type specifier.
</Update>

<Update label="23rd September 2021" description="Core 7.1.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 7.1.1</span>
    </Card>
  </CardGroup>

  #### Core

  * MORichNotification dependency updated to `~> 5.2.0`.
  * Changes in custom Push Template implementation to have layout in-line with iOS 15.0 standard notifications UI.
</Update>

<Update label="31st August 2021" description="Core 7.1.0 — XCFramework">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 7.1.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Released SDK modules as **XCFramework**.
  * HTML InApp Support Added.
  * Delivery Funnel implementation for InApps.
  * Handling of Control Group Error in InApps.
  * Campaign Context tracking for in-app Stats.
  * Added a method to detect App Launches due to MoEngage silent push notifications.
</Update>

<Update label="5th August 2021" description="Core 7.0.5">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 7.0.5</span>
    </Card>
  </CardGroup>

  #### Core

  * Image resources, Deep links, and Richlanding URLs are now percentage encoded if not already and then processed.
</Update>

<Update label="6th April 2021" description="Core 7.0.3">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 7.0.3</span>
    </Card>
  </CardGroup>

  #### Core

  * Fixed a multithreading issue in Analytics Module, which led to crashes in a few cases.
</Update>

<Update label="25th February 2021" description="Core 7.0.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 7.0.2</span>
    </Card>
  </CardGroup>

  #### Core

  * Support for User Attribute Blacklisting with the remote config.
</Update>

<Update label="18th January 2021" description="Core 7.0.0 / 7.0.1 — Dropped iOS 9">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 7.0.0 / 7.0.1</span>
    </Card>
  </CardGroup>

  #### Core

  * `MOSDKConfig` class introduced to initialize the SDK with new initialization methods.
  * Remote Logger added for debugging.
  * API Encryption option provided in the SDK.
  * SDK UserDefault keys saved in a separate suite and not in standard User Defaults.
  * SDK API Hosts are updated, configure the same by setting appropriate Data Center in `MOSDKConfig`.
  * SDK to support iOS 10.0 and above, iOS 9.\* support dropped.
  * Internal optimizations.
</Update>

<Update label="29th December 2020" description="Core 6.3.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 6.3.1</span>
    </Card>
  </CardGroup>

  #### Core

  * Weak linked AppTrackingTransparency framework.
</Update>

<Update label="17th December 2020" description="Core 6.3.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 6.3.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Enable/Disable SDK methods added to unblock/block all SDK features.
</Update>

<Update label="30th November 2020" description="Core 6.2.5">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 6.2.5</span>
    </Card>
  </CardGroup>

  #### Core

  * Bugfix: One of the SDK background tasks while syncing the data was getting terminated prematurely.
</Update>

<Update label="24th November 2020" description="Cards 6.2.4">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards 6.2.4</span>
    </Card>
  </CardGroup>

  #### Cards

  * Changes to support **MoEngageCards** \[Version: **1.1.0**] Module.
  * `BUILD_LIBRARY_FOR_DISTRIBUTION` enabled for **MOCards**.
  * **MOCards** class renamed to **MoEngageCards**.
</Update>

<Update label="12th November 2020" description="Cards 6.2.3">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards 6.2.3</span>
    </Card>
  </CardGroup>

  #### Cards

  * Fixes for including the simulator module maps for **MoEngageCards** \[Version: **1.0.2**] Module.
</Update>

<Update label="2nd November 2020" description="Core 6.2.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 6.2.2</span>
    </Card>
  </CardGroup>

  #### Core

  * Bugfix: Universal Links was taking the user to Safari, instead of processing it inside the app.
  * Xcode 12 Build settings changes to exclude arm64 architecture for Simulator.
</Update>

<Update label="6th September 2020" description="Core 6.2.0 / 6.2.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 6.2.0 / 6.2.1</span>
    </Card>
  </CardGroup>

  #### Core

  * Support for **Push Templates** added (Simple Image Carousel & Stylized Basic).
  * Inbox support with the same app group id for multiple apps supported.
</Update>

<Update label="2nd July 2020" description="Cards 6.1.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Cards 6.1.0</span>
    </Card>
  </CardGroup>

  #### Cards

  * Support for **Cards Campaign** added.
  * InApp exit animation was not being applied correctly.
  * Fixed an intermittent crash occurring in MONetworkUtils while determining the SDK Version.
</Update>

<Update label="18th May 2020" description="Core 6.0.3">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 6.0.3</span>
    </Card>
  </CardGroup>

  #### Core

  * Bugfix: Universal Links were not considered for Source tracking in Analytics Module.
</Update>

<Update label="28th March 2020" description="Core 6.0.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 6.0.2</span>
    </Card>
  </CardGroup>

  #### Core

  * Fixed an issue where weak linking of **MoEngageInApp** and **MOGeofence** was not working, which was causing an issue while submitting the build to AppStore.
</Update>

<Update label="18th March 2020" description="Core 6.0.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 6.0.1</span>
    </Card>
  </CardGroup>

  #### Core

  * Support for India cluster.
</Update>

<Update label="21st February 2020" description="Core 6.0.0 — Dropped iOS 8">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 6.0.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Removed support for iOS 8.
  * SDK rearchitected and split into 5 modules: **MoEngageCore**, **MOAnalytics**, **MOMessaging**, **MOInApp** and **MoEngage** (Umbrella).
  * InApp Module revamped and integrated separately.
  * Initialization methods are deprecated.
  * `MOPayloadBuilder` is deprecated, use `MOProperties` for tracking events.
  * Added new methods to track date event and user attributes using ISO date string.
</Update>

<Update label="16th December 2019" description="Core 5.2.7 / 5.2.6">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 5.2.7 / 5.2.6</span>
    </Card>
  </CardGroup>

  #### Core

  * Bugfix: Universal Links were not considered for Source tracking in Analytics Module.
  * Minor optimizations.
</Update>

<Update label="30th October 2019" description="Core 5.2.5">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 5.2.5</span>
    </Card>
  </CardGroup>

  #### Core

  * Changes in data tracking where the event time is tracked in the Gregorian calendar irrespective of user calendar settings.
</Update>

<Update label="23rd October 2019" description="Core 5.2.3">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 5.2.3</span>
    </Card>
  </CardGroup>

  #### Core

  * Fixed a crash occurring while trying to persist tracked user attributes.
</Update>

<Update label="22nd October 2019" description="Core 5.2.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 5.2.2</span>
    </Card>
  </CardGroup>

  #### Core

  * Session and Source tracking enabled by default in SDK.
</Update>

<Update label="14th October 2019" description="Core 5.2.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 5.2.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Bugfix: Session expiry check was failing whenever the app was opened from terminated state.
  * Bugfix: Notification Clicks were not processed from terminated state (fix for versions 5.0.0 to 5.1.0).
</Update>

<Update label="1st October 2019" description="Core 5.1.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 5.1.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Bugfix: Session start time was tracked in an incorrect format.
</Update>

<Update label="4th September 2019" description="Core 5.0.3">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 5.0.3</span>
    </Card>
  </CardGroup>

  #### Core

  * Added a main thread check for AppDelegate Swizzling and launch option processing.
</Update>

<Update label="30th August 2019" description="Core 5.0.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 5.0.2</span>
    </Card>
  </CardGroup>

  #### Core

  * Bugfix: InApp Show Only in Screen was failing, it is fixed.
</Update>

<Update label="8th August 2019" description="Core 5.0.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 5.0.1</span>
    </Card>
  </CardGroup>

  #### Core

  * Session start time is tracked in the GMT timezone instead of the device time zone.
</Update>

<Update label="26th July 2019" description="Core 5.0.0 — Swizzling Proxy">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 5.0.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Session and Source tracking is possible in the SDK.
  * **AppDelegate Swizzling** implemented. Can be disabled via `MoEngageAppDelegateProxyEnabled` in **Info.plist**.
  * Removed support for previously deprecated methods.
</Update>

<Update label="4th January 2019" description="Inbox 4.4.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox 4.4.0</span>
    </Card>
  </CardGroup>

  #### Inbox

  * Inbox module revamp.
  * Notifications synced from Notification Service Extension using `MORichNotification` (version 3.0.0).
  * Internal changes for secure SDK API calls.
</Update>

<Update label="10th October 2018" description="Geofence 4.3.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence 4.3.0</span>
    </Card>
  </CardGroup>

  #### Geofence

  * Geofence Module separated from Core SDK.
</Update>

<Update label="4th October 2018" description="Core 4.2.4">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 4.2.4</span>
    </Card>
  </CardGroup>

  #### Core

  * Bug Fix: Universal links when sent as deep links were not working.
</Update>

<Update label="13th August 2018" description="Core 4.2.3">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 4.2.3</span>
    </Card>
  </CardGroup>

  #### Core

  * Real-time trigger bugfix for wrong payload in offline scenario for personalization.
</Update>

<Update label="26th July 2018" description="Inbox 4.2.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox 4.2.2</span>
    </Card>
  </CardGroup>

  #### Inbox

  * Delegate method `inboxCellSelectedWithPushDict:` provided for Push Notification Payload on clicking inbox notification.
  * Added `shouldProcessNotificationActions` to MOInboxViewController.
</Update>

<Update label="24th May 2018" description="GDPR 4.1.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>GDPR 4.1.0</span>
    </Card>
  </CardGroup>

  #### GDPR

  * SDK changes to make it GDPR compliant.
  * Provided opt-out methods for tracking, push, and in-app.
  * Added `resetUserWithCompletionBlock:` and `flushWithCompletionBlock:`.
</Update>

<Update label="23rd April 2018" description="Dynamic Framework 4.0.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Dynamic Framework 4.0.0</span>
    </Card>
  </CardGroup>

  #### Dynamic Framework

  * SDK converted from static library to **dynamic framework**.
  * Implementation of Real-Time Triggers.
</Update>

<Update label="14th March 2018" description="Core 3.9.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 3.9.2</span>
    </Card>
  </CardGroup>

  #### Core

  * Issue fixed where SDK crashed due to calling sync in multiple threads.
  * Added `dismissRichLandingWebViewControllerWithAnimation:`.
</Update>

<Update label="23rd February 2018" description="InApp 3.9.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 3.9.1</span>
    </Card>
  </CardGroup>

  #### InApp

  * Bugfix: Black tint view added on screen in case of Self Handled Smart Trigger InApp.
</Update>

<Update label="1st February 2018" description="Core 3.9.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 3.9.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Conditional Action supported in inApp for rating template.
  * Periodic Flush of events introduced.
  * Tracking of Device Model implemented.
</Update>

<Update label="26th December 2017" description="Core 3.8.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 3.8.1</span>
    </Card>
  </CardGroup>

  #### Core

  * Fixed issue where calling `resetUser` simultaneously with `syncNow` caused a crash.
</Update>

<Update label="22nd November 2017" description="Core 3.8.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 3.8.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Provided `setAlias:` method to update UNIQUE\_ID.
  * `setUserUniqueID:` now resets current user if a new value is provided.
</Update>

<Update label="13th November 2017" description="Core 3.7.3">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 3.7.3</span>
    </Card>
  </CardGroup>

  #### Core

  * Provided `redirectDataToRegion:` for EU servers.
</Update>

<Update label="2nd November 2017" description="Inbox 3.7.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox 3.7.2</span>
    </Card>
  </CardGroup>

  #### Inbox

  * Provided method to track inbox notification clicks.
  * Removed Show Only In Screen check for Test InApp.
</Update>

<Update label="1st November 2017" description="Inbox 3.7.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox 3.7.1</span>
    </Card>
  </CardGroup>

  #### Inbox

  * Provided methods to mark an inbox notification as read.
  * Added additional debug logs for InApp.
</Update>

<Update label="27th September 2017" description="Core 3.7.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 3.7.0</span>
    </Card>
  </CardGroup>

  #### Core

  * SDK supports blacklisting of events to be tracked in the app.
</Update>

<Update label="6th September 2017" description="Inbox 3.6.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox 3.6.0</span>
    </Card>
  </CardGroup>

  #### Inbox

  * Inbox notifications have an expiry value (default 30 days).
  * Locale tracking is no longer default; use `trackLocale` method.
</Update>

<Update label="17th August 2017" description="Core 3.5.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 3.5.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Fixed Locale tracking issue in iOS 9 and below.
  * Fixed delay in processing deep-linking when push clicked in foreground.
</Update>

<Update label="12th July 2017" description="Inbox 3.4.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox 3.4.1</span>
    </Card>
  </CardGroup>

  #### Inbox

  * `removeInboxMessages` method provided to delete all messages.
  * Fixed a crash that occurred while showing self-handled inApp.
</Update>

<Update label="1st June 2017" description="Core 3.4.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 3.4.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Device Locale tracked through SDK.
  * Fixed bug where self-handled inApp data wasn't passed in test pushes.
  * Additional parameters for self-handled inApp: expiry, max times, autoDismiss, persistent.
</Update>

<Update label="17th February 2017" description="Core 3.3.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 3.3.0</span>
    </Card>
  </CardGroup>

  <span style={{ backgroundColor: 'rgba(212, 56, 13, 0.1)', color: '#D4380D', border: '1px solid #FFCCC7', padding: '2px 10px', borderRadius: '12px', fontSize: '0.85em', fontWeight: 'bold' }}>Breaking Changes</span>

  * App Lifecycle methods deprecated; handled internally now.
  * Syncing optimization for tracked events.
  * Separate methods for default User Attributes (EmailID, User Name, etc).
</Update>

<Update label="9th January 2017" description="InApp 3.2.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 3.2.2</span>
    </Card>
  </CardGroup>

  #### InApp

  * Fixed bug locating MOInbox.storyboard as framework.
  * InApp permission/settings handling efficiency.
</Update>

<Update label="24th November 2016" description="Core 3.2.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 3.2.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Enabled tracking of push delivery via Notification Extension and AppGroups.
  * Enabled Test InApp foreground receipt.
  * Media-attachment support for iOS Rich Notifications in Inbox.
</Update>

<Update label="24th October 2016" description="InApp 3.1.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 3.1.0</span>
    </Card>
  </CardGroup>

  #### InApp

  * Fixed bug where InApp was shown over the keyboard.
  * Improved logging mechanism.
</Update>

<Update label="4th October 2016" description="UserNotifications 3.0.0 — iOS 10">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>UserNotifications 3.0.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Using **UserNotifications** framework for iOS 10.
  * Changes for supporting Notification Actions in iOS 10.
  * `MORichNotifications` added to handle rich notifications in extensions.
</Update>

<Update label="5th September 2016" description="Core 2.4.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 2.4.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Supporting Nudges for testing InApps.
  * Inbox module supports dictionary alerts.
  * Bugfix: InApp can be shown along with Nudges.
  * Handle Rich Landing from push fixes.
</Update>

<Update label="18th August 2016" description="Core 2.3.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 2.3.2</span>
    </Card>
  </CardGroup>

  #### Core

  * RichLanding content shown in `SFSafariViewController` (iOS 9+).
  * Tracking change in Push Preference status event.
  * Unity iOS Support included.
</Update>

<Update label="30th June 2016" description="InApp 2.3.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>InApp 2.3.1</span>
    </Card>
  </CardGroup>

  #### InApp

  * Bug Fix to track campaign ID with events tracked in InApps.
</Update>

<Update label="10th June 2016" description="Core 2.3.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 2.3.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Unified App for both testing and production.
  * Separate methods for SDK initialization to differentiate test (DEBUG) vs production (RELEASE) devices.
</Update>

<Update label="18th May 2016" description="Core 2.2.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 2.2.2</span>
    </Card>
  </CardGroup>

  #### Core

  * Bugfix for deep linking.
</Update>

<Update label="16th May 2016" description="Core 2.2.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 2.2.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Notification Categories for action buttons.
  * SDK handles Deeplinking, Coupon Code, and Rich landing by default.
  * Support for custom notification sounds.
</Update>

<Update label="30th March 2016" description="Core 2.1.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 2.1.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Minor bug fixes.
</Update>

<Update label="14th March 2016" description="Core 2.0.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 2.0.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Introduced **in-app Nativ**.
  * Old callbacks removed; new callback structure introduced.
  * Self Handled in-apps support.
</Update>

<Update label="7th March 2016" description="Core 1.9.5">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 1.9.5</span>
    </Card>
  </CardGroup>

  #### Core

  * Handled rare cases where IDFV can be nil if device is restarted and not unlocked.
</Update>

<Update label="29th February 2016" description="Geofence 1.9.4">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Geofence 1.9.4</span>
    </Card>
  </CardGroup>

  #### Geofence

  * iOS 7 crash while string match for Geofence.
  * Attributes set to nil are now discarded with a log.
  * Deprecated `setLocationwithLat:lng:`.
</Update>

<Update label="29th January 2016" description="Core 1.9.3">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 1.9.3</span>
    </Card>
  </CardGroup>

  #### Core

  * Bugfix for events lost if sync fails.
  * Inbox Storyboard fix for Xcode version types.
</Update>

<Update label="13th January 2016" description="Core 1.9.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 1.9.2</span>
    </Card>
  </CardGroup>

  #### Core

  * Support specific screen nudges using `getNudgeViewForScreen`.
</Update>

<Update label="6th January 2016" description="Inbox 1.9.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Inbox 1.9.1</span>
    </Card>
  </CardGroup>

  #### Inbox

  * Ability to delete Inbox messages by swiping.
  * Fixed bug where some Inbox messages appeared blank.
</Update>

<Update label="22nd December 2015" description="Core 1.9.0">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 1.9.0</span>
    </Card>
  </CardGroup>

  #### Core

  * Control logs via `[MoEngage debug:YES/NO]`.
  * New event for notification receipt when app is active.
  * Events during `resetUser` are now preserved and attributed to new user.
</Update>

<Update label="16th November 2015" description="Core 1.8.5">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 1.8.5</span>
    </Card>
  </CardGroup>

  #### Core

  * Ad Support Framework is weakly linked. IDFA collected only if framework is present.
</Update>

<Update label="28th October 2015" description="Core 1.8.4">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 1.8.4</span>
    </Card>
  </CardGroup>

  #### Core

  * Warnings from `CLANG_ENABLE_MODULES` and `GCC_PRECOMPILE_PREFIX_HEADER` fixed.
</Update>

<Update label="22nd October 2015" description="Core 1.8.3">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 1.8.3</span>
    </Card>
  </CardGroup>

  #### Core

  * Duplicate symbols fix.
  * NSLogs restricted to simulators.
  * PushTime Swift compatibility fix.
</Update>

<Update label="13th October 2015" description="Core 1.8.1 / 1.8.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 1.8.1 / 1.8.2</span>
    </Card>
  </CardGroup>

  #### Core

  * Send location and time attributes separately via `MOPayloadBuilder`.
</Update>

<Update label="28th September 2015" description="Core 1.8 — Bitcode Support">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 1.8</span>
    </Card>
  </CardGroup>

  #### Core

  * Includes Bitcode support for iOS 9 and Xcode 7.
  * Geofencing completion handler added to notify tracked regions.
  * Data sync fix for terminate immediately after background.
</Update>

<Update label="19th August 2015" description="Core 1.7">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 1.7</span>
    </Card>
  </CardGroup>

  #### Core

  * Multiple nudges supported (expire-and-show-next).
  * Reinstall event tracking.
  * Open-source Inbox/Notification center.
  * New callback for `UserNotificationSettings` (iOS 8).
</Update>

<Update label="15th July 2015" description="Core 1.6 — Geofence Introduction">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 1.6</span>
    </Card>
  </CardGroup>

  #### Core

  * Geofencing is now supported.
  * In-app images are now cached.
  * Nudge view fix where action was not tracked.
</Update>

<Update label="30th June 2015" description="Core 1.5">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 1.5</span>
    </Card>
  </CardGroup>

  #### Core

  * Install/Update differentiation.
  * Reset user triggered on MoEngage APP ID change.
</Update>

<Update label="27th May 2015" description="Core 1.4.3">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 1.4.3</span>
    </Card>
  </CardGroup>

  #### Core

  * Fixed Apple recognization of `NSFoundationVersionNumber_iOS_7_0` to fix iOS 6 behavior on iOS 7.
</Update>

<Update label="18th May 2015" description="Core 1.4.2">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 1.4.2</span>
    </Card>
  </CardGroup>

  #### Core

  * iOS 6 support for tracking and pushes only.
  * Property to disable badge number control.
</Update>

<Update label="8th May 2015" description="Core 1.4.1">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 1.4.1</span>
    </Card>
  </CardGroup>

  #### Core

  * iPad support for in-apps, landscape, and portrait.
  * The ability to call initialize later in the lifecycle of the app.
  * JSON parsing handled for incompatible types like NSData, NSUrl etc.
  * iOS 6 crash handled if initialize call was skipped.
</Update>

<Update label="16th April 2015" description="Core 1.4 — Nudges Introduction">
  <CardGroup cols={2}>
    <Card title="Modules">
      * <span style={{ color: '#008767', fontWeight: 'bold' }}>Core 1.4</span>
    </Card>
  </CardGroup>

  #### Core

  * New Feature: **Nudges**.
  * Reset User functionality for account switching/logouts.
  * Improvements in data storage if sync fails.
</Update>
