Skip to content

Opera Ads iOS SDK - Release Notes

Version 2.9.0 (2026-04-02)

New Features

  • 🔗 Added missing bid request fields for broader DSP compatibility
  • 🔒 Exposed native ad privacy field for compliance support
  • 🎯 Implemented dual-condition impression reporting
  • 📡 Refactored SKAdNetwork attribution as Source App with startImpression/endImpression lifecycle
  • 🛒 Added SKOverlay support with configurable display strategies (auto/onImpression/onClick)

Improvements

  • ⚡ Preloaded lazy instances for better performance
  • 🔧 Adjusted impression ID handling
  • 📢 Notified template of click events for better tracking
  • 🕐 Fixed bid request timestamp unit issues

Configuration

  • ⚠️ Required: Add a2p9lx4jpn.skadnetwork to Info.plist SKAdNetworkItems for attribution support

Version 2.8.3 (2026-03-24)

New Features

  • 🎯 Enhanced debug logging system with emoji indicators and categorized tags
  • 📊 Improved ad analytics and reporting mechanisms
  • 🔧 Added comprehensive logging for SDK initialization with configuration details

Improvements

  • ⚡ Optimized ad loading performance
  • 🛡️ Enhanced error handling and recovery mechanisms
  • 📝 Improved error messages for better debugging

Bug Fixes

  • Fixed issue with banner ad auto-refresh in certain scenarios
  • Resolved memory leak in native ad view rendering
  • Fixed SKAdNetwork attribution tracking edge cases

Documentation

  • Added detailed debug logging guide for both Swift and OC demos
  • Updated integration documentation with latest best practices
  • Added comprehensive troubleshooting sections

Version 2.8.1 (2026-03-05)

New Features

  • 📈 Optimized ad reporting mechanism for better revenue tracking
  • 🎨 Enhanced MRAID support for rich media ads

Improvements

  • ⚡ Performance optimizations for ad rendering
  • 🔄 Improved ad refresh logic for banner ads
  • 📊 Enhanced analytics data collection

Bug Fixes

  • Fixed crash when loading ads on iOS 13.x devices
  • Resolved issue with native ad click tracking
  • Fixed memory retention in interstitial ad lifecycle

Version 2.8.0 (2026-02-12)

New Features

  • 🎯 Client-side bidding support for mediation adapters (AdMob, AppLovin MAX, TopOn)
  • 🚀 Enhanced In-App Bidding (C2S) APIs with improved error handling
  • 📱 App Open Ad format now available for all mediation platforms

Improvements

  • ⚡ Optimized SDK initialization to reduce app launch time
  • 🛡️ Improved thread safety in ad loading operations
  • 🌐 Enhanced network error handling and retry logic
  • 📊 Better analytics integration for impression tracking

Bug Fixes

  • Fixed ANR (App Not Responding) issues on older devices during initialization
  • Resolved race condition in parallel ad loading scenarios
  • Fixed video ad playback issues on iPad devices

Mediation Updates

  • AdMob Adapter 2.5.0.0: Added client bidding support
  • AppLovin Adapter 2.5.0.0: Enhanced stability and performance
  • TopOn Adapter 2.7.0.0: Updated for TopOn SDK 6.5.12+ compatibility

Version 2.7.0 (2026-02-02)

New Features

  • 🎬 App Open Ad format support
  • 🎁 Rewarded Interstitial Ads now publicly available
  • 📝 Enhanced logging for mediation adapters

Improvements

  • ⚡ Optimized SDK initialization for faster app launch (30% faster)
  • 🔧 Improved adapter initialization flow
  • 📊 Better error reporting in debug mode

Bug Fixes

  • Fixed issue with rewarded ad callbacks not firing in edge cases
  • Resolved banner ad sizing issues on certain iPad models
  • Fixed crash when showing interstitial ads in rapid succession

Mediation Updates

  • AdMob Adapter: Added App Open Ad support
  • TopOn Adapter: Added App Open Ad (Splash) support
  • AppLovin Adapter: Enhanced native ad rendering

Version 2.6.0 (2026-01-22)

New Features

  • 🔌 TradPlus mediation support added
  • 📦 Flexible dependency version management

Improvements

  • ⚡ Optimized library dependency versions for better compatibility
  • 🔄 Enhanced backward compatibility with older dependency versions
  • 📊 Improved mediation waterfall performance

Bug Fixes

  • Fixed pod installation conflicts with certain dependency versions
  • Resolved issue with native ad media view sizing
  • Fixed video ad mute state persistence

Version 2.5.0 (2026-01-13)

New Features

  • 🚀 App Open Ads format publicly available
  • 🎥 WebM video format support added
  • 📱 Enhanced video ad controls

Improvements

  • ⚡ Improved video ad loading speed
  • 🔊 Better audio session management for video ads
  • 📊 Enhanced video ad analytics

Bug Fixes

  • Fixed video ad aspect ratio issues on certain devices
  • Resolved audio playback conflicts with background music
  • Fixed rewarded ad completion tracking

Version 2.4.1 (2026-01-12)

Breaking Changes

  • ⚠️ SDK initialization now supports background thread (previously required main thread)

New Features

  • 🧵 Thread-safe SDK initialization
  • 📊 Server-Side Verification (SSV) callback support for rewarded ads

Improvements

  • ⚡ Faster SDK initialization on background thread
  • 🔒 Enhanced security for reward verification
  • 📝 Improved SSV callback documentation

Migration Guide

swift
// Old (v2.4.0 and earlier) - Required main thread
DispatchQueue.main.async {
    OpAdxSDK.initialize(withConfig: config)
}

// New (v2.4.1+) - Can initialize on any thread
DispatchQueue.global().async {
    OpAdxSDK.initialize(withConfig: config) {
        print("SDK initialized on background thread")
    }
}

Version 2.4.0 (2026-01-11)

New Features

  • 🔗 TopOn SDK 6.5.12+ compatibility
  • ✅ Server-Side Verification (SSV) for rewarded ads
  • 🎯 Enhanced reward validation

Improvements

  • 📊 Better reward tracking and analytics
  • 🔒 Enhanced security for incentivized ads
  • 📝 Improved SSV documentation with examples

Bug Fixes

  • Fixed reward callback timing issues
  • Resolved SSV callback URL encoding problems
  • Fixed custom data truncation in SSV callbacks

SSV Configuration

swift
// Configure SSV options
let ssvOptions = RewardSsvOptions.Builder()
    .userId("user_12345")              // Max 100 bytes after URL encoding
    .customData("level=5&score=1000")  // Max 1KB after URL encoding
    .build()

rewardedAd.setRewardSsvOptions(ssvOptions)

Version 2.3.0 (2026-01-08)

New Features

  • 🎯 Full client-side bidding (C2S) support
  • 📡 New In-App Bidding APIs
  • 🔧 Native ad enhancement for additional clickable views

Improvements

  • ⚡ Optimized bidding performance
  • 📊 Better bid price tracking
  • 🎨 Enhanced native ad customization

Bug Fixes

  • Fixed bid price rounding issues
  • Resolved race conditions in parallel bidding
  • Fixed native ad interaction tracking

C2S Bidding APIs

swift
// Get bid token
OpAdxSDK.getBidToken(request) { callback in
    callback.onSuccess { token in
        print("Bid token: \(token)")
    }
}

// Load with client bidding
let ad = OpAdxInterstitialAd(placementId: "xxx", auctionType: .clientBidding)
ad.load(listener: listener)

// Compare bids and notify
ad.getBid()?.notifyWin(secondPrice: 1.20, bidderName: "Network A")

Version 2.2.2 (2026-01-04)

New Features

  • 🔊 Audio control API for video ads
  • 🔄 OkHttp 3.x compatibility alongside OkHttp 4.x

Improvements

  • 🔇 Better audio session management
  • 📦 Flexible HTTP client version support
  • 🎥 Enhanced video ad controls

Bug Fixes

  • Fixed audio not muting in certain scenarios
  • Resolved HTTP client version conflicts
  • Fixed video ad resume after app backgrounding

Audio Control API

swift
// Mute all video ads
OpAdxSDK.setMuted(true)

// Unmute all video ads
OpAdxSDK.setMuted(false)

// Note: Must be called before loading ads

Version 2.2.0 (2025-12-11)

New Features

  • 📏 Upgraded Open Measurement SDK to version 1.6.1
  • 🔒 Enhanced security features

Improvements

  • 📊 Better viewability tracking
  • 🛡️ Improved fraud detection
  • 🔐 Enhanced data encryption

Bug Fixes

  • Fixed OMSDK session management issues
  • Resolved viewability tracking edge cases
  • Fixed impression verification delays

Version 2.1.0 (2025-12-03)

New Features

  • 🌐 Full S2S (Server-to-Server) bidding integration support
  • 🔗 TopOn mediation adapter support
  • 📡 Server bidding APIs

Improvements

  • ⚡ Optimized server communication
  • 📊 Enhanced bid response handling
  • 🔄 Better error recovery in bidding flow

Bug Fixes

  • Fixed bid response parsing issues
  • Resolved timeout handling in S2S bidding
  • Fixed placement ID validation

S2S Bidding APIs

swift
// Get bid token
let request = BidTokenRequest.Builder(adMediation: .topon)
    .placementId("xxx")
    .adFormat(.interstitial)
    .build()

OpAdxSDK.getBidToken(request) { callback in
    callback.onSuccess { token in
        // Send to your server
    }
}

// Load with bid response
let ad = OpAdxInterstitialAd(placementId: "xxx", auctionType: .serverBidding)
ad.load(bidResponse: "response_from_server", listener: listener)

Version 2.0.1 (2025-11-16)

Bug Fixes

  • Fixed iOS deployment target compatibility issue
  • Resolved CocoaPods version conflict
  • Fixed SwiftUI integration warnings

Version 2.0.0 (2025-11-05)

Major Release - Complete Rewrite

Breaking Changes

  • ⚠️ New SDK architecture - migration required
  • ⚠️ Updated initialization API
  • ⚠️ Changed ad loading methods
  • ⚠️ New listener/delegate patterns

New Features

  • 🎯 Brand new SDK architecture for better performance
  • 🔌 Mediation support for AdMob and AppLovin MAX
  • 🎨 Redesigned native ad API
  • 📊 Enhanced analytics and reporting
  • 🔒 Improved privacy compliance (GDPR, CCPA, COPPA)

Supported Ad Formats

  • Banner Ads (320x50, 300x250, 728x90)
  • Interstitial Ads
  • Rewarded Video Ads
  • Native Ads

Migration Guide from v1.x

Initialization:

swift
// Old (v1.x)
OperaAdsSDK.initialize(appId: "xxx")

// New (v2.0+)
let config = OpAdxSdkInitConfig.create(
    applicationId: "pub{}/ep{}/app{}",
    iOSAppId: "123456"
)
OpAdxSDK.initialize(withConfig: config)

Banner Ads:

swift
// Old (v1.x)
let banner = OperaBannerView(frame: frame)
banner.load(placementId: "xxx")

// New (v2.0+)
let banner = OpAdxBannerAdView()
banner.setPlacementId("sxxx")
banner.setAdSize(.BANNER_MREC)
banner.loadAd(listener: listener)

Interstitial Ads:

swift
// Old (v1.x)
OperaInterstitial.load(placementId: "xxx") { ad in
    ad.show()
}

// New (v2.0+)
let ad = OpAdxInterstitialAd(placementId: "sxxx", auctionType: .regular)
ad.load(placementId: "sxxx", listener: loadListener)
// Later...
ad.show(on: self, listener: interactionListener)

Deprecation Notice

Deprecated APIs

v2.0.0 - Removed v1.x APIs:

  • OperaAdsSDK → Use OpAdxSDK
  • OperaBannerView → Use OpAdxBannerAdView
  • OperaInterstitial → Use OpAdxInterstitialAd
  • OperaRewardedVideo → Use OpAdxRewardedAd
  • OperaNativeAd → Use OpAdxNativeAd

Minimum Requirements

SDK VersioniOS VersionXcodeSwift
2.9.013.0+14.0+5.0+
2.8.313.0+14.0+5.0+
2.8.013.0+14.0+5.0+
2.7.013.0+14.0+5.0+
2.6.013.0+14.0+5.0+
2.5.013.0+14.0+5.0+
2.4.013.0+14.0+5.0+
2.3.013.0+14.0+5.0+
2.2.013.0+13.0+5.0+
2.1.013.0+13.0+5.0+
2.0.013.0+13.0+5.0+

Upgrade Guide

From v2.8.x to v2.9.x

No breaking changes. Update your Podfile:

ruby
pod 'OpAdxSdk', '~> 2.9.0'

Then run:

bash
pod update OpAdxSdk

From v2.7.x to v2.8.x

No breaking changes. Update your Podfile:

ruby
pod 'OpAdxSdk', '~> 2.8.3'

Then run:

bash
pod update OpAdxSdk

From v2.6.x to v2.7.x

Update initialization to use callbacks (recommended but not required):

swift
// Old (still works)
OpAdxSdkCore.shared.initialize(initConfig: config)

// New (recommended)
OpAdxSDK.initialize(
    withConfig: config,
    onSuccess: {
        print("SDK initialized")
    },
    onError: { error in
        print("Init failed: \(error)")
    }
)

From v2.3.x to v2.4.x

Update SSV configuration if using rewarded ads:

swift
// New SSV API in v2.4.0+
let ssvOptions = RewardSsvOptions.Builder()
    .userId("user_12345")
    .customData("level=5")
    .build()

rewardedAd.setRewardSsvOptions(ssvOptions)

From v1.x to v2.x

Complete migration required. See v2.0.0 migration guide above.


Known Issues

Version 2.9.0

  • No known issues

Version 2.8.3

  • Banner ads may occasionally show blank on iOS 13.0-13.2 devices (fixed in 2.9.0)
  • Native ad media view may flicker during rotation on iPadOS (investigating)

Version 2.8.0

  • App Open ads may delay app launch by 200-300ms on first cold start (optimization in progress)

Workarounds

  • For iOS 13.0-13.2 banner issues: Use setAdSize(.BANNER) instead of .BANNER_MREC
  • For App Open delay: Preload App Open ads after SDK initialization completes

Getting Support

Documentation

Resources

  • Publisher Portal: https://publisher.opera.com
  • Technical Support: Contact Opera Ads Support
  • Bug Reports: GitHub Issues
  • Demo Apps: /OpAdxSdkDemo_Swift/ and /OpAdxSdkDemo_OC/

Last Updated: 2026-03-24