> ## 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

> Combined release notes across CloudX

<Update label="July 30, 2026" tags={["iOS","Dashboard"]}>
  ### iOS SDK — Pangle adapter 8.2.0.7.0

  #### 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`.

  ### Dashboard — Total Revenue dashboard

  <img src="https://mintcdn.com/cloudx-928dcb24/pTlS4959ibu5qnrB/images/total-revenue-changelog.png?fit=max&auto=format&n=pTlS4959ibu5qnrB&q=85&s=0224ed77d40a225f9486cc8b3a3cf8dc" alt="Total Revenue dashboard." width="2684" height="1062" data-path="images/total-revenue-changelog.png" />

  **Total Revenue** brings your CloudX and connected mediation-platform performance into one dashboard, so you can compare aggregate monetization results in one place. [Read the docs →](/en/dashboard/total-revenue)
</Update>

<Update label="July 29, 2026" tags={["iOS","React Native","Unity"]}>
  ### iOS SDK — Google Waterfall adapter 12.14.0.1

  #### 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`.

  ### React Native SDK 3.6.0

  CloudX React Native 3.6.0 aligns the wrapper with CloudX iOS 3.6.0 and Android 4.4.0. It adds App Open and publisher-reported revenue APIs, updates native dependency pins, and preserves existing banner, MREC, interstitial, and rewarded integrations without migration.

  #### Added

  * **App Open ads** - Added `CloudXAppOpenAd` and `useCloudXAppOpen` for full-screen app launch and foreground placements, backed by the native App Open support in CloudX iOS and Android.
  * **Publisher-reported revenue API** - Added `CloudX.reportRevenueData()` with `CloudXRevenueData` so apps can forward mediation paid events into CloudX reporting. Pass revenue as a JavaScript `number` in currency units, not micros.
  * **Expanded native adapter setup** - React Native apps can use the native adapter set for this release, including independent iOS adapter pins and the Android TaurusX adapter.

  #### Changed

  * Updated underlying native SDK pins to iOS `CloudXCore ~> 3.6.0` and Android `io.cloudx:sdk:4.4.0`.
  * **(iOS) Removed `CloudXRenderer` from setup** - Do not add `CloudXRenderer` in React Native Podfiles. Renderer functionality is built into `CloudXCore` starting with iOS 3.5.0.
  * **(iOS) Independent adapter versioning** - iOS setup now uses separate adapter versions and `CloudXMagniteAdapterV2`, matching the iOS 3.5+ native packaging model.
  * **(Android) Safer load and prefetch behavior** - Includes Android 4.3.0 improvements for duplicate `load()` calls and stale Google Waterfall prefetched fills.

  #### Fixed

  * **(iOS) CloudX-served creative rendering** - Includes iOS 3.6.0 fixes for blank banner and MREC creatives and rejected HTML rewarded creatives.
  * **(Android) Runtime compatibility** - Includes Android 4.4.0 fixes for telephony permission checks and VAST tracker compatibility on the SDK's minimum Android version.
  * **(Android) Native impression revenue** - Includes Android 4.3.0 reliability fixes for synchronous native impression revenue callbacks.

  #### Platform Support

  * iOS: CloudXCore \~> 3.6.0
  * Android: io.cloudx:sdk:4.4.0

  ### Unity SDK 4.4.0

  #### What's New

  * Added App Open ads through `CloudXSdk.LoadAppOpen`, `CloudXSdk.ShowAppOpen`, `CloudXSdk.IsAppOpenReady`, `CloudXSdk.DestroyAppOpen`, and `CloudXAdsCallbacks.AppOpen`.
  * Added publisher revenue reporting with `CloudXSdk.ReportRevenueData(CloudXRevenueData data)`, including AdMob, InMobi, TopOn, and custom platform names.

  #### Fixed

  * Fixed Unity main-thread callback dispatch so native callbacks that enqueue Unity work no longer deadlock callback delivery.

  #### SDK Updates

  * Updated Android SDK from 4.1.7 to 4.4.0 — see [Android SDK changelog](/en/android/changelog#440---2026-07-28) for details
  * Updated iOS CloudXCore from 3.4.6 to 3.6.0
  * Updated iOS Google Waterfall adapter from 3.4.6 to 13.6.0.1
  * Updated Unity demo Android adapter pins: Vungle 7.7.7.0, InMobi 11.4.0.1, Mintegral 17.1.71.0, Moloco 4.11.0.0, Verve 3.9.0.1, Google Waterfall 25.2.0.1, Digital Turbine 8.4.7.0, and Pangle 8.2.0.4.0.
</Update>

<Update label="July 28, 2026" tags={["Android","iOS","React Native","Demand"]}>
  ### Android SDK 4.4.0

  #### Added

  * **Publisher Revenue Platforms** - Publisher-reported revenue can now use `CloudXRevenuePlatform.INMOBI`, `CloudXRevenuePlatform.TOPON`, or `CloudXRevenuePlatform.custom(name)` in addition to AdMob, so apps can forward impression-level revenue from more mediation and reporting platforms.

  #### Changed

  * **Revenue Amount Units** - `CloudXRevenueData.builder(platform, revenue, adFormat)` now takes `revenue` as a `Double` in currency units, and `CloudXRevenueData.revenue` is now a `Double`. For AdMob `AdValue.valueMicros`, divide by `1_000_000.0` before creating `CloudXRevenueData`.

  #### Fixed

  * **Telephony Permission Guard** - The SDK now checks phone-state permission before reading the telephony network type.
  * **VAST Tracker Compatibility** - Fixed the VAST event tracker to avoid an API 24-only collection call when running on the SDK's minimum supported Android version.

  ### iOS SDK 3.6.0

  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.

  ### React Native SDK 3.4.7

  Adds an in-tree React Native component API for banner and MREC ads while preserving the existing programmatic overlay API.

  #### Added

  * **Component banner and MREC views** - Publishers can now render `CloudXBannerView` and `CloudXMRECView` directly inside React Native layouts, so ads participate in normal view positioning, safe-area handling, and overlay z-ordering.
  * **Declarative component metadata** - Component banners and MRECs support `placement`, `customData`, and `extraParameters` props for reporting and network/server configuration.
  * **Component callbacks** - Component views support `onAdLoaded`, `onAdLoadFailed`, `onAdClicked`, and `onAdRevenuePaid` callback props.

  #### Changed

  * Updated the underlying Android native pin to `io.cloudx:sdk:4.1.7` (iOS `CloudXCore ~> 3.4.5` is unchanged).
  * The existing `CloudXBannerAd` and `CloudXMRECAd` programmatic overlay APIs remain available for apps that need fixed native overlay positioning.

  #### Platform Support

  * iOS: CloudXCore \~> 3.4.5
  * Android: io.cloudx:sdk:4.1.7

  ### Demand Partners — zstd bid compression

  CloudX now supports zstd compression for OpenRTB traffic with demand partners, on both bid requests and bid responses.

  * Bid requests can be sent with `Content-Encoding: zstd`; gzip remains supported.
  * When CloudX advertises `Accept-Encoding: gzip, zstd`, partners may respond with gzip or zstd.
  * Contact CloudX to enable zstd for your bidder endpoint.

  [Read the docs →](/en/demand/compression)
</Update>

<Update label="July 27, 2026" tags={["Dashboard"]}>
  ### Dashboard — Ad position overrides

  You can now set the bidder-facing ad position signal when creating or editing an ad unit in the Dashboard.

  Accurate position signals help bidders understand where an ad appears on screen and can improve how they value the opportunity.

  * Keep **Default (recommended)** to use CloudX's current defaults: Banner sends `1` (above the fold), MREC omits the position signal, and fullscreen formats send `7` (full screen).
  * Choose a value from `0` to `7` when the ad's actual on-screen position differs from the default.
  * Return to **Default (recommended)** to clear a saved override.

  This setting changes the bidder-facing OpenRTB/AdCOM `banner.pos` or `video.pos` field. It does not reposition the ad in your app. [Read the docs →](/en/dashboard/ad-units#ad-position-signal)

  ### Dashboard — IFA presence targeting for manual floors

  Manual line-item floors can now target requests based on whether the device provides a usable advertising identifier.

  * Choose **Any IFA** to leave IFA presence unrestricted.
  * Choose **Has IFA** to target requests with a usable identifier.
  * Choose **No IFA** to target requests where the identifier is empty, whitespace-only, unavailable, or the nil UUID (`00000000-0000-0000-0000-000000000000`).
  * Combine IFA presence with country targeting to set different floors for each traffic cohort.

  In YAML configuration, omit `ifa_present` for **Any IFA**, set `ifa_present: true` for **Has IFA**, or set `ifa_present: false` for **No IFA**.
</Update>

<Update label="July 22, 2026" tags={["Dashboard"]}>
  ### Dashboard — CloudX Agent

  CloudX Agent is now available throughout the Dashboard through **Ask CloudX**. It uses the current page as context and can work across inventory, configuration, reporting, auction data, and CloudX product documentation.

  Use it to:

  * analyze pricing opportunities and prepare floor changes by ad unit, country, or format
  * create, monitor, end, and promote A/B tests
  * manage bidder participation and network mappings
  * diagnose eCPM and fill-rate changes
  * validate inventory and import configuration from CSV or spreadsheet files
  * trace published changes to a configuration version, timestamp, and author

  Configuration changes require an in-chat review and explicit approval before CloudX validates and publishes them. [Read the docs →](/en/dashboard/ai-agent)
</Update>

<Update label="July 21, 2026" tags={["Android","iOS"]}>
  ### Android SDK 4.3.0

  #### Added

  * **AppsFlyer Ad Revenue Connector** - Added a managed AppsFlyer connector and a global `CloudX.addAdRevenueListener()` API to forward CloudX ad revenue to AppsFlyer or any MMP with one dependency and no glue code. The listener fires once per CloudX-won impression across all ad formats.

  #### Changed

  * **Google Waterfall Prefetch Expiry** - Prefetched Google Waterfall fills now expire on per-format time limits (4 hours for App Open, 1 hour for other formats) and refill proactively, so stale cached fills no longer render blank or fail at show.
  * **Duplicate load() Handling** - Repeated `load()` calls while a load is in flight are now handled safely and consistently across all ad formats. Previously, rapid duplicate banner and MREC loads could cancel the in-flight auction and starve the app of fills.
  * **Creative Reporting** - Creative identifiers are now included in impression and revenue telemetry across native and Mintegral-backed placements for more accurate creative-level reporting.

  #### Fixed

  * **Pre-Init Load Callbacks** - Banner and MREC `load()` calls made before initialization completes are now queued and always produce a callback. Previously such calls could be dropped silently, and a failed initialization is now reported as a load failure instead of hanging with no callback.
  * **Native Impression Revenue** - Fixed a timing gap where a native impression fired before the SDK's observer subscribed could be lost, so the publisher's revenue callback did not fire. Affected synchronous-impression native paths such as Moloco standalone native.
  * **Optimistic Banner Leak** - Fixed an adapter view leak when an optimistically loaded banner is destroyed before its background creative load dispatches.

  ### iOS SDK — Google Waterfall adapter 13.6.0.1

  #### 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`.
</Update>

<Update label="July 17, 2026" tags={["CLI"]}>
  ### CloudX CLI 0.36

  #### Impression-level revenue exports

  CloudX CLI 0.36 adds asynchronous, full-day impression revenue exports for account-scoped analysis and reconciliation.

  #### Added

  * **Impression-level CSV exports** — Added `cloudx report impressions export --date YYYY-MM-DD` to create or reuse a gzip-compressed CSV containing one row per impression. Completed UTC days from the previous 45 days are supported. [Read the docs →](/en/cli/reporting#cloudx-report-impressions-export)
  * **Focused export filters** — Filter by app ID or bundle, ad unit ID, country, device OS, bidder, line item, and production/test traffic.
  * **Asynchronous download workflow** — Use `--wait` to poll for completion or `--output <path>` to wait and securely download the result from a short-lived URL.

  ```bash theme={null}
  cloudx report impressions export --date 2026-07-16 --output ./impressions-2026-07-16.csv.gz
  ```
</Update>

<Update label="July 16, 2026" tags={["iOS"]}>
  ### iOS SDK — Off-line adapter releases (-core34)

  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`.
</Update>

<Update label="July 8, 2026" tags={["iOS"]}>
  ### iOS SDK — MobileFuse adapter 1.11.0.0

  #### 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`.
</Update>

<Update label="July 7, 2026" tags={["Android","iOS"]}>
  ### Android SDK 4.2.0

  #### Added

  * **App Open Ads** - Added App Open ad support through `CloudX.createAppOpen()` and `CloudXAdFormat.APP_OPEN` for app foreground placements.
  * **Publisher Revenue Reporting** - Added `CloudX.reportRevenueData()` and `CloudXRevenueData` so publishers can forward AdMob impression-level revenue events into CloudX reporting.
  * **Trusted Arbiter Custom Bids** - Added mediator-agnostic custom bid inputs with `CloudXArbiterBid.custom()`, `CloudXArbiterPlatform.CUSTOM`, and `CloudXArbiterPrecision`.
  * **Expanded Google Waterfall Support** - Added Google Waterfall Interstitial, Rewarded, Native, and App Open support.
  * **Banner Auto-Refresh Configuration** - Added banner and MREC support for server-disabled auto-refresh settings.
  * **TaurusX Adapter Availability** - The TaurusX Android adapter is now available as `io.cloudx:adapter-taurusx:1.18.3.0`, supporting Banner, MREC, Interstitial, Rewarded, and Native ad formats on CloudX Android SDK 4.2.0 or newer.

  #### Changed

  * **Adapter Format Metadata** - Adapters now report supported ad formats to CloudX, helping server-provisioned configuration match demand to compatible adapters.
  * **Google Waterfall Reporting** - Improved Google Waterfall response identifiers and realized-price handling for more accurate waterfall diagnostics and reporting.
  * **Renderer Reliability** - Fullscreen CloudX renderer behavior now better respects device auto-rotate settings and rewarded close/reward eligibility.
  * **Fullscreen Network Names** - Fullscreen ad callbacks now report network names consistently with the raw adapter code used by other ad formats.
  * **Initialization Resilience** - Improved SDK recovery from stale or poisoned OS DNS resolver state during initialization and network calls.

  #### Fixed

  * **Moloco Native Banner Impressions** - Fixed Moloco Native Banner and Native MREC impression timing so impressions are handled after the ad view is attached to the CloudX ad view container.
  * **Banner Render Timing** - Improved banner and MREC load/render timing so adapter render latency is tracked separately from the initial load signal.
  * **Google Waterfall Prefetch Reliability** - Improved Google Waterfall prefetch callback handling and impression reporting so stale loader callbacks cannot affect current fills.
  * **Trusted Arbiter PubMatic Comparison** - Fixed fallback arbitration so PubMatic OpenWrap CPM prices are normalized before comparison with per-impression revenue bids.

  ### iOS SDK 3.5.0

  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.
</Update>

<Update label="July 2, 2026" tags={["Unity"]}>
  ### Unity SDK 4.1.7

  #### What's New

  * Added APIs for per-request bid floor overrides so publishers can send request-scoped floor controls through the SDK bid pipeline

  #### SDK Updates

  * Updated Android SDK from 4.1.5 to 4.1.7 — see [Android SDK changelog](/en/android/changelog#417---2026-06-25) for details
  * Updated iOS SDK from 3.4.5 to 3.4.6 — see [iOS SDK changelog](/en/ios/changelog#346---2026-06-29) for details
</Update>

<Update label="June 29, 2026" tags={["iOS"]}>
  ### iOS SDK 3.4.6

  #### 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.
</Update>

<Update label="June 26, 2026" tags={["CLI"]}>
  ### CloudX CLI 0.35

  #### A/B test country targeting

  CloudX CLI 0.35 lets A/B test config edits set geo targeting for the test variant directly from the terminal.

  #### Added

  * **A/B test geo targeting** — Added `--country` to `cloudx config edit create-ab-test` and `cloudx config edit update-ab-test`. The flag accepts repeated or comma-separated ISO 3166-1 alpha-2 or alpha-3 country codes, and CloudX stores the test-variant targeting as alpha-3 codes. [Read the docs →](/en/cli/configuration#ab-tests)

  ```bash theme={null}
  cloudx config edit create-ab-test --ad-unit-id au_123 --name "US/GB test" --country US --country GB
  ```
</Update>

<Update label="June 25, 2026" tags={["Android"]}>
  ### Android SDK 4.1.7

  #### Changed

  * **Faster SDK Initialization** - Reduced initialization latency by applying privacy consent to ad network adapters in parallel and moving non-critical startup work off the initialization path.

  ### Android SDK 4.1.6

  #### Changed

  * **Quicker Initialization** - The SDK can reuse cached configuration on warmed sessions, reducing initialization latency on subsequent launches.
  * **Trusted Arbiter Revenue Accuracy** - Normalized fallback revenue units used in arbitration so CloudX bid comparisons and revenue reporting are more accurate.
</Update>

<Update label="June 20, 2026" tags={["React Native","Unity"]}>
  ### React Native SDK 3.4.6

  Aligns the React Native wrapper with CloudX native Android 4.1.5; iOS stays on 3.4.5. There are no JavaScript API changes in this release.

  #### Added

  * **(Android) MobileFuse adapter availability** - MobileFuse demand can now be added to Android React Native apps via `io.cloudx:adapter-mobilefuse:1.11.0.0` (Banner, MREC, Interstitial, Rewarded).
  * **(Android) Pangle adapter readiness** - Pangle demand can be integrated on Android with `io.cloudx:adapter-pangle:8.1.0.3.0`.

  #### Changed

  * Updated the underlying Android native pin to `io.cloudx:sdk:4.1.5` (iOS `CloudXCore ~> 3.4.5` is unchanged).
  * **(Android) Faster startup** - Initialization and ad-request stalls caused by device signal collection are reduced.
  * **(Android) Fullscreen HTML rendering** - The SDK now renders CloudX-served fullscreen HTML creatives in interstitial and rewarded placements, with viewability measurement. Rollout is server-controlled; no app change is required.
  * **(Android) Broader native-in-banner coverage** - Vungle native demand can now serve into standard banner and MREC slots through the existing banner API (joining Meta and Moloco), where enabled for your line items.

  #### Fixed

  * **(Android) Fullscreen reliability** - More dependable close behavior and hide callbacks for fullscreen HTML ads, with safer reward handling when a rewarded ad is closed early.
  * **(Android) Native ad image handling** - More reliable image loading for native creatives, preventing stale images from appearing in reused ad views.

  #### Platform Support

  * iOS: CloudXCore \~> 3.4.5
  * Android: io.cloudx:sdk:4.1.5

  ### Unity SDK 4.1.5

  #### SDK Updates

  * Updated Android SDK from 4.1.3 to 4.1.5 — see [Android SDK changelog](/en/android/changelog#415---2026-06-19) for details
  * Updated iOS SDK from 3.4.2 to 3.4.5 — see [iOS SDK changelog](/en/ios/changelog#345---2026-06-12) for details
  * Added Pangle adapter support for Android and iOS
  * Added MobileFuse adapter support for Android
</Update>

<Update label="June 19, 2026" tags={["Android","Dashboard"]}>
  ### Android SDK 4.1.5

  #### Added

  * **MobileFuse Adapter Availability** - The MobileFuse Android adapter is now available as `io.cloudx:adapter-mobilefuse:1.11.0.0`, supporting Banner, MREC, Interstitial, Rewarded, and Native ad formats.

  #### Changed

  * **Meta Native-in-Banner Routing** - Meta native banner demand now uses Meta's native-banner rendering path only for banner-sized placements; native MREC placements use the regular native ad path.
  * **Vungle Native Ad Support** - Added support for Vungle native, native banner, and native MREC ad formats.

  ### Dashboard — A/B testing result labels

  The A/B testing dashboard now more clearly distinguishes result metrics and percentage-point changes.

  * A/B test creation now uses a fixed 50/50 split between control and test groups
  * ARPU is included in cumulative comparison metrics
  * Fill rate reflects true filled auction responses divided by requests
  * Customer-facing result badges use Pending, Directional, and Achieved

  [Read the docs →](/en/dashboard/ab-testing)
</Update>

<Update label="June 18, 2026" tags={["Android"]}>
  ### Android SDK 4.1.4

  #### Added

  * **Pangle Adapter Readiness** - Added the SDK-side metadata needed for the independently released Pangle Android adapter. Publishers can integrate Pangle demand with `io.cloudx:adapter-pangle:8.1.0.3.0` on CloudX Android SDK 4.1.4 or newer.
  * **CloudX Fullscreen HTML Rendering** - Added SDK support for CloudX-served MRAID fullscreen creatives in interstitial and rewarded placements, including OMID viewability measurement for CloudX HTML ads.

  #### Changed

  * **SDK Startup Performance** - Reduced SDK initialization and ad-request stalls caused by device signal collection.
  * **MRAID Fullscreen Reliability** - Improved fullscreen CloudX HTML ads with load watchdogs, a loading indicator, larger close hit targets, `mraid.unload()` support, more reliable hide callbacks, and safer reward handling when rewarded ads are closed early.
  * **Native Ad Rendering** - Improved native image handling for local file-backed assets and prevented stale async image loads from overwriting reused native ad views.
  * **Telemetry Timing Accuracy** - SDK telemetry durations now use monotonic app-uptime timing for more reliable diagnostics.
</Update>

<Update label="June 16, 2026" tags={["React Native"]}>
  ### React Native SDK 3.4.5

  Aligns the React Native wrapper with CloudX native iOS 3.4.5; Android stays on 4.1.3. There are no JavaScript API changes in this release.

  #### Fixed

  * **(iOS) Interstitial and rewarded ads now display on the legacy architecture (Paper)** - On apps built with the legacy React Native architecture, fullscreen ads could load but fail to appear on screen. They now present correctly. New Architecture (Fabric) apps were unaffected.
  * **(iOS) Some valid HTML banner and MREC creatives are no longer skipped** - Creatives previously misclassified as broken now render normally.
  * **(iOS) Native ad reliability on Meta and Moloco** - Native-in-banner and native-in-MREC creatives validate and register their assets more reliably for display and click tracking.
  * **(iOS) Digital Turbine startup conflict** - When another mediation SDK initializes the shared Fyber SDK first, the CloudX adapter now defers instead of re-initializing. For the smoothest startup, initialize the other mediation SDK first, then CloudX.

  #### Changed

  * Updated the underlying iOS native pin to `CloudXCore ~> 3.4.5` (Android `io.cloudx:sdk:4.1.3` is unchanged). Update your iOS `CloudX*` adapter pods to `~> 3.4.5` to match.
  * **(iOS) Broader native-in-banner coverage** - InMobi and Vungle native demand can now serve into standard banner and MREC slots through the existing banner API (joining Meta and Moloco), where enabled for your line items.
  * **(iOS) HTML interstitial rendering** - The CloudX renderer now supports fullscreen HTML interstitial creatives. Rollout is server-controlled; no app change is required.
  * **(iOS) Slow ad networks no longer delay startup** - If a network's SDK is slow to initialize, CloudX initialization completes without it and the network joins later auctions automatically once ready.

  #### Platform Support

  * iOS: CloudXCore \~> 3.4.5
  * Android: io.cloudx:sdk:4.1.3
</Update>

<Update label="June 12, 2026" tags={["iOS","React Native"]}>
  ### iOS SDK 3.4.5

  #### 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.

  ### React Native SDK 3.4.4

  Aligns the React Native wrapper with the CloudX native SDKs — iOS 3.4.4 and Android 4.1.3. There are no JavaScript API changes in this release; apps pick up the native platform improvements and the expanded adapter lineup through the existing React Native APIs.

  #### Added

  * **Digital Turbine adapter support** - Digital Turbine demand can now be added to React Native apps on both platforms (Banner, MREC, Interstitial, Rewarded). iOS: `pod 'CloudXDigitalTurbineAdapter', '~> 3.4.4'`; Android: `io.cloudx:adapter-digitalturbine:8.4.5.0`.
  * **(iOS) Pangle adapter** - `pod 'CloudXPangleAdapter', '~> 3.4.4'` (Banner/MREC, Interstitial, Rewarded).
  * **(iOS) Google Waterfall adapter** - `pod 'CloudXGoogleWaterfallAdapter', '~> 3.4.4'` (Banner, MREC); requires a Google ad application identifier in your app's Info.plist.
  * **(Android) Native-in-banner rendering** - Native ad demand from supported networks (Meta, Moloco, Vungle) can now serve into standard banner and MREC slots through the existing banner API.

  #### Changed

  * Updated underlying native SDK pins to iOS `CloudXCore ~> 3.4.4` and Android `io.cloudx:sdk:4.1.3`.
  * **(Android) Resilient adapter initialization** - A slow ad network no longer delays SDK startup; late adapters are held out of auctions until ready, then join automatically.
  * **(Android) Server-driven always-reward mode** - Reward callbacks can be guaranteed per line item from the dashboard, with no app-side change required.

  #### Fixed

  * **(iOS) App Store submission rejection** - Removed a disallowed URL scheme from the SDK binary that could cause App Store review rejections.
  * **(iOS) SDK initialization could fail for some accounts** - Initialization now succeeds for accounts without an organization identifier.
  * **(iOS) Google Waterfall lost fills** - Slow-but-successful mediation responses are no longer discarded, improving fill reliability.
  * **(iOS) Digital Turbine compatibility** - Banner, MREC, Interstitial, and Rewarded now work across the full Fyber 8.x line.

  #### Platform Support

  * iOS: CloudXCore \~> 3.4.4
  * Android: io.cloudx:sdk:4.1.3
</Update>

<Update label="June 4, 2026" tags={["Dashboard"]}>
  ### Dashboard — Help menu resources

  <img src="https://mintcdn.com/cloudx-928dcb24/z_PsOpojihp-l1VS/images/help-menu-changelog.png?fit=max&auto=format&n=z_PsOpojihp-l1VS&q=85&s=4836eef4f44185c6d12950acbb3ecde7" alt="Dashboard Help menu changelog preview" width="1478" height="869" data-path="images/help-menu-changelog.png" />

  The Dashboard **Help** menu now brings product help, support, and release updates into one place.

  Open **Help** in the sidebar to:

  * open CloudX documentation
  * contact the support team
  * browse recent releases under **What's new**
  * open a release preview in the in-app changelog dialog
  * jump to the full docs timeline from **Changelog**
</Update>

<Update label="June 2, 2026" tags={["iOS"]}>
  ### iOS SDK 3.4.4

  #### 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.
</Update>

<Update label="June 1, 2026" tags={["iOS","Unity"]}>
  ### iOS SDK 3.4.3

  #### 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.

  ### Unity SDK 4.1.3

  #### SDK Updates

  * Updated Android SDK from 4.1.1 to 4.1.3 — see [Android SDK changelog](/en/android/changelog#413---2026-05-31) for details
  * Updated iOS SDK from 3.4.1 to 3.4.2 — see [iOS SDK changelog](/en/ios/changelog#342---2026-05-29) for details
  * Added Google Waterfall and Digital Turbine adapter support for Android and iOS
</Update>

<Update label="May 31, 2026" tags={["Android"]}>
  ### Android SDK 4.1.3

  #### Changed

  * **Resilient Adapter Initialization** - A slow ad network adapter no longer blocks SDK initialization. Each adapter gets a soft init timeout; the SDK finishes initializing while it continues starting up in the background. Not-ready adapters are held out of auctions until they finish.
</Update>

<Update label="May 29, 2026" tags={["iOS","CLI","API"]}>
  ### iOS SDK 3.4.2

  #### 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.

  ### CloudX CLI 0.34

  #### Expanded config writes

  CloudX CLI 0.34 extends `cloudx config edit` beyond line items to cover apps, ad units, ad unit groups, lists, tags, test devices, network mappings, and A/B test lifecycle commands.

  #### Added

  * **Draft inventory edits** — Added create, update, delete, and upsert commands for the main inventory entities. Draft edits validate automatically and still require `cloudx config publish` unless noted. [Read the docs →](/en/cli/configuration#cloudx-config-edit)
  * **A/B test writes** — Added A/B test create, update, start, end, promote, and delete commands. Lifecycle changes publish the resulting config immediately. [Read the docs →](/en/cli/configuration#cloudx-config-edit)

  ### CloudX API — Configuration writes

  The public API now exposes typed config write operations through `POST /config/edit` for apps, ad units, ad unit groups, lists, tags, test devices, network mappings, line items, and A/B tests.
</Update>

<Update label="May 28, 2026" tags={["Android"]}>
  ### Android SDK 4.1.2

  #### Added

  * **Native-in-Banner Rendering** - Native ad demand from supported adapters, including Meta, Moloco, and Vungle, can now serve into standard banner and MREC slots through the existing banner public API.

  #### Changed

  * **Server-Driven Always-Reward Mode** - Rewarded ad adapters now honor a `shouldAlwaysRewardUser` flag configured per-line-item in the dashboard. The SDK fires the reward callback even for networks that don't always deliver a reward signal. No integration change required.
</Update>

<Update label="May 27, 2026" tags={["iOS","Unity"]}>
  ### iOS SDK 3.4.1

  #### 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.

  ### Unity SDK 4.1.0

  #### What's New

  * Added `CloudXSdk.Arbiter(bids, onCompleted)` for running a trusted-arbiter auction from Unity
  * Added `SetBannerExtraParameter(adUnitId, key, value)`, `SetMRecExtraParameter(adUnitId, key, value)`, `SetInterstitialExtraParameter(adUnitId, key, value)`, and `SetRewardedExtraParameter(adUnitId, key, value)` to pass network-specific parameters to each ad format

  #### SDK Updates

  * Updated Android SDK from 4.0.0 to 4.1.1 — see [Android SDK changelog](/en/android/changelog#411---2026-05-27) for details
  * Updated iOS SDK from 3.2.0 to 3.4.1 — see [iOS SDK changelog](/en/ios/changelog#341---2026-05-27) for details
  * Added Moloco and Verve adapter support for Android and iOS
</Update>

<Update label="May 26, 2026" tags={["Android"]}>
  ### Android SDK 4.1.1

  #### Added

  * **Digital Turbine Adapter Support** - Added SDK support for the Digital Turbine Android adapter. Adapter artifacts continue to be released independently.
  * **Expanded Network Mappings** - Added SDK network mappings for BidMachine, Chartboost, Digital Turbine, LoopMe, MobileFuse, Pangle, PubMatic, and Yandex so compatible adapters can be released independently as they become available.

  #### Changed

  * **Digital Turbine Adapter Metadata** - Updated Digital Turbine adapter metadata and error reporting compatibility for CloudX SDK 4.1.1.
  * **Google Waterfall Adapter** - Updated Google Waterfall support to Google Mobile Ads SDK 25.1.0 and added fallback banner/MREC impression reporting when AdMob impression-level revenue callbacks are unavailable.
</Update>

<Update label="May 25, 2026" tags={["React Native"]}>
  ### React Native SDK 3.4.0

  #### Added

  * **Trusted Arbiter** - Added support for comparing CloudX bids with supported third-party bids from Unity LevelPlay and PubMatic, and selecting the winning platform through CloudX arbitration.
  * **Ad metadata** - Added `CloudXAdInfo.adValues` for SDK-provided loaded-ad metadata used by features such as Trusted Arbiter.
  * **Additional adapter coverage** - Updated setup guidance for the latest supported iOS and Android adapter set, including Google Waterfall, Moloco, and Verve where supported by the underlying native SDKs.

  #### Changed

  * Updated underlying native SDK pins to iOS `CloudXCore ~> 3.4.0` and Android `io.cloudx:sdk:4.1.0`.

  #### Platform Support

  * iOS: CloudXCore \~> 3.4.0
  * Android: io.cloudx:sdk:4.1.0
</Update>

<Update label="May 22, 2026" tags={["Android","iOS"]}>
  ### Android SDK 4.1.0

  #### Added

  * **Trusted Arbiter** - Added support for comparing CloudX bids with supported third-party bids from Unity LevelPlay and PubMatic, and selecting the winning platform through CloudX arbitration.
  * **LevelPlay Impression-Level Revenue Data** - Added impression-level revenue tracking via Unity LevelPlay integration, alongside the existing AppLovin ILRD support.
  * **Ad Value Accessors** - Added `CloudXAd.adValues` for SDK-provided ad metadata.
  * **Expanded Network Support** - Added SDK support for Google Waterfall, Moloco, and Verve adapters. Adapter artifacts continue to be released independently.
  * **MRAID 3.0 Ad View Rendering** - Added CloudX renderer support for MRAID 3.0 banner and MREC creatives.

  ### iOS SDK 3.4.0

  #### 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.
</Update>

<Update label="May 21, 2026" tags={["CLI"]}>
  ### CloudX CLI 0.33

  #### Config validation, line-item edits, and publishing

  CloudX CLI 0.33 adds the ability to edit line items directly from your configuration workflow, publish reviewed drafts, and validate local YAML files or remote configs.

  To update an existing Homebrew installation to this release:

  ```bash theme={null}
  brew upgrade cloudx
  ```

  #### Added

  * **Config validation** — Added `cloudx config validate [file]` for validating local YAML files, plus remote validation of the live config, a published version, or a draft by ID. Use `--strict` to fail on warnings. [Read the docs →](/en/cli/configuration#cloudx-config-validate)
  * **Line-item writes** — Added `cloudx config edit create-line-item`, `cloudx config edit update-line-item`, and `cloudx config edit delete-line-item` for preparing line-item changes in a draft config. Draft edits run validation and never publish automatically. [Read the docs →](/en/cli/configuration#cloudx-config-edit)
  * **Configuration publishing** — Added `cloudx config publish --id <draft-id>` to publish a validated draft as the live config. [Read the docs →](/en/cli/configuration#cloudx-config-publish)
  * **CLI upgrade notice** — The CLI now shows a terminal notice when the CloudX API reports that a newer CLI version is available, with a link to update instructions.
</Update>

<Update label="May 15, 2026" tags={["API","Dashboard"]}>
  ### CloudX API — Public API release

  CloudX now has a public API for programmatic access to reporting, auction inspection, and account configuration data. The API uses CloudX API keys as [bearer tokens](/en/api#authentication) and is documented with an interactive OpenAPI reference. [Read the docs →](/en/api)

  #### Added

  * **Reporting endpoints** — Retrieve dashboard summaries, breakdown rows, bidder performance, app performance, ad-unit performance, and CSV-style exports.
  * **Auction inspection endpoints** — Inspect auctions, rounds, bids, ILRD rows, and related delivery details.
  * **Configuration endpoints** — Read live, draft, and published account configuration, including configuration history.

  ### Dashboard — Frequency caps

  CloudX Dashboard now supports SSP frequency caps for both ad units and segments.

  You can now:

  * cap a specific ad unit by `hour`, `day`, or `session`
  * cap traffic routed through a specific segment
  * set a default cap for requests that do not include any segments

  Frequency caps are evaluated before the auction and counted on impression, so once capped inventory reaches its limit, CloudX returns no fill instead of continuing to serve. Ad-unit configuration is documented in [Ad units](/en/dashboard/ad-units).
</Update>

<Update label="May 13, 2026" tags={["CLI"]}>
  ### CloudX CLI 0.32

  To update an existing Homebrew installation to this release:

  ```bash theme={null}
  brew upgrade cloudx
  ```

  #### Added

  * **API-key authentication** — `CLOUDX_API_KEY` support for CI, scheduled jobs, scripts, and other non-interactive workflows. API keys are managed by administrators in Settings > API Keys. [Read the docs →](/en/cli/authentication#api-key)
  * **CloudX breakdown reporting** — `cloudx report breakdown --by <dimensions> --metrics <metrics>` for CloudX-only aggregate reporting across requests, impressions, revenue, fill rate, eCPM, clicks, and CTR.
  * **Report granularity and controls** — `cloudx report dashboard` and `cloudx report export` support `--granularity daily|hourly`; breakdown reports add hourly buckets, sorting, and filters with `--granularity hourly`, `--top`, `--bottom`, and `--having`.
  * **Configurable request timeout** — Global `cloudx --timeout <duration>` for API requests. The default remains `1m`, and values are capped at `2m`. [Read the docs →](/en/cli#root-flags)
</Update>

<Update label="May 12, 2026" tags={["React Native"]}>
  ### React Native SDK 3.2.0

  This release updates the React Native SDK to use CloudX native SDK 3.2.0 on
  both iOS and Android. There are no required JavaScript API changes for
  publishers upgrading from 3.1.2.

  #### Added

  * **Magnite adapter support** — adds Magnite adapter package support on both
    iOS and Android.
  * **Improved diagnostics** — expands native event visibility for dashboard and
    operational troubleshooting.
  * **(Android) Bid-floor controls** — adds support for native bid-floor controls
    in the ad request path.

  #### Changed

  * Updated underlying native SDKs from 3.1.0 to 3.2.0.
  * **(Android) Banner lifecycle handling** — improves banner view attach and
    detach behavior for more consistent adapter behavior.

  #### Fixed

  * **(Android) Adapter discovery diagnostics** — missing adapter dependencies now
    report clearer diagnostics.
  * **(Android) Banner load errors** — banner load failures now provide clearer
    diagnostics when a network reports a loaded banner without a renderable banner
    view.

  #### Platform Support

  * iOS: CloudXCore \~> 3.2.0
  * Android: io.cloudx:sdk:3.2.0
</Update>

<Update label="May 7, 2026" tags={["CLI"]}>
  ### CloudX CLI 0.31

  #### Cross-mediator report sources

  CloudX CLI 0.31 adds report source filtering for publishers that forward impression-level revenue data from external mediation platforms. Existing report commands stay CloudX-only by default, and `--source` can be used to opt into mediator ILRD where supported.

  To update an existing Homebrew installation to this release:

  ```bash theme={null}
  brew upgrade cloudx
  ```

  #### Added

  * **Report source filtering** — Added `--source` to `cloudx report dashboard`, `cloudx report apps`, and `cloudx report ad-units`. Use `--source all` for CloudX plus all available external mediator sources, `--source applovin` for one mediator, or `--source cloudx,applovin` for side-by-side comparison.
  * **Source-aware report metrics** — Dashboard, app, and ad-unit reports can now include external mediator ILRD for revenue, impressions, eCPM, and revenue share. Fill rate remains CloudX-only when external mediators are included because external ILRD does not include CloudX request counts.
  * **Clearer source semantics** — `--source` uses the mediator/platform source from ILRD, such as `applovin`, not downstream demand network names such as `ADMOB_BIDDING`. [Read the docs →](/en/cli/reporting#source-values)
</Update>

<Update label="May 6, 2026" tags={["CLI"]}>
  ### CloudX CLI 0.30

  #### Auction list performance and timeout handling

  CloudX CLI 0.30 focuses on making auction inspection more reliable during heavier searches and making timeout failures easier to understand.

  To update an existing Homebrew installation to this release:

  ```bash theme={null}
  brew upgrade cloudx
  ```

  #### Improved

  * **Faster auction lists with ILRD filters** — Improved `cloudx auction list` performance when working with ILRD-heavy searches, especially when narrowing results by external ILRD and mediator.
  * **Longer default request timeout** — Increased the default CLI timeout to 60 seconds, giving heavier requests more time to complete.
  * **Clearer timeout errors** — Timeout failures now show a clearer CLI message instead of a low-level networking error.
  * **Better timeout visibility** — Timed-out CLI requests are easier for CloudX support to identify and diagnose.
</Update>

<Update label="May 5, 2026" tags={["CLI"]}>
  ### CloudX CLI 0.29

  #### Auction and config inspection

  CloudX CLI 0.29 expands the terminal workflow from reporting into production debugging. You can now inspect auctions, rounds, bids, ILRD payloads, live configs, drafts, and published config history without switching to the dashboard.

  To update an existing Homebrew installation to this release:

  ```bash theme={null}
  brew upgrade cloudx
  ```

  #### Added

  * **Auction inspection** — Added `cloudx auction list`, `cloudx auction show`, `cloudx auction rounds`, and `cloudx auction bids` for reviewing auction records, related rows, aggregate round metrics, bid and non-bid rows, floor sources, CloudX ILRD, and opted-in external mediator ILRD. [Read the docs →](/en/cli/auction-inspection)
  * **Config inspection** — Added `cloudx config show` for live configs, published versions, drafts, and config rows addressed by ID, with YAML output by default and JSON output for automation. [Read the docs →](/en/cli/configuration)
  * **Config history** — Added `cloudx config history` for published config history, creator filtering, recent-change filtering, draft inclusion, and publish-time diff summaries.
  * **Workflow examples** — Updated CLI examples and overview pages with auction, config, JSON, and combined reporting workflows. [See examples →](/en/cli/examples)
</Update>

<Update label="April 28, 2026" tags={["Unity","Dashboard"]}>
  ### Unity SDK 4.0.0

  #### What's New

  * Added Unity Package Manager (UPM) consumer support so the SDK can be referenced from internal UPM packages. Runtime and editor scripts now ship with assembly definitions (`CloudX.Sdk` and `CloudX.Sdk.Editor`).
  * Removed the runtime dependency on `Newtonsoft.Json`. The SDK no longer requires `com.unity.nuget.newtonsoft-json` to be present in your project.

  #### SDK Updates

  * Updated Android SDK from 3.2.0 to 4.0.0 — see [Android SDK changelog](/en/android/changelog#400---2026-04-28) for details

  ### Dashboard — A/B Testing

  <img src="https://mintcdn.com/cloudx-928dcb24/zHnaYStoMeMoy9QU/images/ab-tests.png?fit=max&auto=format&n=zHnaYStoMeMoy9QU&q=85&s=3194e1886240f7af4ba69f665eeac3e1" alt="A/B testing" width="2608" height="1490" data-path="images/ab-tests.png" />

  Stop guessing whether a new line item, bid floor, or network configuration will actually move the needle. **A/B Testing** lets you split impressions between your current setup and an edited variant, then watch them race head-to-head on the metrics that matter — revenue, eCPM, fill rate, and impressions — all in real time, in production.

  When the data is in, promoting the winner takes a click. Open any active ad unit, hit **Create A/B test**, and start optimizing your monetization strategy with the rigor your revenue deserves. [Read the docs →](/en/dashboard/ab-testing)
</Update>

<Update label="April 27, 2026" tags={["Android","MCP"]}>
  ### Android SDK 4.0.0

  #### Breaking Changes

  * **Adapter Version Compatibility** - Adapters now declare their minimum CloudX SDK version. The SDK skips incompatible adapters during initialization.

  #### Added

  * **Independent Adapter Versions** - CloudX adapters are now released independently from the core SDK, allowing compatible adapter updates to ship on their own release schedule.

  #### Changed

  * **Publisher Release Builds** - Improved release-build compatibility by preserving the CloudX runtime classes required for SDK initialization and adapter loading.

  #### Fixed

  * **Release Build Initialization** - Fixed an issue that could prevent SDK initialization in minified publisher builds.

  ### CloudX MCP — AI-native reporting and docs search

  The numbers you need, the way you ask. CloudX now has a hosted **Model Context Protocol** server that plugs straight into ChatGPT, Claude Code, Cursor, Codex, and any other MCP client of your choosing — so your AI assistant can pull live revenue, fill rate, eCPM, and bidder performance from CloudX without you copy-pasting between tabs.

  Ask *"how did US iOS traffic perform last week?"* and get the actual numbers back, filtered exactly the way you'd filter them in the dashboard. Ask *"how do I integrate the Magnite adapter?"* and get an answer grounded in our real docs. [Read the docs →](/en/mcp/installation)
</Update>

<Update label="April 24, 2026" tags={["Android","Unity"]}>
  ### Android SDK 3.2.0

  #### Added

  * **Magnite Adapter** - Added Magnite adapter support for banner, interstitial, and rewarded ads.
  * **Per-Request Bid Floor Overrides** - Added APIs for per-request bid floor overrides so publishers can send request-scoped floor controls through the SDK bid pipeline.

  #### Changed

  * Improved banner and MREC lifecycle handling across adapters for more consistent rendering, refresh, and cleanup behavior.

  #### Fixed

  * Improved SDK resilience when optional adapter or network SDK dependencies are missing at runtime.
  * Fixed Vungle banner load errors so invalid banner load states are surfaced through SDK error callbacks.

  ### Unity SDK 3.2.0

  #### What's New

  * Added `DestroyInterstitial(adUnitId)` and `DestroyRewarded(adUnitId)` to the Unity API so fullscreen ads can be explicitly destroyed and cleaned up

  #### SDK Updates

  * Updated Android SDK from 3.1.0 to 3.2.0 — see [Android SDK changelog](/en/android/changelog#320---2026-04-24) for details
  * Updated iOS SDK from 3.1.0 to 3.2.0 — see [iOS SDK changelog](/en/ios/changelog#320---2026-04-22) for details
  * Added Magnite adapter support for Android and iOS
</Update>

<Update label="April 22, 2026" tags={["iOS","CLI"]}>
  ### iOS SDK 3.2.0

  #### 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.

  ### CloudX CLI 0.28

  #### CloudX in your terminal

  <img src="https://mintcdn.com/cloudx-928dcb24/lauTnLtSAc2kfy_H/images/cli-demo.png?fit=max&auto=format&n=lauTnLtSAc2kfy_H&q=85&s=7f70ec770c10a22f26cef9d781816fba" alt="CLI dashboard report" width="1750" height="1104" data-path="images/cli-demo.png" />

  Some questions don't need a browser. With the new **CloudX CLI**, your daily numbers are one keystroke away — `cloudx report dashboard` shows revenue, fill rate, eCPM, and trends right next to your prompt. Filter by country, platform, ad unit, or test traffic the same way you would in the dashboard.

  When you need data downstream, switch to `--json` for structured output or `cloudx report export` for CSV ready to pipe into a spreadsheet, a notebook, or another tool. Install with `brew install cloudx`, sign in once, and your reporting workflow follows you wherever you work. [Read the docs →](/en/cli)
</Update>

<Update label="April 21, 2026" tags={["React Native"]}>
  ### React Native SDK 3.1.2

  Major bump aligning the React Native SDK with the 3.1.0 native SDKs, and adds
  a manual privacy API in JavaScript.

  <Note>
    **Install `3.1.2` or later — `3.1.0` and `3.1.1` are not installable.** Both
    earlier 3.1 versions were removed from npm after a release-build issue on
    iOS. `3.1.2` is the first installable release of the 3.1 line.
  </Note>

  <Note>
    Native Ads support is tracked separately and is **not** part of this release.
  </Note>

  #### Added

  * **Manual Privacy API** — `CloudX.setHasUserConsent(value)` and `CloudX.setDoNotSell(value)` bridge to the native privacy APIs on iOS and Android. Accepts `boolean` to set, or `null` to clear a previously set value and fall back to the IAB storage.
  * **Error Codes** — added `LOAD_NOT_ALLOWED_WHILE_SHOWING` (303) and `ADAPTER_INITIALIZATION_TIMEOUT` (622) to `CloudXErrorCode`.

  #### Changed

  Updated underlying native SDKs from 2.2.3 to 3.1.0. For full platform-specific
  details, see the native changelogs:

  * [iOS Changelog](/en/ios/changelog)
  * [Android Changelog](/en/android/changelog)

  This SDK now pins iOS `CloudXCore ~> 3.1.0` and Android `io.cloudx:sdk:3.1.0`,
  and all bundled adapters pin to the same major. The native Android SDK's new
  `Context` requirement is handled by the bridge — no publisher code changes
  required.

  #### Fixed

  * **(iOS) Release-build compile error** — resolves a compile error that prevented archiving an app against the earlier 3.1.0 and 3.1.1 builds for App Store submission.
  * **Banner and MREC render delay** — on some devices, a banner or MREC could report a successful load but stay blank until the next auto-refresh (\~30 seconds later). The first impression now renders immediately on show.

  #### Upgrading from 2.2.3

  * **(iOS) Remove any manual top-inset workaround.** If you passed the device's top safe-area inset as `yOffset` to `CloudXBannerAd.createAdWithOffsets` (e.g., `insets.top` from `react-native-safe-area-context`), remove it; an extra offset now pushes the banner below the safe area.
  * **(iOS) `TOP_CENTER` and `BOTTOM_CENTER` banners now position themselves inside the safe area automatically.** Use `CloudXBannerAd.createAd(adUnitId, CloudXAdPosition.TOP_CENTER)` for the default placement.
  * **Banner and MREC view lifecycle.** Banner and MREC ads now load detached from your view hierarchy and attach to the presenting view controller (iOS) or root content view (Android) on `showBanner` / `showMREC`. Noted for publishers who inspect the native view hierarchy between create and show.
  * **Pre-load banners and MRECs into memory.** Because ads load detached, you can now pre-load a banner or MREC and show it later without it occupying a parent view in the meantime.

  #### Platform Support

  * iOS: CloudXCore \~> 3.1.0
  * Android: io.cloudx:sdk:3.1.0
</Update>

<Update label="April 17, 2026" tags={["Android","Unity"]}>
  ### Android SDK 3.1.0

  #### Added

  * **Native Ads** - Added native ad support with `CloudX.createNativeAdLoader()`, `CloudXNativeAdLoader`, `CloudXNativeAd`, `CloudXNativeAdListener`, and `CloudXNativeLoaderConfiguration`, backed by the Meta adapter.

  #### Changed

  * Improved adapter initialization, privacy forwarding, and ad load/show reliability across supported networks.
  * Reduced startup and initialization work on the main thread to improve app launch stability and lower ANR risk.
  * **Unity 2022 Meta Compatibility** - `adapter-meta` now brings in Meta Audience Network `6.20.0` transitively by default for Unity 2022 compatibility. If your integration uses native ads, explicitly add Meta Audience Network `6.21.0` or newer in your app:
    ```kotlin theme={null}
    dependencies {
        implementation("io.cloudx:adapter-meta:3.1.0")
        implementation("com.facebook.android:audience-network-sdk:6.21.0")
    }
    ```

  #### Fixed

  * Improved SDK resilience for missing network SDK dependencies and adapter load failures.

  ### Unity SDK 3.1.0

  #### What's New

  * Revenue-paid callbacks are now delivered immediately and may run off the Unity main thread on Android and iOS

  #### Integration Notes

  * Do not touch Unity scene or UI APIs directly inside `OnAdRevenuePaid`. Dispatch back to the main thread first if needed.

  #### SDK Updates

  * Updated Android SDK from 3.0.0 to 3.1.0 — see [Android SDK changelog](/en/android/changelog#310---2026-04-17) for details
  * Updated iOS SDK from 2.2.8 to 3.1.0 — see [iOS SDK changelog](/en/ios/changelog#310---2026-04-16) for details
</Update>

<Update label="April 16, 2026" tags={["iOS"]}>
  ### iOS SDK 3.1.0

  #### 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.
</Update>

<Update label="April 9, 2026" tags={["iOS"]}>
  ### iOS SDK 2.2.9

  #### Fixed

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

<Update label="April 6, 2026" tags={["Android","Unity"]}>
  ### Android SDK 3.0.0

  #### Breaking Changes

  * `CloudX.initialize()` now requires an Android `Context`, and the public ad creation APIs now require `Context` as well: `createBanner()`, `createMREC()`, `createInterstitial()`, and `createRewarded()`.

  #### Changed

  * Removed automatic process-start initialization; apps now provide `Context` explicitly through SDK initialization and ad creation APIs.
  * Reduced SDK work before `CloudX.initialize()` is called, lowering main-thread startup overhead and ANR risk.

  ### Unity SDK 3.0.0

  #### SDK Updates

  * Updated Android SDK from 2.2.7 to 3.0.0 — see [Android SDK changelog](/en/android/changelog#300---2026-04-06) for details
  * Updated iOS SDK from 2.2.7 to 2.2.8 — see [iOS SDK changelog](/en/ios/changelog#228---2026-04-03) for details
</Update>

<Update label="April 3, 2026" tags={["iOS"]}>
  ### iOS SDK 2.2.8

  #### Fixed

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

<Update label="April 2, 2026" tags={["Android","Unity"]}>
  ### Android SDK 2.2.7

  #### Fixed

  * Reduced startup ANR risk for apps that include the SDK before calling `CloudX.initialize()`.

  ### Unity SDK 2.2.7

  #### What's New

  * Added first-party metrics telemetry coverage across Android SDK call sites through the updated Android SDK
  * Fixed iOS banner display after deferred initialization and improved Vungle adapter runtime reliability through the updated iOS SDK

  #### Integration Notes

  * The Unity integration flow and banner/MREC placement/custom-data ordering guidance introduced in `2.2.6` remain unchanged in this release

  #### SDK Updates

  * Updated Android SDK from 2.2.6 to 2.2.7 — see [Android SDK changelog](/en/android/changelog#227---2026-04-02) for details
  * Updated iOS SDK from 2.2.6 to 2.2.7 — see [iOS SDK changelog](/en/ios/changelog#227---2026-04-01) for details
</Update>

<Update label="April 1, 2026" tags={["Android","iOS","Unity"]}>
  ### Android SDK 2.2.6

  #### Changed

  * Improved ad lifecycle, revenue, and crash reporting reliability across SDK and network-adapter events.
  * Improved banner, interstitial, and rewarded event attribution so placement and custom data are tracked consistently.

  #### Fixed

  * Improved error reporting for bid response parsing, adapter initialization, and ad load failure paths.

  ### iOS SDK 2.2.7

  #### 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

  ### Unity SDK 2.2.6

  #### What's New

  * Added `isAdReady` support across fullscreen adapters through the updated Android and iOS SDKs
  * Added Unity Ads privacy consent forwarding through the updated iOS SDK

  #### Integration Notes

  * For Unity banner and MREC ads, call `SetBannerPlacement(...)` / `SetBannerCustomData(...)` and `SetMrecPlacement(...)` / `SetMrecCustomData(...)` before `CreateBanner(...)` or `CreateMrec(...)` if you want those values applied to the first ad request

  #### SDK Updates

  * Updated Android SDK from 2.2.4 to 2.2.6 — see [Android SDK changelog](/en/android/changelog#226---2026-04-01) for details
  * Updated iOS SDK from 2.2.4 to 2.2.6 — see [iOS SDK changelog](/en/ios/changelog#226---2026-03-30) for details
</Update>

<Update label="March 30, 2026" tags={["Android","iOS"]}>
  ### Android SDK 2.2.5

  #### Added

  * Added `CloudXErrorCode.LOAD_NOT_ALLOWED_WHILE_SHOWING` for fullscreen `load()` calls made while the same ad instance is actively showing.
  * Added fullscreen adapter readiness checks across interstitial and rewarded adapters.

  #### Changed

  * Improved fullscreen ad readiness handling so expired or invalidated network ads are no longer reported as ready.
  * Improved fullscreen ad reuse behavior to avoid serving stale cached ads.

  #### Fixed

  * Fixed fullscreen `load()` being accepted during an active show; it now fails immediately with `onAdLoadFailed(..., LOAD_NOT_ALLOWED_WHILE_SHOWING)`.
  * Fixed stale fullscreen ads being reported as ready after the network SDK had already invalidated or expired the underlying ad object.
  * Fixed Mintegral GDPR consent propagation for CMP-managed integrations.

  ### iOS SDK 2.2.6

  #### 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
</Update>

<Update label="March 27, 2026" tags={["Unity"]}>
  ### Unity SDK 2.2.4

  #### What's New

  * Added `SetHasUserConsent(bool?)` and `SetDoNotSell(bool?)` for manual privacy overrides before initialization
  * Added automatic `NSUserTrackingUsageDescription` injection during the iOS post-process step when the app has not defined one yet

  #### Fixes

  * Fixed Android banner view initialization so newly created banner views start hidden until you show them
  * Fixed iOS interstitial and rewarded show-failure callbacks so `OnAdShowFailed` now includes both the failed `CloudXAd` and the corresponding `CloudXError`, matching the Unity callback contract
  * Updated the Unity demo app to initialize banner and MREC views once and retry fullscreen ads after both load failures and show failures

  #### SDK Updates

  * Updated Android SDK from 2.2.3 to 2.2.4 — see [Android SDK changelog](/en/android/changelog#224---2026-03-26) for details
  * Updated iOS SDK from 2.2.3 to 2.2.4 — see [iOS SDK changelog](/en/ios/changelog#224---2026-03-26) for details
</Update>

<Update label="March 26, 2026" tags={["Android","iOS","React Native"]}>
  ### Android SDK 2.2.4

  #### Added

  * **Server-Driven Location Sharing** - Added server-controlled location sharing with publisher opt-out support and reduced coordinate precision.
  * Added server-controlled remote log collection to help diagnose publisher integration issues.
  * Added content-language targeting support in bid requests.
  * Added more granular no-fill reasons in SDK error messages.

  #### Changed

  * Improved SDK diagnostic and crash reporting reliability for ad lifecycle events.

  #### Fixed

  * Fixed release-build rules so CloudX adapters are preserved correctly in minified apps.
  * Fixed Mintegral adapter crash on Android API 23.

  ### iOS SDK 2.2.4

  #### 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

  ### React Native SDK 2.2.3

  #### Added

  * **Unity Ads Adapter** — Unity Ads now available for banner, interstitial, and rewarded ads (iOS and Android)
  * **Mintegral Adapter** — Mintegral adapter now available as a standard release (iOS and Android)

  #### Improved

  * **Fullscreen Ad Reliability** — Fixed issues where loading a fullscreen ad while another was showing could silently fail (iOS), and ad reload now works correctly in hidden/display-failed callbacks (Android)
  * **Error Diagnostics** — Improved error visibility for no-bid scenarios, making it easier to diagnose fill rate issues
  * **Reduced SDK Footprint** — (Android) Removed `appcompat` and `webkit` transitive dependencies; renderer now bundled in the core SDK module

  #### Changed

  Updated underlying native SDKs from 2.0.0 to 2.2.3. For full platform-specific
  details, see the native changelogs:

  * [iOS Changelog](/en/ios/changelog)
  * [Android Changelog](/en/android/changelog)

  #### Platform Support

  * iOS: CloudXCore \~> 2.2.3
  * Android: io.cloudx:sdk:2.2.3
</Update>

<Update label="March 23, 2026" tags={["Unity"]}>
  ### Unity SDK 2.2.3

  #### SDK Updates

  * Updated Android SDK from 2.2.2 to 2.2.3 — see [Android SDK changelog](/en/android/changelog#223---2026-03-20) for details
  * Updated iOS SDK from 2.2.2 to 2.2.3 — see [iOS SDK changelog](/en/ios/changelog#223---2026-03-19) for details
  * Added Unity Ads adapter support for Android and iOS
</Update>

<Update label="March 20, 2026" tags={["Android"]}>
  ### Android SDK 2.2.3

  #### Added

  * Added server-controlled diagnostic log collection for integration support.

  #### Changed

  * Renamed the Unity adapter artifact to `adapter-unityads` and aligned Unity Ads naming across SDK setup and documentation.

  #### Fixed

  * Fixed Unity Ads network name casing to match server bidder configuration.
</Update>

<Update label="March 19, 2026" tags={["iOS","Flutter"]}>
  ### iOS SDK 2.2.3

  #### 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

  ### Flutter SDK 2.2.3

  First **public** release on [pub.dev](https://pub.dev/packages/cloudx_flutter). The Dart package **major.minor.patch** matches the **CloudX native** SDKs it ships against (iOS **CloudXCore**, Android **io.cloudx:sdk**).

  #### Requirements

  * **Dart SDK:** `>=2.17.1 <4.0.0` (see the package `pubspec` on pub.dev)
  * **Flutter:** `>=3.0.0`
  * **iOS:** 13.0+
  * **Android:** minSdk **23** (API 23)

  The Dart floor is set low on purpose so apps on older stable Flutter lines can adopt `cloudx_flutter` without a full toolchain jump.

  #### Included in this release

  * Banner, MREC, interstitial, and rewarded ads; programmatic overlay APIs and inline **`CloudXAdView`**
  * Listener callbacks, targeting key/values, impression-level revenue (**`onAdRevenuePaid`**), and related lifecycle events
  * Privacy helpers **`CloudX.setHasUserConsent`** and **`CloudX.setDoNotSell`** (nullable **`bool?`** clears overrides and defers to CMP where applicable)
  * Native pins: **CloudXCore 2.2.3** (iOS), **io.cloudx:sdk 2.2.3** (Android)

  #### Host app: network adapters

  The published plugin is **core-only**. Declare only the ad-network adapters you need in **CocoaPods** and **Gradle**, all at **2.2.3** (Meta, Vungle, InMobi, Mintegral, Unity Ads, renderer, etc.). For **Unity Ads**, add **`CloudXUnityAdsAdapter`** and **`io.cloudx:adapter-unityads`**. See the **[Flutter integration guide](/en/flutter/integration)** for copy-paste snippets.

  #### Android: Mintegral

  If you depend on **`io.cloudx:adapter-mintegral`**, you must add **Mintegral's Maven repository** to Gradle — artifacts are **not** on Maven Central. See **[Android integration — Mintegral Maven repository](/en/android/integration#mintegral-maven-repository)**.
</Update>

<Update label="March 17, 2026" tags={["Android","Unity"]}>
  ### Android SDK 2.2.2

  #### Added

  * Improved SDK initialization diagnostics by reporting adapter metadata.

  #### Fixed

  * Fixed InMobi bid token retrieval by ensuring token collection runs on the main thread.

  ### Unity SDK 2.2.2

  #### SDK Updates

  * Updated Android SDK from 2.2.1 to 2.2.2 — see [Android SDK changelog](/en/android/changelog#222---2026-03-17) for details
  * Updated iOS SDK from 2.0.0 to 2.2.2 — see [iOS SDK changelog](/en/ios/changelog#222---2026-03-16) for details
  * Lowered iOS minimum deployment target from 15.0 to 13.0
  * Added Mintegral adapter support (Android + iOS)
</Update>

<Update label="March 16, 2026" tags={["iOS"]}>
  ### iOS SDK 2.2.2

  #### 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
</Update>

<Update label="March 11, 2026" tags={["Android","Unity"]}>
  ### Android SDK 2.2.1

  #### Changed

  * Hardened the Mintegral adapter against null values and ad load exceptions across supported ad formats.
  * Bumped Mintegral SDK from `17.0.61` to `17.0.91`.

  #### Fixed

  * Fixed adapter bid extras collection so an exception from one adapter no longer prevents extras from subsequent adapters being included.

  ### Unity SDK 2.2.1

  #### SDK Updates

  * Updated Android SDK from 2.2.0 to 2.2.1 — see [Android SDK changelog](/en/android/changelog#221---2026-03-11) for details
  * Added Mintegral adapter and Maven repository for Android
</Update>

<Update label="March 10, 2026" tags={["Android","Unity"]}>
  ### Android SDK 2.2.0

  #### Added

  * **Impression-Level Revenue Data** - Added impression-level revenue tracking with CloudX auction correlation via AppLovin integration.
  * **Ad Click Tracking** - Added click notification support when users tap ads.
  * **Manual Privacy API** - Added `CloudX.setHasUserConsent()` and `CloudX.setDoNotSell()` with adapter privacy forwarding.
  * **Kotlin Suspend Initialization** - Added a suspend `CloudX.initialize(context, config)` overload for Kotlin callers.
  * **Device-Level Reporting** - Added Android ID based device-level reporting for DAU/MAU analytics when available.
  * **Adapter Error Diagnostics** - Added adapter error reporting across banner, interstitial, and rewarded ads.
  * **Network SDK Crash Reporting** - Added crash reporting for crashes originating from supported ad network SDKs.
  * **Creative Type Support** - Added creative type support in the CloudX renderer.

  #### Changed

  * Moved the CloudX renderer into the core SDK, so publishers no longer need a separate CloudX renderer adapter module.
  * Removed `appcompat` and `webkit` transitive dependencies from the SDK to reduce dependency surface area and APK size.
  * Improved reporting delivery reliability by retaining events for retry on transient send failures.
  * Bumped Vungle SDK from `7.6.1` to `7.7.1`.
  * Bumped InMobi SDK from `11.1.0` to `11.1.1`, including an upstream `BroadcastReceiver` leak fix.

  #### Fixed

  * Fixed location data handling for geo-based targeting and reporting.
  * Fixed incorrect `INVALID_APP_KEY` errors for non-config HTTP responses.
  * Improved retry classification for transient network and server errors.

  ### Unity SDK 2.2.0

  #### SDK Updates

  * Updated Android SDK from 2.0.1 to 2.2.0 — see [Android SDK changelog](/en/android/changelog#220---2026-03-10) for details
</Update>

<Update label="March 5, 2026" tags={["React Native"]}>
  ### React Native SDK 2.0.0

  First stable release of the CloudX React Native SDK.

  #### Added

  * Full SDK integration with banner, MREC, interstitial, and rewarded ad formats
  * Programmatic overlay APIs for banner (`CloudXBannerAd`) and MREC (`CloudXMRECAd`)
  * Fullscreen ad modules: `CloudXInterstitialAd` and `CloudXRewardedAd`
  * React hooks: `useCloudXInterstitial`, `useCloudXRewarded`, `useCloudXBanner`
  * Privacy compliance support (CCPA, GDPR, GPP via IAB shared storage)
  * User targeting with key-value pairs (`setUserKeyValue`, `setAppKeyValue`)
  * Impression-level revenue tracking via `addAdRevenuePaidListener`
  * App Tracking Transparency (ATT) support for iOS 14+
  * Display failure events (`addAdFailedToDisplayEventListener`) for interstitial and rewarded
  * Full TypeScript type definitions with CloudX-prefixed namespace
  * Fabric (New Architecture) and Paper (Legacy) support

  #### Fixed (iOS — since 2.0.0-beta.1)

  * Fixed duplicate `onInterstitialHidden` / `onRewardedAdHidden` callbacks firing twice on close
  * Fixed double revenue callback for rewarded ads
  * Fixed thread-safety crash in bid token dictionary construction
  * `showInterstitial` / `showRewarded` now emit display failure events when `topViewController` is nil (previously silent return)
  * `didFailToLoadAd:` now broadcasts to all fullscreen listeners when `adUnitId` is nil (previously silent)
  * `rewardAmount` sent as `NSNumber` instead of `NSString` (type alignment with Android and TypeScript)
  * Improved diagnostic logging for load/failure paths

  #### Platform Support

  * iOS: CloudXCore \~> 2.2.0-beta
  * Android: io.cloudx:sdk:2.0.0
</Update>

<Update label="March 4, 2026" tags={["Android","Unity"]}>
  ### Android SDK 2.0.1

  #### Changed

  * Improved Unity 2022.3 compatibility by removing database runtime dependencies from SDK event persistence.
  * Downgraded Meta Audience Network SDK from `6.21.0` to `6.20.0` to avoid Unity 2022.3 build incompatibilities.

  #### Fixed

  * Fixed a concurrency issue that could occur during impression tracking.
  * Fixed Meta rewarded ad handling for apps using `singleTask` launch mode.

  ### Unity SDK 2.0.1

  This patch release adds full compatibility with Unity Engine 2022.3.

  #### Compatibility

  * Added support for Unity Engine 2022.3 LTS

  #### SDK Updates

  * Updated Android SDK from 2.0.0 to 2.0.1 — see [Android SDK changelog](/en/android/changelog#201---2026-03-04) for details
</Update>

<Update label="February 26, 2026" tags={["React Native"]}>
  ### React Native SDK 2.0.0-beta.1

  #### Added

  * Initial full SDK integration with CloudX Core SDK
  * Banner ads via `CloudXBannerAd` module
  * MREC ads (300x250) via `CloudXMRECAd` module
  * Interstitial ads via `CloudXInterstitialAd` module
  * Rewarded ads via `CloudXRewardedAd` module
  * React hooks: `useCloudXInterstitial`, `useCloudXRewarded`, `useCloudXBanner`
  * Privacy compliance support (CCPA, GDPR, GPP)
  * User targeting with key-value pairs
  * Impression-level revenue tracking
  * App Tracking Transparency (iOS)
  * Full TypeScript type definitions
  * Fabric (New Architecture) and Paper (Legacy) support

  #### Platform Support

  * iOS: CloudXCore \~> 2.1.0-beta
  * Android: io.cloudx:sdk:2.0.0
</Update>

<Update label="February 5, 2026" tags={["Unity"]}>
  ### Unity SDK 2.0.0

  #### Breaking Changes

  * Banner and MREC ads no longer auto-load after creation. You must now call `LoadBanner()` or `LoadMrec()` explicitly after `CreateBanner()` or `CreateMrec()`
  * `CloudXAd` property renames:
    * `PlacementName` is now `AdUnitId`
    * `BidderName` is now `NetworkName`

  #### What's New

  * Added placement and custom data support for all ad formats:
    * `SetBannerPlacement(adUnitId, placement)` and `SetBannerCustomData(adUnitId, customData)`
    * `SetMRecPlacement(adUnitId, placement)` and `SetMRecCustomData(adUnitId, customData)`
    * `ShowInterstitial(adUnitId, placement?, customData?)` now accepts optional placement and customData parameters
    * `ShowRewarded(adUnitId, placement?, customData?)` now accepts optional placement and customData parameters
  * New `CloudXAd` properties: `AdFormat`, `Placement`, `NetworkPlacement`

  #### SDK Updates

  * Updated Android SDK from 0.12.1 to 2.0.0
  * Updated Android adapters from 0.12.1 to 2.0.0
  * Updated iOS CloudXCore from 1.3.0 to 2.0.0
  * Updated iOS CloudXRenderer from 1.3.0 to 2.0.0
  * Updated iOS adapters from 1.3.0 to 2.0.0
</Update>

<Update label="February 4, 2026" tags={["Android","iOS"]}>
  ### Android SDK 2.0.0

  This release replaces placement names with **Ad Unit IDs** from the CloudX dashboard. Update your `createBanner()`, `createMREC()`, `createInterstitial()`, and `createRewarded()` calls to use the ad unit ID instead of a placement name.

  #### Added

  * **Rewarded Ads** - Added rewarded ads with `CloudX.createRewarded()`, `CloudXRewardedAd`, `CloudXRewardedListener`, and `CloudXReward`.
  * **InMobi Adapter** - Added InMobi adapter support for banner, MREC, interstitial, and rewarded ads.
  * **Vungle Rewarded Ads** - Added rewarded ad support to the Vungle adapter.
  * Added `CloudX.isInitialized()` to check SDK initialization state.
  * Added `CloudX.getVersion()` to get the SDK version string.
  * Added `setPlacement()` and `setCustomData()` on `CloudXAdView` for tracking.
  * Added `show(activity, placement, customData)` overloads on fullscreen ads for tracking.
  * Added `CloudXSdkConfiguration` in the `onInitialized()` callback.
  * Added `CloudXAd.networkPlacement` for network-specific placement IDs.
  * Added new error codes: `NETWORK_NO_CONNECTION`, `AD_ALREADY_SHOWING`, `DONT_KEEP_ACTIVITIES_ENABLED`, `AD_NOT_READY`, and `INVALID_APP_KEY`.

  #### Breaking Changes

  * Bumped `minSdk` from 21 to 23.
  * Replaced `CloudXInitializationParams` with `CloudXInitializationConfiguration`.
  * Renamed `placementName` parameters to `adUnitId` in `createBanner()`, `createMREC()`, `createInterstitial()`, and `createRewarded()`.
  * Renamed `CloudXAd.placementId` to `adUnitId`.
  * Removed `CloudXAd.placementName`.
  * Renamed `CloudXAd.bidderName` to `networkName`.
  * Renamed `CloudXErrorCode.INVALID_PLACEMENT` to `INVALID_AD_UNIT`.
  * Changed `onAdLoadFailed(placementName, cloudXError)` to `onAdLoadFailed(adUnitId, cloudXError)`.
  * Changed `onAdDisplayFailed(cloudXError)` to `onAdDisplayFailed(cloudXAd, cloudXError)`.
  * Changed `onInitialized()` to `onInitialized(configuration: CloudXSdkConfiguration)`.
  * Removed the `testMode` initialization parameter; test mode is now server-controlled.
  * Changed `show()` to `show(activity)` for interstitial and rewarded ads.

  #### Changed

  * Updated Meta Audience Network SDK from `6.17.0` to `6.21.0`.

  #### Fixed

  * Fixed ad reload behavior in `onAdHidden` and `onAdDisplayFailed` callbacks.
  * Ensured all `load()` and `show()` callbacks are delivered on the UI thread.

  ### iOS SDK 2.0.0

  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
</Update>

<Update label="January 15, 2026" tags={["Unity"]}>
  ### Unity SDK 0.12.1

  #### What's New

  * Added support for iOS platform

  #### Performance Improvements

  * Android: BidToken is now generated on a background thread for improved performance

  #### SDK Updates

  * Updated Android SDK from 0.12.0 to 0.12.1

  #### Improvements

  * Renamed internal `UnityMainThreadDispatcher` class to avoid namespace collisions with third-party packages
</Update>

<Update label="December 23, 2025" tags={["Android"]}>
  ### Android SDK 0.12.1

  #### Fixed

  * Fixed an ANR risk in the Meta adapter caused by bid token collection on the main thread.

  ### Android SDK 0.11.1

  #### Fixed

  * Fixed an ANR risk in the Meta adapter caused by bid token collection on the main thread.
</Update>

<Update label="December 15, 2025" tags={["Unity"]}>
  ### Unity SDK 0.12.0

  Initial release of CloudX Unity SDK
</Update>

<Update label="December 14, 2025" tags={["Android","iOS"]}>
  ### Android SDK 0.12.0

  #### Breaking Changes

  * Removed `CloudXError.effectiveMessage`; use `message` directly instead.
  * Removed `setLoggingEnabled()`; use `setMinLogLevel(CloudXLogLevel.NONE)` to disable logging.
  * Removed `CloudXPrivacy`; privacy is now handled automatically through standard privacy signals.

  #### Changed

  * Enhanced GDPR support with GPP Section 2 parsing and vendor consent checking.
  * Simplified TCF purpose checks to only require purposes 1 and 2.
  * Added CCPA support via GPP with legacy US Privacy fallback.
  * Removed COPPA handling.
  * Added `CloudXLogLevel.NONE` for disabling logs.

  #### Fixed

  * Fixed geo API failure handling during initialization.

  ### iOS SDK 1.3.0

  #### 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
</Update>

<Update label="December 9, 2025" tags={["Android"]}>
  ### Android SDK 0.11.0

  #### Changed

  * Migrated the SDK HTTP client from Ktor `3.0.3` to OkHttp `4.12.0`.
  * Added destroyed-state guards across ad formats.
</Update>

<Update label="December 4, 2025" tags={["iOS"]}>
  ### iOS SDK 1.2.1

  #### 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
</Update>

<Update label="December 3, 2025" tags={["Android"]}>
  ### Android SDK 0.10.0

  #### Added

  * **Vungle Adapter** - Added Vungle adapter support for banner and interstitial ads.

  #### Changed

  * Simplified the log tag to `CloudX` for easier logcat filtering.
  * Added public API entry logging for easier integration debugging.
  * SDK initialization now fails early with a clear error when no adapters are found.

  #### Fixed

  * Fixed banner refresh stopping after load failure.
</Update>

<Update label="November 26, 2025" tags={["Android","iOS"]}>
  ### Android SDK 0.9.0

  #### Added

  * Added ad revenue tracking via `CloudXAdRevenueListener.onAdRevenuePaid()`.

  #### Changed

  * Upgraded Ktor from `2.3.8` to `3.0.3` for improved compatibility with apps using Ktor 3.x.

  #### Fixed

  * Fixed memory leaks in ad lifecycle management.
  * Improved SDK stability.

  ### iOS SDK 1.2.0

  #### 🚀 First Official Release

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

<Update label="November 3, 2025" tags={["Android"]}>
  ### Android SDK 0.6.0

  #### Added

  * Added `testMode` support to `CloudXInitializationParams` for requesting test ads during development.
</Update>

<Update label="October 27, 2025" tags={["Android"]}>
  ### Android SDK 0.4.0

  #### Added

  * Initial alpha release of CloudX Android SDK.
  * Added banner and MREC ad support.
  * Added interstitial ad support.
  * Added real-time bidding with CloudX mediation.
  * Added CloudX and Meta Audience Network adapter support.
  * Added privacy compliance support for GDPR, CCPA, US Privacy, TCF, and GPP signals.
  * Added session depth tracking for bid optimization.
  * Added ad lifecycle callbacks and error handling.
  * Added debug logging with configurable log levels.
</Update>
