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

# Changelog

> iOS SDK release history

***

## Pangle adapter 8.2.0.7.0 - 2026-07-30

### Changed

* **Pangle** `CloudXPangleAdapter` → `~> 8.2.0.7.0` (Ads-Global 8.2.0.7). Install: `pod 'CloudXPangleAdapter', '~> 8.2.0.7.0'`; requires `CloudXCore >= 3.5.0`.

***

## Google Waterfall adapter 12.14.0.1 - 2026-07-29

### Fixed

* **Prefetched Google ads could be shown after expiring (12.14.0)** — Backport of the 13.6.0.1 fix for Google Mobile Ads SDK 12.14.0; fills now expire and refresh before stale, preventing blank renders. Install: `pod 'CloudXGoogleWaterfallAdapter', '12.14.0.1'`; requires `CloudXCore >= 3.5.0`.

***

## \[3.6.0] - 2026-07-28

Install: `pod 'CloudXCore', '~> 3.6'`

### Added

* **Report impression-level revenue from your own mediation platform** — Forward paid events to CloudX with `reportRevenueData(_:)`. AdMob, InMobi, and TopOn are built in.
* **App-wide ad-revenue delegate** — Receive impression-level revenue for every CloudX-won impression from one `CLXAdRevenueDelegate` instead of per ad. Register with `addAdRevenueDelegate(_:)`.
* **AppsFlyer ad-revenue connector** — Forward CloudX impression revenue to AppsFlyer. Install: `pod 'CloudXAppsFlyerConnector', '~> 1.0.0'`. Requires `AppsFlyerFramework >= 6.15.0`.
* **Adjust ad-revenue connector** — Forward CloudX impression revenue to Adjust. Install: `pod 'CloudXAdjustConnector', '~> 1.0.0'`. Requires `Adjust >= 5.0.0`.

### Fixed

* **Banner and MREC creatives could render blank on the CloudX renderer** — Creatives could fail on first load and after refresh, surfacing as blank impressions. They now render correctly.
* **HTML rewarded creatives were rejected on the CloudX renderer** — The renderer accepted only VAST rewarded creatives, so HTML rewarded ads failed to load. HTML rewarded creatives now render.

### Removed

* **Internal headers removed from the `CloudXCore.h` umbrella** — Internal implementation headers were removed from the umbrella; none was linkable, so no integration is affected. Report revenue through `reportRevenueData(_:)` and the public revenue types.

***

## Google Waterfall adapter 13.6.0.1 - 2026-07-21

### Fixed

* **Prefetched Google ads could be shown after they expired** — Prefetched fills now expire and refresh in the background before going stale, preventing blank renders. Install: `pod 'CloudXGoogleWaterfallAdapter', '~> 13.6.0.1'`. Requires `CloudXCore >= 3.5.0`.

***

## Off-line adapter releases (-core34) - 2026-07-16

Off-line builds of three adapters for publishers still on `CloudXCore` 3.4.x. Each works with `CloudXCore` 3.4.5 or 3.4.6 and is **not** compatible with `CloudXCore` 3.5.x. Pin the exact version shown — these versions are never picked up by `pod update` automatically.

* **Google Waterfall** — `pod 'CloudXGoogleWaterfallAdapter', '13.0.0.0-core34'`. Backed by Google Mobile Ads SDK 13.0.0. Requires `CloudXCore >= 3.4.6, < 3.5`.
* **Unity Ads** — `pod 'CloudXUnityAdsAdapter', '4.16.5.0-core34'`. Backed by UnityAds 4.16.5. Requires `CloudXCore >= 3.4.5, < 3.5`. Reward is granted on completed ad watch; UnityAds 4.16.5 provides no ad-expiry callback, so expired creatives are not signaled.
* **Moloco** — `pod 'CloudXMolocoAdapter', '4.3.0.0-core34'`. Backed by MolocoSDKiOS 4.3.0. Requires `CloudXCore >= 3.4.5, < 3.5`.

***

## MobileFuse adapter 1.11.0.0 - 2026-07-08

### Added

* **MobileFuse adapter** — New `CloudXMobileFuseAdapter` serving Banner, MREC, Interstitial, and Rewarded. Install: `pod 'CloudXMobileFuseAdapter', '~> 1.11.0.0'`. Backed by MobileFuse SDK 1.11.0; requires `CloudXCore >= 3.5.0`.

***

## \[3.5.0] - 2026-07-07

Adapters now version independently of `CloudXCore`. Each adapter pod uses `<network-sdk-version>.<adapter-revision>` (e.g. `pod 'CloudXVungleAdapter', '~> 7.7.4.0'`) and is tied to one exact network SDK version per release. `CloudXCore` continues on SDK semver (`pod 'CloudXCore', '~> 3.5'`).

### Breaking Changes

* **Adapter pods no longer share the `CloudXCore` version.** Existing pins on the old unified line (`~> 3.4`, `~> 3.x`) will not resolve new adapter releases. Update each adapter pin independently, for example `pod 'CloudXMintegralAdapter', '~> 8.1.5.0'`.
* **`CloudXMagniteAdapterV2` replaces `CloudXMagniteAdapter` for independent versioning.** Install `pod 'CloudXMagniteAdapterV2', '~> 1.0.0.0'` to move to the new version line; the legacy pod remains on the old line. No source changes — the import name is unchanged.
* **`CloudXRenderer` is no longer a separate pod.** Its functionality is built into `CloudXCore`; remove any direct `CloudXRenderer` dependency from your Podfile.

### Added

* **Trusted Arbiter Custom Bids** — Added mediator-agnostic custom bid inputs with `CLXArbiterBid.custom(...)`, `CLXArbiterPlatform.custom`, and `CLXArbiterPrecision`.
* **App Open ad format** — New `CLXAppOpen` ad class for full-screen ads shown while your app loads or returns to the foreground. Create with `createAppOpen(adUnitId:)`. Supported on the Google Waterfall, Mintegral, Pangle, and Vungle adapters.
* **VAST video interstitials and rewarded on the CloudX renderer** — The CloudX renderer now serves VAST video interstitial and rewarded creatives, with Open Measurement (OMID) video measurement. Rollout is controlled server-side; no integration change is required.
* **HTML rewarded on the CloudX renderer** — HTML rewarded creatives now render through the CloudX renderer, completing the fullscreen HTML support introduced for interstitials in 3.4.5. Server-side rollout; no integration change required.
* **Native ads on Digital Turbine, Mintegral, Pangle, Verve, and Google Waterfall** — These adapters now serve Native creatives, standalone and native-in-banner / native-in-MREC.
* **Google Waterfall — Interstitial and Rewarded** — `CloudXGoogleWaterfallAdapter` now serves fullscreen Interstitial and Rewarded creatives, in addition to Banner, MREC, Native, and App Open.
* **In-app App Store sheet for install-ad clickthroughs** — Tapping an install-campaign ad now opens an in-app App Store product sheet instead of leaving your app, for CloudX-rendered creatives that declare the advertised app.
* **Fullscreen HTML interstitial clickthrough** — Fullscreen HTML interstitials rendered by the CloudX renderer now navigate on tap.
* **`CloudXMagniteAdapterV2` 1.0.0.1** — the new independent-versioned Magnite pod. Install: `pod 'CloudXMagniteAdapterV2', '~> 1.0.0.0'`. Backed by MagniteSDK 1.0.0.

### Changed — Adapter releases

* **Vungle** `CloudXVungleAdapter` → `~> 7.7.4.0` (VungleAds 7.7.4).
* **Mintegral** `CloudXMintegralAdapter` → `~> 8.1.5.0` (MintegralAdSDK 8.1.5).
* **Unity Ads** `CloudXUnityAdsAdapter` → `~> 4.19.0.0` (UnityAds 4.19.0).
* **Verve** `CloudXVerveAdapter` → `~> 3.9.0.0` (HyBid 3.9.0).
* **Digital Turbine** `CloudXDigitalTurbineAdapter` → `~> 8.4.8.0` (Fyber Marketplace SDK 8.4.8).
* **Google Waterfall** `CloudXGoogleWaterfallAdapter` → `~> 13.6.0.0` (Google Mobile Ads SDK 13.6.0 — a major-version upgrade from 12.x).
* **InMobi** `CloudXInMobiAdapter` → `~> 11.3.0.0` (InMobiSDK 11.3.0).
* **Meta** `CloudXMetaAdapter` → `~> 6.21.1.0` (FBAudienceNetwork 6.21.1).
* **Moloco** `CloudXMolocoAdapter` → `~> 4.8.0.0` (MolocoSDKiOS 4.8.0).
* **Pangle** `CloudXPangleAdapter` → `~> 7.9.1.3.0` (Ads-Global 7.9.1.3).

### Fixed

* **Some bidders were not billed for certain banner impressions** — Native ads rendered in a banner slot (native-in-banner) could be counted without the bidder billing notice, so the bidder was never billed. Impressions are now billed correctly in all cases.
* **Native ads in a banner or MREC slot could report their impression too early** — A native ad in a banner or MREC slot could fire its impression before the ad view was actually visible, especially when preloading off-screen. Impressions now report at the correct time.
* **Stuck fullscreen ad after a rendering crash** — If the web content behind a fullscreen ad crashed after the ad loaded, the user could be left on a stuck fullscreen. The ad now closes automatically and delivers the close callback.
* **Native ads in banner slots could miss impressions with compact layouts** — Fixed an issue where a native ad rendered in a banner slot with the compact template could display without registering an impression.

### Removed

* **`CloudXRenderer` standalone pod** — merged into `CloudXCore`. See Breaking Changes above.

***

## \[3.4.6] - 2026-06-29

### Changed

* **`CloudXMolocoAdapter` now supports the full MolocoSDK 4.x line** — The `MolocoSDKiOS` requirement was widened from `~> 4.6.0` to `>= 4.6.0, < 5.0`, so you can adopt newer 4.x Moloco SDK releases. This resolves a CocoaPods dependency conflict that could block integration.

### Fixed

* **Rare crash when an ad finished loading** — Fixed a rare crash that could occur when a banner or fullscreen (interstitial / rewarded) ad finished loading. Affected ads now load and report their result reliably.
* **Duplicate banner impressions after a no-fill refresh** — A banner whose auto-refresh returned no bid could re-display the previous creative and count extra impressions. A no-bid refresh now shows nothing and reports no impression.

***

## \[3.4.5] - 2026-06-12

### Added

* **Full native ad support across InMobi, Meta, Vungle, and Moloco** — With InMobi native and Vungle standalone native added in this release, all four demand partners now serve native ads in every form CloudX supports: standalone (via `CLXNativeAdLoader`) and native-in-banner / native-in-MREC.
* **InMobi native ads** — `CloudXInMobiAdapter` now serves Native creatives, both standalone (via `CLXNativeAdLoader`) and native-in-banner / native-in-MREC. Requires `InMobiSDK >= 11.2.0` (the adapter's minimum was raised from `11.0.0`).
* **Vungle standalone native ads** — `CloudXVungleAdapter` now serves standalone Native creatives via `CLXNativeAdLoader` (native-in-banner / native-in-MREC was already supported).
* **HTML interstitials on the CloudX renderer** — The CloudX renderer now supports fullscreen HTML interstitial creatives with MRAID 3.0, alongside the existing HTML banner / MREC support. Rollout is controlled server-side; no integration change is required.

### Changed

* **Slow ad network SDKs no longer delay CloudX SDK initialization** — A slow network SDK no longer blocks init; CloudX completes without it and the network joins later auctions once ready. Networks not yet initialized are excluded from auctions they cannot serve.

### Fixed

* **Digital Turbine adapter no longer conflicts with another mediation SDK initializing the Fyber SDK** — If another mediation SDK initializes the shared Fyber SDK first, the CloudX adapter now defers instead of re-initializing. For smooth startup, initialize the other SDK first, then CloudX.
* **Some valid HTML banner creatives were rejected by the renderer** — Fixed an issue where HTML banner / MREC creatives containing failed tracker pixels were misclassified as broken and not displayed. These creatives now render normally.
* **Native ad reliability improvements on Meta and Moloco** — Meta native ads now validate the loaded ad and register all asset views for impression and click tracking, not just the CTA. Moloco native ads are no longer delivered when the underlying ad is not renderable.

### Removed

* **Adapter-integration APIs** — Removed `clx_isFlexibleSize`, `+isInitialized`, and per-instance `sdkVersion` from the adapter-facing surface. These had no function for app integrations; standard publisher integrations are unaffected.

***

## \[3.4.4] - 2026-06-02

### Fixed

* **Digital Turbine adapter failed to link on Fyber Marketplace SDK below 8.4.0** — The adapter binary failed to link on a Fyber SDK below `8.4.0`. It now links across the full `8.x` line — Banner, MREC, Interstitial, and Rewarded work on Fyber `8.0.0`+; native fill remains on `8.4.0`+.
* **Google Waterfall — occasional lost fills on slow mediation responses** — A Google Waterfall ad could be discarded when its mediation cascade responded slowly, even though it ultimately filled. Slow-but-successful responses are now delivered, improving fill reliability.

***

## \[3.4.3] - 2026-06-01

### Added

* **Pangle Adapter** — New `CloudXPangleAdapter` supporting Banner/MREC, Interstitial, and Rewarded ad formats. Install: `pod 'CloudXPangleAdapter', '~> 3.4.3'`. Backed by the Pangle (ByteDance) SDK `Ads-Global ~> 7.9.0`.

### Changed

* **DigitalTurbine adapter — broader Fyber Marketplace SDK compatibility** — `CloudXDigitalTurbineAdapter` now accepts `Fyber_Marketplace_SDK >= 8.0.0` (previously `>= 8.4.0`). Banner, MREC, Interstitial, and Rewarded work across the full 8.x line; native fill remains on Fyber SDK 8.4.0+.

### Fixed

* **App Store rejection from the `itms-services` URL scheme** — removed the scheme from the SDK binary; store redirects are unaffected.
* **SDK init could fail for some accounts** — fixed initialization failing for accounts without an organization identifier.

***

## \[3.4.2] - 2026-05-29

### Added

* **Google Waterfall Adapter** — New `CloudXGoogleWaterfallAdapter` (Banner, MREC). Install via CocoaPods (`pod 'CloudXGoogleWaterfallAdapter', '~> 3.4.2'`) or Swift Package Manager. Backed by `Google-Mobile-Ads-SDK 12.14.0`; requires a `GADApplicationIdentifier` in your Info.plist.

***

## \[3.4.1] - 2026-05-27

### Added

* **Digital Turbine Adapter** — New `CloudXDigitalTurbineAdapter` (Banner, MREC, Interstitial, Rewarded, Native). Install: `pod 'CloudXDigitalTurbineAdapter', '~> 3.4.1'`. Backed by `Fyber_Marketplace_SDK >= 8.4.0, < 9.0`.

### Fixed

* **Duplicate `didLoadAd` / `didShowAd` callbacks on banner refresh** — When a partner adapter SDK fired its load or impression callback more than once, publishers could receive duplicates. The first callback is now canonical and re-fires are dropped, so one load and one impression emit per ad.

***

## \[3.4.0] - 2026-05-22

### Added

* **Verve Adapter** — New `CloudXVerveAdapter` (Banner, MREC, Interstitial, Rewarded, Native). Install: `pod 'CloudXVerveAdapter', '~> 3.4.0'`. Backed by HyBid 3.8.0.
* **Moloco Adapter** — New `CloudXMolocoAdapter` (Banner, MREC, Interstitial, Rewarded, Native). Install: `pod 'CloudXMolocoAdapter', '~> 3.4.0'`. Backed by MolocoSDKiOS `~> 4.6.0`.
* **Non-SDK CloudX-rendered HTML banner and MREC with MRAID 3.0** — HTML banner and MREC creatives can now be served through the CloudX renderer, with MRAID 3.0 support.
* **Native-in-banner and native-in-MREC support** — Native creatives can be served into banner or MREC slots on Meta, Vungle, and Moloco.
* **Trusted Arbiter** — Added public APIs for comparing CloudX bids with supported third-party bids from Unity LevelPlay and PubMatic, and selecting the winning platform through CloudX arbitration.
* **`CLXAd.adValues` property** — New read-only `NSDictionary<NSString *, NSString *>` exposing SDK-defined loaded-ad metadata. Values may be absent depending on ad format and network.

### Changed

* **UnityAds adapter version range** — Widened to accept Unity Ads 4.x patch releases (`>= 4.17.0, < 5.0`).
* **Publisher delegate main-queue threading is now documented contract** — All `CLXAdDelegate` callbacks (and protocols that extend it) and `CLXAdRevenueDelegate` callbacks deliver on the main queue and may fire inline relative to the SDK call that triggered them. No runtime change.

### Fixed

* **Native ad memory leak during long sessions** — Long-lived publisher integrations that load many native ads no longer accumulate retained observers across native ad refresh cycles.

***

## \[3.2.0] - 2026-04-22

### Added

* **Magnite Adapter** — New `CloudXMagniteAdapter` (Banner, MREC, Interstitial, Rewarded). Install: `pod 'CloudXMagniteAdapter', '~> 3.2.0'`.
* **Richer dashboard telemetry** — Full telemetry overhaul. More robust event capture, new events, and increased observability.

***

## \[3.1.0] - 2026-04-16

### Added

* **Meta Reels & Native Ads** — Meta Reels (9:16 vertical video) and other Meta native ad formats are now supported via `CLXPublisherNative`. This release supports Meta native ads only; additional bidder support is coming in a future release.
* **Per-Adapter Initialization Timeout** — SDK initialization now supports per-adapter timeouts for more predictable startup behavior.

### Fixed

* **Xcode 26 Compatibility** — Resolved a build warning when compiling with Xcode 26.

***

## \[2.2.9] - 2026-04-09

### Fixed

* **Unity Ads Adapter** — Fixed initialization, privacy consent forwarding, rewarded callbacks, and bid token error handling for improved reliability across regions.

***

## \[2.2.8] - 2026-04-03

### Fixed

* **Crash Fix** — Fixed a crash that could occur during concurrent ad event tracking on background threads

***

## \[2.2.7] - 2026-04-01

### Fixed

* **Deferred Banner Display** — Fixed an issue where banners created before SDK initialization completed could fail to display after initialization succeeded
* **Vungle Adapter Reliability** — Fixed an issue where Vungle rewarded and interstitial ads could crash at runtime due to a method being incorrectly stripped during linking

***

## \[2.2.6] - 2026-03-30

### Added

* **Privacy Consent for Unity Ads** — Unity Ads adapter now supports GDPR and CCPA privacy consent forwarding
* **`isAdReady` Support** — Fullscreen ad adapters now support `isAdReady` for reliably querying ad availability before calling show

### Fixed

* **Banner Visibility Accuracy** — Fixed an issue where setting `banner.hidden = YES` did not pause ad refresh. Hidden banners could continue loading ads without being impression-eligible, potentially impacting CPMs.
* **Improved Dependency Compatibility** — Widened third-party SDK version constraints (VungleAds, FBAudienceNetwork, InMobiSDK) to prevent CocoaPods dependency conflicts when integrating alongside other mediation SDKs
* **Fullscreen Ad Reliability** — Fixed an issue where ad lifecycle callbacks could be silently lost in rare scenarios
* **iOS 16 Crash Fix** — Fixed a crash on iOS 16 devices related to session tracking

***

## \[2.2.4] - 2026-03-26

### Changed

* **Server-Driven Location Controls** — Location coordinate sharing in bid requests is now controlled via the CloudX dashboard (account-scoped). No SDK code changes required for publishers.
* **Improved Bid Request Data** — Content language is now included in bid requests for improved ad targeting

***

## \[2.2.3] - 2026-03-19

### Added

* **Unity Ads Adapter** — Unity Ads adapter now available for banner, interstitial, and rewarded ads

### Fixed

* **Unity Ads Initialization** — Fixed an issue where the Unity Ads adapter could fail to initialize correctly in some configurations

***

## \[2.2.2] - 2026-03-16

### Added

* **Manual Privacy API** — New `setHasUserConsent:` and `setDoNotSell:` methods for publisher-controlled privacy consent
* **Mintegral Adapter** — Mintegral adapter now available as a standard release

### Fixed

* **Improved Error Visibility** — Increased error visibility for no-bid scenarios, making it easier to diagnose fill rate issues
* **Fullscreen Ad Loading** — Fixed an issue where loading a fullscreen ad while another was showing could silently fail
* **Fullscreen Failure Callbacks** — Fixed missing ad unit ID in fullscreen ad failure callbacks
* **Renderer Impression Tracking** — Fixed viewability tracking accuracy in CloudX Renderer

### Changed

* **Mintegral SDK** — Upgraded from 8.0.7 to 8.0.8

***

## \[2.0.0] - 2026-02-04

This release replaces placement names with **Ad Unit IDs** from the CloudX dashboard. Update your `createBannerWithAdUnitId:`, `createMRECWithAdUnitId:`, `createInterstitialWithAdUnitId:`, and `createRewardedWithAdUnitId:` calls to use the ad unit ID instead of a placement name.

### Added

* Rewarded ads with `createRewardedWithAdUnitId:delegate:` and `CLXRewardedDelegate`
* InMobi adapter (SDK 11.1) with support for banner, MREC, interstitial, and rewarded ads
* `CLXAd.networkPlacement` property for network-specific placement ID

### Breaking Changes

* Renamed `placement` parameter to `adUnitId` in `createBannerWithAdUnitId:`, `createMRECWithAdUnitId:`, `createInterstitialWithAdUnitId:`, `createRewardedWithAdUnitId:`
* Renamed `CLXAd.placement` to `adUnitId`
* Renamed `CLXAd.bidderName` to `networkName`
* Renamed `CLXErrorCodeInvalidPlacement` to `CLXErrorCodeInvalidAdUnit`
* Changed `bannerAdView:didFailWithError:` to include ad unit ID in error
* Removed `testMode` parameter from `initializeSDKWithAppKey:completion:` - test mode is now server-controlled via dashboard

### Changed

* Meta Audience Network SDK updated from 6.17.0 to 6.21.0
* Vungle SDK updated from 7.4.2 to 7.6.0

### Fixed

* Fixed IFA (Identifier for Advertisers) collection
* Fixed country/geo-targeting data collection

***

## \[1.3.0] - 2025-12-14

### Added

* **Banner Refresh Retry** - Banners now automatically retry loading after failure when hidden

### Fixed

* **App Extension Compatibility** - SDK now works correctly in App Extensions (no UIApplication calls)
* **Rewarded Delegate Callbacks** - Fixed callback ordering bug
* **Symbol Collisions** - All category methods now prefixed with `clx_` to prevent conflicts

### Changed

* **CloudXCore now distributed as Dynamic Framework** - Enables crash symbolication for SDK issues

***

## \[1.2.1] - 2025-12-04

### Added

* **Visual Debugger Button** - New debugging tool for development and QA
* **High-ROI Key-Value Targeting Examples** - Enhanced demo apps with targeting signal examples

### Fixed

* Corrected vendored\_frameworks paths in podspecs

***

## \[1.2.0] - 2025-11-26

### 🚀 First Official Release

Initial release of the CloudX iOS SDK with support for banner, MREC, and interstitial ads.
